web-dev-qa-db-ja.com

スワップはいつトリガーされますか、またはswap_tendencyを計算する方法は?

実稼働サービスにRedisを使用し、パフォーマンスに悪影響を与えるスワッピングを回避しようとしています。

私はスワップが依存しているswap_tendencyによってトリガーされることを学びました

swap_tendency = maps_ratio/2 + swappiness +苦痛

モニタースクリプトの/proc/meminfoからmapped_ratio/distressを取得するにはどうすればよいですか?

または、システムがページを交換することを通知できるパラメータはありますか?

4
Zhuo.M

maps_ratio

mapped_ratioは次のように計算できます:

mapped ratio = (nr mapped * 100) / total memory;

出典: https://www.cs.columbia.edu/~smb/classes/s06-4118/l19.pdf

nr_mapped

nr_mapped/proc/vmstatから読み取ることができます。

$ grep nr_mapped /proc/vmstat
nr_mapped 47640

苦痛

この記事によると、タイトルは次のとおりです。 Linuxメモリ-実装ノート

「これは、VMがページを再利用するのにどれだけの難しさがあるかを測定したものです。VMがメモリを再利用しようとするたびに、ページを再利用するために、各ゾーンの非アクティブなリスト。リストを通過するたびに、そのゾーンの非アクティブなクリーン+空きページの数が最低水準点を超えていない場合、nは1つ減ります。 100として測定>> n” 5

多くのドキュメントを調査すると、「苦痛」はカーネルカウンターであるかのように聞こえますが、そうではありません。むしろ、メモリの各ゾーンがスキャンされているときに使用される値であり、メモリのページフレームがカーネルによってスキャンされて再利用されるにつれて徐々に増加します。これについての議論はこのQ&Aの範囲を超えていますが、「Linuxカーネルについて」という本のセクションに興味がある場合は、 第17章:ページフレームの再利用 。 「distress」の値は、ゾーンがスキャンされるときの値「prev_priority」から取得されます。

参考文献

3
slm