실제로 묻기 전에 명확하게 말하면 : 예, 디스크 캐시에 대해 알고 있습니다. 아니요, 그것은 내 경우가 아닙니다 :) 죄송합니다,이 프리앰블 :)
CentOS 5를 사용하고 있습니다. 시스템의 모든 응용 프로그램이 많이 바뀌고 있으며 시스템이 매우 느립니다. 내가 할 때 free -m
, 여기 내가 가진 것이 있습니다 :
total used free shared buffers cached
Mem: 3952 3929 22 0 1 18
-/+ buffers/cache: 3909 42
Swap: 16383 46 16337
따라서 실제로 42Mb 만 사용할 수 있습니다! 내가 이해하는 한 -/+ buffers/cache
실제로 디스크 캐시를 계산하지 않으므로 실제로 42MB 만 있습니다. 나는 틀렸다고 생각했기 때문에 디스크 캐싱을 끄려고 시도했지만 아무런 효과가 없었습니다. 사진은 동일하게 유지되었습니다.
그래서, 누가 내 RAM을 모두 사용하고 있는지 알아보기로 결정했습니다 top
. 그러나 분명히 내 RAM을 사용하는 프로세스가 없다고보고합니다. 내 유일한 프로세스는 MySQL이지만 0.1 %의 RAM과 400Mb의 스왑을 사용하고 있습니다. 다른 서비스 또는 응용 프로그램을 실행하려고 할 때의 동일한 그림-모두 스왑으로 이동하여 top
MEM이 사용되지 않음을 나타냅니다 (모든 프로세스에서 최대 0.1 %).
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
다시 시작해도 도움이되지 않으며 매우 느리 므로이 기계 (4 코어, 4Gb RAM, RAID1)에서는 일반적으로 기대하지 않습니다.
그래서, 나는 이것이 RAM을 사용하는 디스크 캐시가 아니라고 확신합니다. 왜냐하면 일반적으로 RAM을 줄이고 다른 프로세스가 RAM을 사용하도록하고 대신 스왑으로 이동해야하기 때문입니다.
마지막으로, 누군가가 실제로 어떤 프로세스가 메모리를 그렇게 많이 사용하는지 알아내는 방법에 대한 아이디어가 있다면?
free -m
Linux에서 크기를 쿼리 할 수 있습니다 cat /proc/spl/kstat/zfs/arcstats | grep data_size
.