在实际询问之前,请先明确一点:是的,我知道磁盘缓存,不,这不是我的情况:)对不起,此序言:)
我正在使用CentOS5。系统中的每个应用程序都在大量交换,并且系统非常慢。当我这样做时free -m
,这就是我得到的:
total used free shared buffers cached
Mem: 3952 3929 22 0 1 18
-/+ buffers/cache: 3909 42
Swap: 16383 46 16337
因此,我实际上只有42 Mb可以使用!据我了解,-/+ buffers/cache
实际上不算磁盘缓存,所以我确实只有42 Mb,对吗?我以为我可能是错的,所以我尝试关闭磁盘缓存,但没有效果-图像保持不变。
因此,我决定找出谁在使用我的所有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,然后再进行交换。
所以,最后,问题是-是否有人对如何找出使用内存的进程有何想法?
free -m
,但是可以在Linux上使用来查询其大小cat /proc/spl/kstat/zfs/arcstats | grep data_size
。