低速のハードドライブをシミュレートできますか?


19

特定の断続的なバグは、ディスクの読み取り速度が遅い場合にのみ現れる可能性があると思います。トラブルシューティングは、確実に再現できないため困難です。

単に優先順位の高いプロセスでIOをゴブリングする以外に、低速のハードドライブがあることをシミュレートする方法はありますか?


特定のバス速度で実行するようにハードドライブに指示するコマンドを見たことを覚えています。私はそれを掘り出すことができるかどうかを確認します。
ジェレミー

man hdparm多分-Xオプションを見てください。ドライブの速度を落とすために使用できるものはかなりありますが、それらのいくつかはデータに厄介なことをする危険があります!
ジェレミー

また、ネットワーク共有をフォルダーとしてマウントしてみてください(グーグルはあなたの友達です)。
ジェレミー

1
これは直接的な答えではありませんが、このような断続的なバグがあった場合、おそらくIOgrの競合状態をキャプチャするため、Valgrindでプロセスを実行しようとします(コンパイルされた言語の場合)。
poolie

1
アプリケーション、カーネル、またはデバイスドライバーのバグについて話しているのですか?それともまったく知りませんか?もっと説明しておくと役立つかもしれません。
-poolie

回答:


15

使用NBD、その後、ネットワークブロックデバイス、及び発言権を使用して、それへのアクセスを制限評価trickle

sudo apt-get install nbd-client nbd-server trickle

+1はかなりクールなソリューションです。ただし、問題が存在する可能性のある実際のハードディスクデバイスドライバーにアクセスしないため、実際のテストではありません。
Unix Janitor

1
私は彼がドライバーのバグについて話しているとは思わなかったが、それは単なる仮定に過ぎなかった。どれどれ。
プーリー

10
この回答に実際のコマンドを追加することは可能ですか?現時点であなただけのツールをインストールする方法を示しています:)が必要
リッチ

5
#echo 1> / proc / sys / vm / drop_caches

遅くなります:)

キャッシュされたページを利用する代わりに、ディスクからの読み取りを強制します。

本当に洗練されたい場合は、scsiフォールトインジェクションフレームワークを使用して、n回ごとに読み取りエラーを偽装するようなことを行うことができます。

http://scsifaultinjtst.sourceforge.net/


1
注:これにより、キャッシュが1回だけドロップされます。その後、すぐに再びキャッシュを開始します。あなたはそれをループでラップしたいかもしれません。
アンドロビン

@アンドロビン私はそのアイデアが好きです。ループにスリープ間隔を追加することもできます。ありがとう!
ペペラキ

4

USB 1.1ハブをお持ちですか?それとも遅いSDカード?彼らはあなたを10mbps以下に落とすでしょう。


素敵な... +1には技術的に十分ではないが、素敵な
RobotHumans

3

これは決して完全な解決策ではありませんが、他の手段と併用すると役立つ場合があります。プロセススケジューラによく似たI / Oスケジューラがあり、微調整できます。

最も注目すべきは、実際に異なるスケジューラーから選択できることです。

~# cat /sys/block/sda/queue/scheduler 
noop anticipatory deadline [cfq] 
~# echo "deadline" > /sys/block/sda/queue/scheduler
~# cat /sys/block/sda/queue/scheduler 
noop anticipatory [deadline] cfq 
~# 

deadline より強く再現可能な結果を​​得るのに役立ちます。

noop、その名前が示すように、めちゃくちゃばかげており、ほとんど労力をかけずにI / Oパフォーマンスに絶対的な混乱をもたらすことができます。

anticipatoryそしてcfqそれについてスマートにするために、両方の試みは、しかしcfq、一般的に2のよりスマートです。(私が思い出すように、anticipatory実際にはカーネルが複数のスケジューラーのサポートを開始する直前のレガシースケジューラーです。)



2

UbuntuインストールCDのisoなどの大きなファイルのコピーを実行して、2回実行することができます。それはあなたのドライブをかなり遅くするはずです。


質問が言うように、「IOを単に
ゴブリングするのは短い

2

ハードドライブ自体の速度を落とそうとするのとは別に、大量のディスクI / Oを引き起こす可能性のあるbonnie ++などのファイルシステムベンチマークツールを使用することもできます。

sudo apt-get install bonnie++

1
質問が言うように、「IOを単に
ゴブリングするのは短い


0

実行してiotop、デバッグしようとしているプロセスが大量のディスク読み取り/書き込みを引き起こしているかどうかを確認してみませんか?


3
プロセスが多くのIOを実行しているという単なる事実が既に知られているか、それ自体は問題ではないため、この答えは役に立たないと考えられます。問題は、これらのIOを処理する方法に何らかのタイミング関連のバグがあることです。
-poolie

0

私は最近、私が持っているセットアップを見つけました

  • ディレクトリをGoogleドライブに移動しました
  • 超超低速クライアント経由でマウント google-drive-ocamlfuse
  • 元のパスから新しいパスへのシンボリックリンクを作成しました

場合は、待ち時間16秒遅い十分ではありません、あなたは自分のルータを外してくださいすることができます。

参考のために、ここに元のユースケースがありますが、ここでアイデアを得ました:https : //github.com/goavki/apertium-apy/pull/76#issuecomment-355007128

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.