dd コマンドを使用して、Linux でディスクの読み取り速度と書き込み速度をテストします。

序文

最近、パッケージの更新がいつも非常に遅い. コマンドを使用して MD5 値を計算するステップがありmd5sum、1 時間かかることもあります. MD5 の計算には時間がかかりますが、通常は 1 分以上かかります. 5Gデータのmd5値.1時間以上はちょっと無理なので、topコマンド md5sumプロセスは常にDスタック時の状態であることが分かった.これが最初遭遇したので、いくつかの情報を確認して記録しました。

D状態プロセス

D 状態のプロセス (TASK_UNINTERRUPTIBLE) は、中断できないスリープ状態にあり、プロセスが非同期シグナルに応答しないことを意味します。
ほとんどの場合、プロセスは、スリープ中に常に非同期シグナルに応答できる必要があります。D 状態の存在の重要性は、カーネルの特定の処理手順を中断できないことです. たとえば、あるプロセスが特定のデバイス ファイルを読み取るために read システム コールを呼び出します. デバイスの相互作用のプロセスが中断され、デバイスが制御不能な状態に陥ります。この場合の D 状態は常に非常に短命であり、ps コマンドでキャプチャすることは基本的に不可能です。

でもひっかかりましたmd5sumコマンド実行時によくひっかかりましたD状態はI/Oリソースが満たされていないため待機が原因であることが多いです~

ここがポイントです.IOが満たされていないので、IOを確認し、ディスクからいくつかのファイルを読み込んでmd5を計算するので、ディスクの読み書きに問題があると疑われ、測定したい一部のディスクの読み取りおよび書き込み速度. これは、今日話したいddコマンドが.

dd コマンド

ディスクの読み書き速度は、実際にファイルを読み書きしてテストする必要があり、ddコマンドはこのテストを完了することができます.timeコマンドをコマンドの実行時間をカウントできます.

  • 読み取り速度のみ

    # time dd if=/tmp/test of=/dev/null bs=16k
    1000000+0 records in
    1000000+0 records out
    16384000000 bytes (16 GB) copied, 42.7044 s, 384 MB/s
    
    real    0m42.718s
    user    0m0.387s
    sys     0m8.951s
    
  • 書き込み速度のみ

    # time dd if=/dev/zero of=/tmp/test bs=16k count=1000000
    1000000+0 records in
    1000000+0 records out
    16384000000 bytes (16 GB) copied, 35.7006 s, 459 MB/s
    
    real    0m38.428s
    user    0m0.356s
    sys     0m12.608s
    
  • 読み取り速度と書き込み速度をテストする

    # time dd if=/tmp/test of=/tmp/test2 bs=16k  
    1000000+0 records in
    1000000+0 records out
    16384000000 bytes (16 GB) copied, 87.3214 s, 188 MB/s
    
    real    1m27.331s
    user    0m0.430s
    sys     0m15.799s
    

問題の原因

最後に、テストの結果、ハードディスクの読み書き速度があまり安定していないことがわかりました.運用保守チームと相談したところ、このサーバーで使用されているネットワークハードディスクのストレージ帯域幅が限られていることがわかりました.前述の MD5 を計算する操作手順に影響しますが、ローカル ハードディスクを変更するだけです。

要約する

  • プロセスが D 状態を表示している場合、そのプロセスは中断できないスリープ状態にあり、多くの場合、I/O リソースが満たされていないために待機していることが原因です。
  • テスト書き込み速度のみtime dd if=/dev/zero of=/tmp/test bs=16k count=1000000
  • テスト読み取り速度のみtime dd if=/tmp/test of=/dev/null bs=16k
  • 読み取り速度と書き込み速度をテストするtime dd if=/tmp/test of=/tmp/test2 bs=16k
  • /dev/zeroこれは特別なファイルです。読み取ると、無限のヌル文字が返されます。これを使用して、IO なしでファイルを初期化できます。
  • /dev/nullまた、ブラックホールと呼ばれる、書き込まれたデータをすべて破棄し、IO を生成しない特殊なファイルでもあります。
  • ネットワーク ハードディスクはストレージ帯域幅の影響を受けます. 帯域幅がいっぱいになると、ハードディスクの読み書き速度が遅くなります.
==>> アンチクライミング リンクをクリックしないでください。その場で爆発します。当社は責任を負いません。<<==

手の届かないように見えたが、突然手の届くところに一瞬感じ、逃げ道がないように見え、突き進むだけです。

おすすめ

転載: blog.csdn.net/shihengzhen101/article/details/130395473