Linuxのスワップがなぜこんなに遅いのか

Linuxのスワップがなぜこんなに遅いのか

私はソフトウェア開発者ですが、ときどき、自分のプログラムの 1 つで使用可能な RAM をすべて誤って使い果たしてしまうことがあります。OS は、その時点で使用している可能性のある他のすべてのもの (Web ブラウザー、開発 IDE、オーディオ プレーヤーなど) をスワップアウトしてくれます。誤動作しているプログラムを終了できた後、マシンで実行されている他のソフトウェアは数分間使用できなくなり、実際にソフトウェアを使用しない限り (クリックするたびに長い秒数を待たない限り)、自動的にスワップバックすることはありません。sudo swapoff -aすべてのメモリ ページを RAM に強制的に戻すこともできますが、驚くほど時間がかかります。コマンドを使用してスワップの使用状況を監視できますfree。スワップは約 1 ~ 2 MB/秒で空になります。をfree数秒ごとに実行しても、違いは 1 桁しか表示されず、プロセス全体に数分かかることがあります。

私のシステムはかなり新しいのですが、スワップ パーティションを保存している HDD をテストしたところcpipe、7 GB のファイルの読み取り速度は平均 150 ~ 160 MB/秒でした。なぜ、同様の速度でスワップが RAM に戻されないのでしょうか?

もっと早くするために何かできることはありますか?

$ uname -r
4.15.0-29-generic

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.5 LTS
Release:        16.04
Codename:       xenial

関連情報