/proc/sys/vm/extfrag_thresholdを1000に設定するのが安全かどうか疑問に思います。この設定を変更するとどのような結果が発生しますか?デフォルトは 500 です。
1000に設定すると、デフォルトでメモリ圧縮は無効になりますか?これは、時間が経ってもメモリの最適化が実行されないという意味ですか?
メモリ圧縮によってシステムがメモリ不足で中断する状況が発生しましたが、extfrag_thresを1000に設定すると中断が停止し、パフォーマンスが向上しました。 990に設定しても役に立ちません。1000に設定すると役に立ちます。
答え1
はい、これはメモリ圧縮を完全に無効にし、時間の経過とともに断片化が増加する可能性があると思います。つまり、機能が無効になっていても、リサイクルを通じてRAMを解放できます。つまり、ディスクキャッシュを空にしてスワップ(スワップが有効になっている場合)して実行可能ファイルのマッピングを解除します(次にプログラムの特定の部分を実行するときにディスクの実行可能ファイルから再ロードする必要があります)。
直感的ではなく(少なくとも私にとっては)、この値はメモリがどのくらい断片化されているかを実際には示していません。領域の空きRAMが十分に低いとゼロに近づく傾向があり、圧縮が失敗する可能性が高くなります。 extfrag_thresholdという用語は、-1.000または-1000のこのサイズのメモリ割り当てです。圧縮を無効にするとパフォーマンスが低下する可能性があります(たとえば、ディスクを使用しようとするとディスクキャッシュが繰り返し削除されます)、メモリ全体が実際に不足していない限り、メモリ不足の状況は発生しないと思います。したがって、特定のワークロードの実行をより良くする場合は、これを選択してください。