実際に質問する前に、明確にするために、はい、ディスクキャッシュについて知っています。いいえ、私の場合はそうではありません:)申し訳ありませんが、この前文は:)
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
したがって、実際に使用できるのは42 Mbだけです!私の知る限り、-/+ buffers/cache実際にはディスクキャッシュはカウントされないため、実際には42 MBしかありません。私は間違っているのではないかと思ったので、ディスクキャッシングをオフにしようとしましたが、効果はありませんでした-画像は同じままでした。
そこで、だれが私のRAMをすべて使用しているかを調べることにしtop、そのために使用しました。しかし、どうやら、RAMを使用しているプロセスはないと報告されています。私の一番上のプロセスはMySQLだけですが、RAMの0.1%と400Mbのスワップを使用しています。他のサービスまたはアプリケーションを実行しようとするときの同じ画像-すべてスワップ状態になり、topMEMが使用されていないことを示しています(すべてのプロセスで最大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。