最近、ノートパソコンの動作が少し遅くなり、ディスク ライトが頻繁に点滅していることに何度か気づきました。これは SSD と 12GB RAM を搭載した i7 なので、ブラウジングするだけならそれほど遅くなるとは思いません。
前回は、それが気になったので、システム モニター (KSysGuard) をちょっと覗いてみました。すると、2 GB のスワップ パーティションが 100% 使用されているのに、物理メモリは 11.6 のうち 4.8 GB しか使用されていませんでした (グラフの到達点)。そこで、スワップをオフにして再びオンにして ( swapoff -a
、swapon -a
)、スワップを空にしようと考えましたが、RAM 不足のため swapoff は失敗しました。
KSysGuard によると、約 7GB の空き容量があるはずなので、これは私を困惑させました。そこで、top が何と言っているか見てみようと思いました。top は、約 150MB の空き RAM と 2048/2048MB のスワップ使用を示しました。少し遅くなるのも当然です。
KSysGuard がメモリ使用量をそれほど過小報告するのはなぜですか? また、嘘をつくのを防ぐにはどうすればよいですか?
答え1
コメントに従って、次のようにしてスワップ ファイルを 2GiB から 6GiB に増やしました。
sudo swapoff -a
sudo rm /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=6144
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
上記のコマンドはそれぞれ、ページを物理メモリに戻すことでスワップをオフにし、スワップ ファイルを削除し、swapfile という新しい 6GiB ファイルを作成し、権限を root のみに設定し、ファイルをスワップ用に構成し、最後に新しいファイルでスワップをオンに戻します。
次に、vm.swappiness=70
最後から 2 番目のセクションの最後に、/etc/sysctl.conf
ページ ファイルへのスワップを少し積極的に行うように (物理メモリをいくらか節約) を追加しました。
しかし、KSysGuard が使用中の RAM の量について嘘をついているように見える理由を実際に答えると、デフォルトの「メモリとスワップ履歴」チャートには実際には「アプリケーション メモリ」センサーからのデータしか表示されないからです。この問題を解決するために、KSysGuard にメモリというタブを追加し、物理メモリ用とスワップ用の 2 つのグラフを含めました。物理メモリ グラフには、使用メモリ、空きメモリ、バッファ メモリ、キャッシュ メモリのセンサーが設定されています。実際に必要なのは使用メモリとキャッシュ メモリだけですが、実際に使用されたメモリの量を示すのは使用メモリ メトリックです。
答え2
コメントから...
注意: 未使用の RAM はファイルおよびディスク バッファーに使用されることに注意してください。
実際の問題は、2G のスワップ領域が小さすぎて、ディスクがスラッシング状態になっていることです。
スワップを少なくとも 6G に増やし、vm.swappiness をデフォルトの 60 から 80 に変更します。
vm.swappiness のさまざまな設定をテストするには、 を使用しますsudo sysctl vm.swappiness=80
。vm.swappiness の値がデフォルトの 60 より大きい場合、スワップがより多く使用されます。60 未満の値の場合、RAM がより多く使用されます。
永続的にするには、最後に編集し/etc/sysctl.conf
て追加し、再起動します。vm.swappiness=80