/sys/kernel/mm/lru_gen/enabledのさまざまな値はどういう意味ですか?

/sys/kernel/mm/lru_gen/enabledのさまざまな値はどういう意味ですか?

私のデスクトップで多世代のLRUが有効になっていることを確認したい/sys/kernel/mm/lru_gen/enabled。に設定されていましたが、0x0007この値をどのように活用するのかわからず、他のデバイスで値を確認してみましたが、そこでカーネルを直接設定して値を与えたので有効にしたことが確かです0x0001。これら2つの値はどういう意味ですか?多世代LRUを有効または無効にした場合の予想値は何ですか?このファイルに他の有効な値がありますか?

ベストアンサー1

カーネルの複数世代LRU文書値は次のように記述されます。

価値 要素
0x0001 多世代LRU用のメインスイッチです。
0x0002 MMUがこれを設定すると(x86など)、リーフページテーブルエントリのアクセスビットが一括消去されます。理論的には、この動作はロック競合(mmap_lock)を悪化させる可能性があります。これを無効にすると、複数世代のLRUはホットページを連続的にマッピングするワークロードに対してわずかなパフォーマンスの低下を招きますが、そうでないと、より少ない数のより大きなバッチでアクセスされたビットをクリアできます。
0x0004 MMUがこれを設定すると(x86など)、リーフ以外のページテーブルエントリのアクセスビットもクリアされます。この動作は、Intel および AMD 以外の x86 亜種では検証されていません。無効にすると、マルチ世代LRUのパフォーマンスの低下が無視される可能性があります。

値は一緒に OR で接続されるため、0x0007 はすべての機能をイネーブルにし、0x0001 はマルチ世代 LRU をイネーブルにしますが、一括アクセスビットをクリアしないことを意味します。

どんな組み合わせでも有効です。つまり0x0000 から 0x0007 の値です。予想される値はカーネル構成によって異なります。

おすすめ記事