Linux:より大きなチャンクに変更

Linux:より大きなチャンクに変更

私のスワップディスクは100MB / sの速度で書き込むことができます。システムを交換すると、8〜20MB / sのみ記録されます。

iostatデバイスは100%アクティブであるため、Linuxはドライブ内の小さな塊を見つけたり交換したりするように感じます。

スワッピングが同時に存在する場合はこれを説明できますが、スワッピングもなく、他のディスクI / Oもありません。

たとえば、最も古い10MBのページを識別して1つのブロックに置き換えるようにLinuxに指示できますか?

スワップのページフレームサイズは4Kではなく10Mと言うのと少し似ています。

私のシステムでは、次のアルゴリズムが理想的だと思います。

dirty_pct = dirty pages / all RAM
if dirty_pct > 50%:
   # Half of memory is dirty, slowly start swapping out
   if busy_time(swapdevice) < dirty_pct:
       # if RAM is 60% dirty, start swapping if disk is less than 60% busy
       # if RAM is 90% dirty, start swapping if disk is less than 90% busy
       identify the next 10 MB that would be swapped if dirty_pct had been 100%
       save the 10 MB to swap as a single chunk
       mark the pages as clean

これにより、システムが50%ダーティに達すると交換が始まり、アイドルドライブで実行されるため、パフォーマンスに影響を与えません。おそらく、交換されたデータはまったく使用されないかもしれませんし、アイドルIOが無駄になるかもしれません。

$ uname -a
Linux r815 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:32:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

ベストアンサー1

いいえ。それは不可能です。

Linuxカーネルは、さまざまなアルゴリズムを使用して、RAM、スワップスペース、最後に使用されたスワップ位置、ディスクキャッシュ応答、スワップ可能性などのスワップメモリ​​割り当ての使用時期と方法を決定します。

システムの停止やプロセスの終了を防ぐためにメモリ管理が必要なため、システムは「10MB > ページの収集」を待つことができません。

ただし、システムがスワップを開始するとパフォーマンスが非常に低下し、RAMとスワップ管理に関連するいくつかのバグが長年にわたって報告されています。

zswapを使用すると、ディスク使用量が向上すると言うことができます。ここで最も大きな問題は、スワップに達したときにページが指数関数的に2倍になることです(これはメモリページの接続によるものです)。

zswapはこれらの乗算を圧縮してディスクの読み取り/書き込みを減らし、CPU使用率に大きな影響を与えます。

zswapはカーネル管理型で、システム要件に合わせて調整できる便利な低レベル構成がたくさんあります。

https://www.maketecheasier.com/use-zswap-improve-old-linux-performance/

おすすめ記事