3 votos

Fuente de detección de uso de memoria en una caja de Linux

Tengo un juguete de la caja de Linux con 256 mb de RAM corriendo Ubuntu 10.04.1 LTS. Aquí está la salida de free -m:

             total       used       free     shared    buffers     cached
Mem:           245        122        122          0         19         64
-/+ buffers/cache:         38        206
Swap:          511          0        511

A menos que yo estoy leyendo esta mal, 122mb está siendo utilizado y sólo 84mb de que es la caché de disco. Aquí están todos los procesos que me estoy quedando ordenados por el uso de la memoria (ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r):

%MEM %CPU   RSS    VSZ COMMAND
 5.0  0.0 12648 633140 node /home/node/main/sites.js
 1.5  0.0  3884 251736 /usr/sbin/console-kit-daemon --no-daemon
 1.3  0.0  3328  77108 sshd: apeace [priv]
 0.9  0.0  2344  19624 -bash
 0.7  0.0  1776  23620 /sbin/init
 0.6  0.0  1624  77108 sshd: apeace@pts/0
 0.6  0.0  1544   9940 redis-server /etc/redis/redis.conf
 0.6  0.0  1524  25848 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 103:105
 0.5  0.0  1324 119880 rsyslogd -c4
 0.4  0.0  1084  49308 /usr/sbin/sshd
 0.4  0.0  1028  44376 /usr/sbin/exim4 -bd -q30m
 0.3  0.0   904   6876 ps -eo pmem,pcpu,rss,vsize,args
 0.3  0.0   888  21124 cron
 0.3  0.0   868  23472 dbus-daemon --system --fork
 0.2  0.0   732  19624 -bash
 0.2  0.0   628   6128 /sbin/getty -8 38400 tty1
 0.2  0.0   628  16952 upstart-udev-bridge --daemon
 0.2  0.0   564  16800 udevd --daemon
 0.2  0.0   552  16796 udevd --daemon
 0.2  0.0   548  16796 udevd --daemon
 0.0  0.0     0      0 [xenwatch]
 0.0  0.0     0      0 [xenbus]
 0.0  0.0     0      0 [sync_supers]
 0.0  0.0     0      0 [netns]
 0.0  0.0     0      0 [migration/3]
 0.0  0.0     0      0 [migration/2]
 0.0  0.0     0      0 [migration/1]
 0.0  0.0     0      0 [migration/0]
 0.0  0.0     0      0 [kthreadd]
 0.0  0.0     0      0 [kswapd0]
 0.0  0.0     0      0 [kstriped]
 0.0  0.0     0      0 [ksoftirqd/3]
 0.0  0.0     0      0 [ksoftirqd/2]
 0.0  0.0     0      0 [ksoftirqd/1]
 0.0  0.0     0      0 [ksoftirqd/0]
 0.0  0.0     0      0 [ksnapd]
 0.0  0.0     0      0 [kseriod]
 0.0  0.0     0      0 [kjournald]
 0.0  0.0     0      0 [khvcd]
 0.0  0.0     0      0 [khelper]
 0.0  0.0     0      0 [kblockd/3]
 0.0  0.0     0      0 [kblockd/2]
 0.0  0.0     0      0 [kblockd/1]
 0.0  0.0     0      0 [kblockd/0]
 0.0  0.0     0      0 [flush-202:1]
 0.0  0.0     0      0 [events/3]
 0.0  0.0     0      0 [events/2]
 0.0  0.0     0      0 [events/1]
 0.0  0.0     0      0 [events/0]
 0.0  0.0     0      0 [crypto/3]
 0.0  0.0     0      0 [crypto/2]
 0.0  0.0     0      0 [crypto/1]
 0.0  0.0     0      0 [crypto/0]
 0.0  0.0     0      0 [cpuset]
 0.0  0.0     0      0 [bdi-default]
 0.0  0.0     0      0 [async/mgr]
 0.0  0.0     0      0 [aio/3]
 0.0  0.0     0      0 [aio/2]
 0.0  0.0     0      0 [aio/1]
 0.0  0.0     0      0 [aio/0]

