web-dev-qa-db-ja.com

ディスクI / OがCPUを引き継ぐのを防ぐにはどうすればよいですか?

私はクアッドコアi7プロセッサでDebianJessieを実行していますが、ハイパースレッディングのおかげで8コアが表示されています。ディスクの負荷が高い場合、htopに示すように、8つのコアすべてがio-waitで最大になります。これにより、インターフェイスが非常に遅くなり(Gnomeを使用)、I/Oが完了するまでシステムが完全にフリーズすることがあります。

これをどのように診断すればよいですか?これを防ぐためにどの設定を調整できますか?

1台のHDDを使用していますが、S.M.A.R.Tチェックで正常であることが示されています。

編集:いくつかのことを明確にするために、私はI/Oの高速化には興味がありません。他のことをしている間、バックグラウンドで実行したいだけです。 SSDへのアップグレードは現在私にとってオプションではありません。

6
RandomBK

I/Oパフォーマンスを調整する方法はいくつかあります。

  • ファイルシステムの選択-典型的なデータがどのように見えるかに応じてファイルシステムを選択します-いくつかのファイルシステムはより多くの小さなファイルを処理し、いくつかは大きなファイルに適しています、いくつかは一度に複数のファイルにアクセスする(特に作成する)ときにうまくスケーリングしません。デフラグは、プレートドライブの回転に役立つ場合があります(フラッシュベースのデバイスではそれほど多くはありませんが、違いはまだあるはずです)。

  • ファイルシステムの調整-最近のファイルシステムには、ファイルシステムのパフォーマンスを一方向または別の方向にプッシュするオプション(作成時とマウント時の両方)がたくさんあります。代表的な例は、ジャーナリングがどのように行われるかです。

  • DMA設定-これは古くから自動的に行われてきましたが、チェックしても問題はありません(_hdparm -i_はここでの友達です)。

特にLinux(ただし、他のカーネルでも同様である可能性があります):

  • THP-パフォーマンスの低下を引き起こすために使用される透過的な巨大ページ。 IIRCの問題は、(少なくともある程度は)少し前に修正されています。 USBとの間でのコピーが問題になる場合は、おそらくこの方向に目を向ける必要があります。 透過的なhugepagesを無効にする THPを無効にする方法についての良い出発点として役立つかもしれません。

  • カーネルI/Oスケジューラは、パフォーマンスに大きな影響を与える可能性があります。一部の人々は、CFQよりもDeadlineスケジューラーの使用を提唱しています。これは、より複雑で、物事を考えすぎる傾向があると言われています。

それとは別に、いくつかのシナリオでは、重いI/Oが発生するだけです。 USBメモリカードリーダーからハードドライブへ、ハードドライブからUSBフラッシュディスクへファイルのコピーを開始するときは、Webを参照してください(一部のブラウザは、クラッシュした場合に回復可能であることを確認するためにfsync()重い場合があります)、電子メールのダウンロード、P2Pクライアントの実行、およびムービーの再生をすべて同時に行うと、物理ディスクとファイルシステムがボトルネックになります。場合によっては、慎重に構築された(適切なストライプサイズと構成ドライブの数で読み取る)RAID0が問題の軽減に役立つ場合があります。

2
peterph