非常に大きなプロジェクトを構築しようとすると、十分なメモリ(実際には14 GB)があるにもかかわらず、私のコンピュータがスワップ(数GB)を起動するという問題があります。実行すると、free
ディスクキャッシュではないとマークされます。
$ free -m
total used free shared buffers cached
Mem: 12900 6350 6549 0 7 77
-/+ buffers/cache: 6266 6633
Swap: 9211 233 8978
したがって、実際には6.3GBのメモリが使用されますが、上部(%メモリ使用量でソート)を見ると、メモリがまったく使用されていないことがわかります。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
38669 blong 20 0 1282m 378m 42m S 2 2.9 0:50.79 firefox
1327 root 20 0 365m 126m 4056 S 4 1.0 40:23.94 Xorg
2540 blong 20 0 1578m 67m 10m S 2 0.5 21:33.35 gnome-shell
13943 blong 20 0 579m 12m 5604 S 2 0.1 1:07.01 gnome-terminal
30093 blong 20 0 540m 8664 5572 S 0 0.1 0:03.96 icemon
2558 blong 20 0 362m 5964 1808 S 0 0.0 5:17.44 vmtoolsd
2526 blong 20 0 672m 5056 2000 S 0 0.0 0:26.81 gnome-settings-
2546 blong 20 0 354m 3484 2244 S 0 0.0 5:08.96 pulseaudio
私は何を逃したことがありませんか?
VMを再起動すると、この問題は解決しましたが、実際に何が起こっているのかを把握したいと思います。
答え1
スワップは悪いことではありません。この場合、おそらく良いことになります。vm.swappiness
非アクティブメモリページを交換するカーネルの傾向を制御するカーネルパラメータ()があります。これは、ファイルシステムのキャッシュなどの操作でRAMをより使いやすくするためです。
通常、何が起こっているのかわからないままカーネルパラメータを調整することはお勧めできませvm.swappiness = 0
んが。/etc/sysctl.conf
sysctl -p
何があなたの記憶を使用しているかに対する答えは簡単ではありません。アプリケーション専用のメモリ、キャッシュに加えて、システムメモリを使用することがたくさんあります。共有メモリ、マップされたメモリ、カーネルボードなどのものもあります。
これを見ると、システムのメモリ使用量に関する多くの情報が得られます/proc/meminfo
。しかし、それは薄暗い心のためではありません。 LinuxのVMシステムは非常に複雑です。