システムに空き容量があるにもかかわらず、Linuxが大容量ファイルをどこかにコピーするときにスワップ領域に書き込むのはなぜですか?

システムに空き容量があるにもかかわらず、Linuxが大容量ファイルをどこかにコピーするときにスワップ領域に書き込むのはなぜですか?

一部のストレージデバイス(システムのHDD、SSD、またはサムドライブ)にファイルをコピーすると、少量のデータ(20〜30 MB)がスワップスペースに書き込まれ、数が増えることがわかりました。はい、システムにもRAMを使用できます。

スワップスペースに書き込むと、デバイスの速度が非常に遅くなる可能性があります。暴行は当然の事件でした。

コピーする前にスワップをオフにすると、ファイルがうまくコピーされます。

スクリーンショットは次のとおりです。

ここに画像の説明を入力してください。

大容量ファイルを/dev/sda2にコピーしています。利用可能なRAMがありますが、一部のデータは常にスワップ用に書き込まれます。この動作は、私が所有して使用する時間があるすべてのデバイスで同じです。

以下を使って交換性を変更してみました。

sysctl vm.swappiness=n # n for a value from 0..100

swappinessを0に設定し、swappinessを100に設定します。行動は変わりません。すべてのシステムモニターに十分な空きRAMがあることが示されます。それでもスワップ領域にデータを書き込みます。

ベストアンサー1

通常、動作はアプリケーションによって異なり、コピーアプリケーションがコピーしているファイルを読み取る方法についてカーネルに正しい指示を与えるかどうかによって異なります。

お客様の場合は、ファイルのサイズがメモリ全体より少し大きいため、GUI のファイル マネージャがファイルを塊にmmapコピーするのではなく、ファイルの完全なコピーを要求できます。

cpターミナルウィンドウでコピーしてみてください。このcp コマンドはカーネルに指示を厳しく提供し、システムに最適なものとして検出されたブロックにファイルをコピーします。それでもキャッシュがメモリを満たしていることがわかりますが、メモリ圧力の急増によるものではなく、単に多くのバイトの場合にはスワッピングがトリガーされてはなりません。

おすすめ記事