Ahora, yo sé que ps no es la mejor para el proceso de visualización de uso de memoria, pero eso es porque tiende a informe más memoria de la que realmente se utiliza...lo que significa que no importa cómo se mire todo mi combinación de procesos no debería estar usando cerca de 122mb, incluso si tienes en cuenta para la caché de disco.

Lo que es más, el uso de la memoria está creciendo todo el tiempo. He tenido que reiniciar mi servidor una vez a la semana, porque una vez mi 256mb llena comienza intercambio, que no sólo para el caché de disco. No debería haber alguna manera para que me vea el culpable?!

Soy nuevo en el server admin, así que por favor si hay algo que es obvio estoy con vistas a punto para mí.

Para la buena medida, el resultado de cat /proc/meminfo:

MemTotal:         251140 kB
MemFree:          124604 kB
Buffers:           20536 kB
Cached:            66136 kB
SwapCached:            0 kB
Active:            65004 kB
Inactive:          37576 kB
Active(anon):      15932 kB
Inactive(anon):      164 kB
Active(file):      49072 kB
Inactive(file):    37412 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:        524284 kB
SwapFree:         524284 kB
Dirty:                 8 kB
Writeback:             0 kB
AnonPages:         15916 kB
Mapped:            10668 kB
Shmem:               188 kB
Slab:              18604 kB
SReclaimable:      10088 kB
SUnreclaim:         8516 kB
KernelStack:         536 kB
PageTables:         1444 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      649852 kB
Committed_AS:      64224 kB
VmallocTotal:   34359738367 kB
VmallocUsed:         752 kB
VmallocChunk:   34359737600 kB
DirectMap4k:      262144 kB
DirectMap2M:           0 kB

EDIT: me había malinterpretado el significado de free -m en el primero. Pero aún así: lo importante es que mi sistema operativo, finalmente, comienza a utilizar la memoria de intercambio o swap si no quiero reiniciar mi servidor, que el caché de disco no haría. Entonces, ¿dónde puedo mirar para ver lo que está utilizando todo esto de memoria?

18voto

Mark Richman Puntos 159

Como todos los demás explica, nada está usando mucha RAM ahora mismo. Que ejecute ps comando cuando realmente estás experimentando problemas.

Probablemente Node.js, Redis o algún otro servicio no es configurado muy bien y utiliza más memoria RAM en el tiempo como usted consigue más tráfico o de repente utiliza demasiada RAM al llegar Slashdotted. Pero es imposible decir lo que exactamente va mal más adelante cuando nada va mal ahora.

13voto

superNobody Puntos 56

Es bueno ver menos espacio para la memoria, como parte de ellos son de uso para la caché del búfer. El intercambio tiene todo el espacio libre. Así que espero que todavía no tiene impacto de la escasez de memoria.

De salida buffers/cache, 206M es libre de usar para aplicaciones.

Usted puede también conseguir la aproximación de

cat/proc / [id de proceso] / mapas

(o)

pmap [id de proceso]

pmap - x [id de proceso]

0voto

ArjunShankar Puntos 200

El verdadero problema es la necesidad de reiniciar el sistema, debido a la gran archivo de intercambio de la derecha?

Que yo sepa, cuando se ejecute el kernel de memoria, tiene dos opciones:

  1. Intercambiar
  2. Comer algunos de los 'caché' (que por supuesto ha sido el acaparamiento en la esperanza de que los datos almacenados en caché se pidió de nuevo)

Han tratado de influir en esta elección, jugando con el swappiness?

La configuración es algo baja (20?) podría ayudar a mejorar las cosas. El valor predeterminado es 60 (que tiende hacia una preferencia para intercambiar).

A continuación, de nuevo, eres un admin, y soy un usuario normal y tal vez usted ya ha intentado.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: