Prima di chiedere, per essere chiari: sì, conosco la cache del disco e no, non è il mio caso :) Scusate, per questo preambolo :)
Sto usando CentOS 5. Ogni applicazione nel sistema si sta scambiando pesantemente e il sistema è molto lento. Quando lo faccio free -m
, ecco cosa ho ottenuto:
total used free shared buffers cached
Mem: 3952 3929 22 0 1 18
-/+ buffers/cache: 3909 42
Swap: 16383 46 16337
Quindi, in realtà ho solo 42 Mb da usare! Per quanto ho capito, in -/+ buffers/cache
realtà non conta la cache del disco, quindi in effetti ho solo 42 Mb, giusto? Ho pensato che potrei sbagliarmi, quindi ho cercato di disattivare la memorizzazione nella cache del disco e non ha avuto alcun effetto: l'immagine è rimasta la stessa.
Quindi, ho deciso di scoprire chi sta usando tutta la mia RAM e l'ho usato top
per quello. Ma, a quanto pare, segnala che nessun processo utilizza la mia RAM. L'unico processo nella mia parte superiore è MySQL, ma utilizza lo 0,1% di RAM e 400 Mb di swap. Stessa immagine quando provo ad eseguire altri servizi o applicazioni - tutti vanno in swap, top
mostra che MEM non viene utilizzato (0,1% massimo per qualsiasi processo).
top - 15:09:00 up 2:09, 2 users, load average: 0.02, 0.16, 0.11
Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4046868k total, 4001368k used, 45500k free, 748k buffers
Swap: 16777208k total, 68840k used, 16708368k free, 16632k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND
3214 ntp 15 0 23412 5044 3916 S 0.0 0.1 0:00.00 17m ntpd
2319 root 5 -10 12648 4460 3184 S 0.0 0.1 0:00.00 8188 iscsid
2168 root RT 0 22120 3692 2848 S 0.0 0.1 0:00.00 17m multipathd
5113 mysql 18 0 474m 2356 856 S 0.0 0.1 0:00.11 472m mysqld
4106 root 34 19 251m 1944 1360 S 0.0 0.0 0:00.11 249m yum-updatesd
4109 root 15 0 90152 1904 1772 S 0.0 0.0 0:00.18 86m sshd
5175 root 15 0 90156 1896 1772 S 0.0 0.0 0:00.02 86m sshd
Il riavvio non aiuta e, a loro modo, è molto lento, cosa che normalmente non mi aspetto su questa macchina (4 core, 4 GB di RAM, RAID1).
Quindi, con quello - Sono abbastanza sicuro che questa non è una cache del disco, che sta usando la RAM, perché normalmente avrebbe dovuto essere ridotta e lasciare che altri processi usassero la RAM, piuttosto che passare allo scambio.
Quindi, alla fine, la domanda è: se qualcuno ha qualche idea su come scoprire quale processo sta effettivamente utilizzando la memoria così pesantemente?
irc.freenode.org
. Ho creato una chat room per una discussione estesa qui .
free -m
, ma è possibile interrogarne la dimensione su Linux con cat /proc/spl/kstat/zfs/arcstats | grep data_size
.