プロセスごとのキャッシュ使用量を知りたいです。それを行う方法はありますか?私は現在Ubuntuを使用しています。
問題は、私のコンピュータがキャッシュ全体をいっぱいにし、RAMが必要なときにキャッシュを解放する代わりに交換を開始することです。これは理想的な状況ではありません。どのプロセスがこれらすべてを「要求」しているかを知ることは本当に役に立ちます。 htop
.
ご覧のとおり、16GBのキャッシュがあります(によると、その一部はバフですhtop
)。約45分後ですuptime
。何もスワップされませんが、時には5〜7GBのデータだけがスワップされます(仮想マシンなどを起動するとき)。
ユーザー名@ホスト名:[~]$ free -h 利用可能な合計無料共有バッファ/キャッシュ数 メモリ: 23Gi 6,4Gi 354Mi 4,6Gi 16Gi 11Gi 交換:23Gi 3,0Mi 23Gi
それにもかかわらず、この問題がなくても誰がキャッシュしているのか、どのくらいキャッシュしているのかを正確に知ることは良い情報です。
ベストアンサー1
プロセス固有のキャッシュ使用量は追跡されません。ページはキャッシュに存在し、システム内のどのプロセスでも使用できます。
大量のファイルをスキャンするプロセス(ウイルス対策スキャナやバックアップツールなど)には、次のような症状がよくあります。スワップが可能な場合は、大容量ファイルを読み続けると、スワップ用の別のページが削除されます。システムのパフォーマンスを向上させるには、次の点を考慮してください。
nocache
キャッシュに対するウイルス対策スキャナの影響を減らすなどのツールを使用してください(参照:単一プロセスに対してブロックキャッシュをオフにする方法は?)- システムに設定されているスワップ量を減らすには、23GiBよりはるかに少ない量が必要になることがあります(参照)Linuxで仮想マシンにスワップスペースが必要なのはなぜですか?)
大規模スワップパーティション(例えば休止状態の場合、目標は取り付けられたメモリの5分の5ですが、これは厳しい制限ではありません。vm.swappiness
したがって、カーネルは、ページキャッシュページを削除するよりもスワップが高価であると考え、スワップ使用量を増やすよりもキャッシュ使用量を減らす傾向がある。