Tengo un servidor Ubuntu 8.04 que ejecuta una base de datos y un montón de servidores de aplicaciones Java. Su configuración y uso de memoria es:
total used free shared buffers cached
Mem: 16456176 15930028 526148 0 81372 9674196
-/+ buffers/cache: 6174460 10281716
Swap: 1951888 366100 1585788
Noté que el intercambio aumenta todas las tardes y se libera en algún momento de la noche. La demanda no es la misma en todos los días y comienza en diferentes momentos. Entonces es bastante aleatorio, excepto por el límite difuso de "tarde-noche".
La carga en esta máquina varía durante el día. Es muy bajo entre la medianoche y las 6-7 de la mañana, mucho más alto (pero estable) hasta las 6-8 de la tarde, y luego cae gradualmente.
Ahora tengo las siguientes preguntas:
- ¿Cómo puedo ver qué procesos están usando el intercambio?
- ¿Por qué prefiere cambiar en lugar de tomar algo de memoria del caché?
NSWAP
columna (Ubuntu 16.04: /).En StackOverflow, ya hay una excelente respuesta a su primera pregunta ("¿Qué proceso está usando realmente el intercambio?").
https://stackoverflow.com/a/7180078/1442301
En pocas palabras, a las herramientas les gusta
top
ohtop
no proporcionan información precisa sobre el uso del intercambio. Debe sumergirse en la/proc
carpeta (en el pseudo archivo/proc/$PID/smaps
) para obtener información más precisa.La publicación mencionada anteriormente contiene un breve script de shell para que esta información se repita de una manera agradable.
fuente
Con
htop v1.01
, presioné "S" para añadirNSWAP
la columna en lugar de "F2" (como se sugiere Gilles), a continuación,Columns
>Available Columns
> yF5
para añadirlo.fuente
Sin sondear y analizar los resultados de herramientas como
vmstat
,free
ytop
, el mejor lugar para buscar podría ser crontabs del usuario raíz u otros usuarios en el sistema. Si la carga general en el sistema aumenta de manera confiable en un momento determinado, es probable que haya un proceso en cron que cree la necesidad de recursos. De lo contrario, siempre puede crear una utilidad de registro de ghetto desechable con lascript
utilidad, que solo registra todo lo que va al STDOUT.Entonces, si necesito hacer un script desechable para capturar la salida para una inspección posterior, en una terminal escribiría:
y entonces
y en otra terminal
y entonces
y luego a la mañana siguiente, elimine ambas
script
invocaciones y haga coincidir la salida detop
yfree
una vez más, este es un enfoque de gueto, pero parece que solo necesitas un único
también te gustaría leer la guía de intercambio de ubuntu
fuente