ディスクに大量の書き込みを行うときにシステムが遅くなるのはなぜですか?


8

大量のデータをディスクに書き込むときにシステムが遅くなる理由を知りたい。

システムが遅くなるためには、CPUに問題があると思います。ただし、書き込みはI / Oのみに限定されます。

データの書き込み時にハードウェア割り込みが発生しますか?その場合、CPUが常にコンテキストスイッチングを行っているのは、割り込みが原因である可能性があります。


1
ほとんどすべてのアプリケーションがディスクからデータを読み書きするだろうと思いませんか?
jilen 2013年

1
おそらく、ディスクが頻繁に使用されている場合は、メモリにスワップしているため、速度が低下します。systemload-pluginは、グラフィカルな方法でswapを使用しているかどうかを通知します。コマンドラインには、を使用しますfree
不明なユーザー

1
sysstatを構成/実行している場合、遅い時間のSARレポートを見ると、その時間の前後で何が起こっているかがわかります(コンテキストスイッチ、ディスクI / O、CPU負荷、ネットワークトラフィックなど)。
Bratchley 2013年

$PATHコマンド補完を使用したり、スペルミスをたくさんしたりした場合は、設定も確認してください。多くのディレクトリ、特に多くのディレクトリエントリを持つディレクトリを調べると時間がかかり、リソースが不足している場合は顕著になります。
MattBianco 14

回答:


3

背後にある主な理由は、通常のことです。I/ OはCPU / RAMよりもはるかに低速です。I / O操作を実行するプロセスがDMAを使用する(CPUの負荷を軽減する)場合でも、ある時点で、要求の完了を待機する必要がある可能性があります。

HDDの最も一般的なケースでは、ドライブに散らばっているファイルにアクセスしようとするいくつかのアプリケーションを追加するだけで、コーヒー(紅茶など)を作ることができます。SSDを使用すると状況は改善されますが、SSDでも、SATAで数百MB / sのスループットが測定され(スピンプレートHDDの数十MB / sと比較して)、シーク時間はごくわずかです(ミリ秒と比較して)スピンプレート)-ボトルネックになる可能性があります。

私が理解している問題は、データ転送自体にあるだけでなく、必要なオーバーヘッドにもあります。I/ Oはカーネルによって制御されますが、ユーザースペースなしではめったに起こりません。したがって、何かが起こっているかどうかのI / Oチェックを待機しているアプリケーションから(もちろん、実装によって異なります)、コンテキストの切り替えが多数発生する可能性があります。ディスク転送の場合、リソースまたはビジー待機を競合するいくつかのカーネルスレッドが存在する可能性があります(これは適切な戦略になる場合があります)。たとえば、あるパーティションから別のパーティションにデータをコピーするには、最新のファイルシステムが必要です。ソースデータの場所を見つけ、それを読み取り、ターゲットファイルシステムにスペースを割り当て、メタデータを書き込み、データを書き込み、完了するまで繰り返します。

そして、ある時点でシステムがスワッピングを開始すると(通常は通常のI / Oよりも優先度が高くなります)、障害が確定します。

編集:一部のLinuxカーネル開発者と話した後、状況は少し明確になりました。主な問題はI / Oスケジューラーであり、どのI / Oを優先するかについてあまり考えていません。したがって、ユーザー入力とそれに続くグラフィック出力は、ディスク/ネットワークアクティビティとキューを共有しています。その結果として、他のI / Oでページキャッシュをより効果的に使用できると判断したときに、キャッシュされたプロセスデータをページキャッシュ(ロードされたライブラリなど)から破棄する場合もあります。もちろん、そのコードを再度実行する必要がある場合は、再度フェッチする必要があります。つまり、すでに高負荷になっている可能性があるディスクを形成します。

これまでのLinuxカーネルが行くように、これらの問題の多くは4.4.xからまたは4.5.xのが言うので、(問題が知られている)、最近修正されてきたように、言ったはずです、一般的に(それがために使用し、問題が報告されるべきであることをよりよく振る舞いますカーネルの人々は、誰かがバグの報告とテストを手伝いたいと思ったときに満足しています。


少し詳しく説明してください。IOが非常にビジーなときにシステム全体が遅れているのはなぜですか。たとえば、WindowsマネージャーとIOの間に接続がない-明らかに、WMはIOを実行しないので、なぜ(少なくとも、スワップされていないときに)遅延が発生するのでしょうか。
Hi-Angel

WMは実際にXサーバー/ウェイランドコンポジターを介して多くのI / Oを実行できます(2つのHDD間で4つのデータストリームをコピーするほどではありませんが、完全に無視できる必要はありません-これはおそらく理由の1つとawesome思われます)kwinこの意味よりも少し上手に作業している)。
peterph 2016年

しかし、それはどのようなIOを行うのでしょうか?単にxsession-errors/ にログインしたからXorg.ₙ.logでしょうか?WMの作業を中断することなく、ロギングがバッファリングされるだけではありませんか?他に何か?UPD:ちょうど調べました/proc/AwesomePID/fd—私のWMが開いた唯一のファイルはxsession-errorsです。他のすべてではない、本当にファイル-ソケット、/dev/null/proc/stat...
ハイエンジェル

1
しかし、WMは実際にはXサーバー/ウェイランドコンポジターを介して多くのI / Oを実行できるとおっしゃっていました。しかし、何であれ、なぜそれは十分なCPUを取得しないと思いますか?その場合、CPUは通常かなり解放されています。CPUウィジェットの負荷はパネルで確認できます。アーカイブを解凍しても、その多くはかかりません。
Hi-Angel

1
@ Hi-Angelは、更新内容が少し明確になるかどうかを確認します。
peterph 2016年

2

私の経験では、I / Oアクティビティだけでシステムの速度が低下することはありません。この影響は、他のタスクにもI / Oが必要な場合に発生します。システムがスワッピング(強制される)していて、I / O負荷が大きい場合、状況は本当に悪になります。

I / Oの多いタスクの影響に影響を与えることができioniceます。それらをidle優先すると、他のタスクのレイテンシは増加しますが、最小値を超えることはありません。I / Oタスクは、別の(アイドルではない)タスクがI / Oを実行すると、すぐに中断されます。これらの設定をサポートするスケジューラーを使用している場合。

Linux I / Oスケジューラの選択を参照してください。


1
私の経験は逆です。つまり、大きなアーカイブの解凍を開始する可能性があります(IO負荷を引き起こします)。この時点で別の«デスクトップ»に切り替えようとすると、切り替えの遅れを感じます。ウィンドウマネージャーはどのようにIOに関連していますか?そして、ええ、私は空きRAMを持っているので、スワップされません(そして、スワップされていなくても、最後のターンでWMスワップされませんか?)。FWIW、私は軽量のAwesome WMを使用していますが、以前のkwinのものはさらに悪かったです。
Hi-Angel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.