より良いパフォーマンスを得るには、どのような合理的な交換値を設定する必要がありますか?

より良いパフォーマンスを得るには、どのような合理的な交換値を設定する必要がありますか?

Androidシステムの最適化プロセスでは、Swapiness値の設定が重要です。値のパスはです/proc/sys/vm/swappiness。一部のソースでは60に設定し、他のソースでは120に設定することをお勧めします。一部の情報源では最大値が100であると主張し、他の情報源では200と主張して混乱しています。

システムがサポートする最大値をどのように確認しますか?

Stack Overflowにあるリンク:

ベストアンサー1

5.8より前のカーネルバージョンでは最大値はswappiness100で、カーネルでは値は200に増えました。5.8

リンクからの回答をよく読んで(Googleで他の同様の質問や記事をたくさん見つけることができます)、次のようになります。まったく最高の価値を提供します。これは、オペレーティングシステムを実行しているシステムの正確なワークロードと特定の動作によって異なり、いくつかのベンチマークが必要です。

通常、デフォルト値(60)は最もバランスの取れています。

リンクの回答はswappinessシステムにどのように影響するかを説明しますが、他の人が回答に追加した計算や数字を使用せずに簡単にすることで、より正確で読みにくいようにします。

非常に単純化された方法で(より直感的にするために)ポイントを特定するには、RAMに2つの主要な種類のページが含まれていると言えます。

  1. 匿名ページは、プロセスで使用される「一般」メモリです。変数などの動的データを処理するために使用されるメモリです。
  2. ファイルバックアップメモリまたはページキャッシュ(私は違いに対処しません)。これは、ディスクからメモリにファイルをキャッシュするために使用されます。通常、ディスクから直接ファイルを読み取るコストはかなり高いので、通常、カーネルはディスクから読み取ったデータをページキャッシュに格納するため、次にファイルからデータを読み込むときにRAMから直接読み取ることができます。ディスクに再度アクセスする必要はありません。これにより、ディスクからファイルを読み込む速度が大幅に向上します。

メモリ圧力が高く、カーネルがRAMの一部のスペースを確保する必要がある場合は、困難な決定に直面してください。

  1. ファイルがサポートするメモリを消去する必要がありますか?これにより、新しいページのメモリが非常に迅速に消去されますが、ファイルに再度アクセスするとディスクから再度読み取られる必要があるため、高価です。
  2. 一部の匿名ページを交換する必要がありますか?おそらく長い間使用されておらず、長い間プロセスに必要とされていない一部の非アクティブページがある可能性があるため、スワップ領域に書き込み、追加の入力を節約するためにファイルキャッシュをメモリに保持することをお勧めします。 /出力?

これはswappinessカーネルが何を好むべきかを示唆しています。 「0」の値は、可能であれば匿名ページ交換を避け、より多くのスペースを確保するために常にファイルをメモリ/キャッシュに消去するようにカーネルに指示します。増やすほど、匿名メモリが交換され、ファイルサポートメモリが優先される可能性が高くなります。カーネル> 5.8では、値200は常に匿名ページを優先的に置き換え、ファイルサポートメモリをRAMに保持する必要があることを意味します。

そのため、推奨値はさまざまな要因によって異なります、ワークロードの種類、入出力速度、切り替え速度などがあります。

  • データベースを実行しているサーバーの場合、通常、交換性をゼロに下げることをお勧めします。高性能を確保するには、データベースがRAMにすべてのデータを保持できることが重要であるためです。
  • 多くのI / Oを実行し、ディスクが比較的遅く、swappinessプロセスに使用されない可能性がある非アクティブメモリページが多い場合は、I / Oを最小限に抑えるために増やすことをお勧めします。
    • 使用中の機械にzswap、スワップがディスクではなくRAMの専用セクションに圧縮されて保存されている場合、スワップコストははるかに低く、RAMからファイルデータを消去するよりもスワップを優先できます。

しかし、結論は次のとおりです。一般的な推奨事項はありません。標準ケースとワークロードの場合、デフォルト値は問題ありません。スワッピングや I/O が多すぎると、この値を慎重に調整する必要があるかもしれませんが、テストする必要があります。特定のシステムとワークロードに最適な値に達するまで値を変更し、その値がシステムのパフォーマンスにどのような影響を与えるかを確認します。

おすすめ記事