• 締切済み

ディスクI/Oが重い!

ずっとBSD系を使っていて、最近になって、Linux(turbo)を使っているのですが・・わからないことが多く、戸惑っています。。 dd で、 dd if=/dev/hda of=/dev/hdb bs=32M というようにして、ディスク丸ごとコピーを試みたところ、処理中、シェルでただリターンキーを押しただけでも1秒くらいかかるほど、非常に重たくなってしまいました。 調べてみると、dd のCPU使用率は7%程度なのに、CPU負荷は1.2~2.0にまでなっていました。(そのほかのサービス等は一切動いていない状態です) そこで試しに・・ dd if=/dev/hda of=/dev/null bs=32M と、やってみたところ、やはり同様の状況になりました。 hdparm で調べてみましたが、USE_DMA=1となっていたので、おそらく、DMAが使われていると思うのですが・・ このような処理は、DMAの操作がほとんどなので、CPU負荷にはほとんど影響しない・・と、思うのですが、なぜ、こんなに重くなってしまうのでしょうか? ちなみに、FreeBSDでは、同じように、ハードディスクからnullデバイスへのコピー dd if=/dev/ad0s1 of=/dev/null bs=32m を実行しても、CPU負荷は0.00~0.01、処理はほとんど重くなりません。

みんなの回答

回答No.3

bs=32mって大きすぎじゃないですか。一度の入出力の単位として 32m は BSD系でも大きな値だと思いますが、問題なかったのでしょうか。 そんなに大きなサイズのデータを一度に入出力させようとしたら、データバスの帯域が飽和してしまうような気がします。たぶんキーボード等の入力が遅いのはバス帯域をddコマンドで使い切ってしまっているからだと思います。 最適なブロックサイズは一般的には 8k から 64k くらいではないでしょうか。 値を変えていろいろと試してみることをお勧めします。

  • s2t
  • ベストアンサー率79% (47/59)
回答No.2

CPU 負荷とは「load average」のことを仰っているのでしょうか? load average は「実行待ちプロセス数の平均」の値ですので、CPU を常に必要とするようなプロセスが一つあれば、load average は約 1.0 上昇します。 他にも Disk I/O に伴う実行待ちなども考えられるので、単純に CPU 負荷だけが load average 上昇のトリガーとは限りません。

  • mendokusa
  • ベストアンサー率13% (359/2726)
回答No.1

top で監視してみたらいかが。

noname#43437
質問者

補足

もちろん、topで監視しています 動いているプロセスは、dd と topだけで、あわせて10%以下です。

関連するQ&A