スナップショットのパフォーマンスをテストするためにランダムな大容量ファイルを作成して変更する方法は?

スナップショットのパフォーマンスをテストするためにランダムな大容量ファイルを作成して変更する方法は?

毎時間スナップショットを撮るリンクボリュームがあります。

スナップショットのパフォーマンスをテストするには、スナップショットバックアップ間で大量の「変動」またはファイル変更を生成するプロセスを実行する必要があります。

これには2つの質問があります。

  1. シンプルで簡単に大きなテキストの塊を効率的に作成し、ディスクに書き込む方法です。私の知識が限られているので、私が考えることができる唯一のことは、ランダムなfor文字を生成するループだけですが、これは非常に遅いことがあります。また、ファイルが置き換えられる場合は、スナップショットにデフォルトで一致するパターンがないように新しいランダム性を設定する必要があります。
  2. これを保存する最も効率的な方法は何ですか?たとえば、1000ファイルに1 GB、10ファイルに100 GB

図は1Kの単語と同じであるため、概念的には次のように描画されています。

ここに画像の説明を入力してください。

ファイルシステムとツールを組み合わせる方法についての洞察に感謝します。

ベストアンサー1

シンプルで簡単に大きなテキストの塊を効率的に作成し、ディスクに書き込む方法です。私の知識が限られているので、私が考えることができる唯一のことは、ランダムな文字を生成するforループだけですが、これは非常に遅くなる可能性があります。

なぜそんなに遅いのですか?ソフトウェアループを実行する以外にデータを生成する他の方法は何ですか?

はい、for屋根ふきはあなたが望むものとほぼまったく同じです。適切なサイズのバッファ(たとえば、それぞれ512kB)を割り当て、任意のテキストで埋めます(または実際にはバイトのみを入力すると、バイトが「A」などの特定の項目を表すかどうかにかかわらず、記憶媒体に影響を与えません。) 、writeこのバッファを使って呼び出します。次のバッファに移動します。たくさんRAMバッファは、保存できるものよりも早く入力されます。

呼び出すと、write着信バッファがファイルシステムバッファ(RAM)にコピーされ、writeすぐに返されるため、次のデータチャンクを作成できます。同時に、カーネルはこのバッファをバックストアに書き込み始めます。

これは、ファイルシステムバッファがいっぱいになり、すぐにデータをコピーするスペースがなくなるまで正しく機能します。writeこれにより、スペースができるまで意志がブロックされます。これは常にストレージを忙しく保ち、アプリケーションを実行するためのきちんとした方法です!

したがって、ループの最初の数回の反復はfor非常に高速ですが、ある時点でストレージの平均書き込み速度で「制限」されます。すごい!

また、ファイルが置き換えられる場合は、スナップショットにデフォルトで一致するパターンがないように新しいランダム性を設定する必要があります。

かなり速いですが悪くないPRNG(疑似乱数ジェネレータ)、libc rand(どんな視点でも恐ろしい)以外のものを使用してください。絶対に使用しないでくださいrand)。私は使う奇妙な色のシロ128+かなり高いデータ生成速度を達成します。

一度私のPCでベンチマークしたことがありましたが、生成された擬似ランダム8バイト値はそれぞれ約0.65ナノ秒かかったので、各ランダムビットは約0.01ナノ秒、つまり理論的に100Gb/sかかりました。シングルコアのパフォーマンスは、Kroshiro 128のSIMDバージョンを使用しませんでした。 +。これはストレージインターフェースよりもはるかに高速です(Google、Cloudflare、LHC、またはNSAで作業していることを忘れていない場合)。

これを保存する最も効率的な方法は何ですか?たとえば、1000ファイルに1 GB、10ファイルに100 GB

実際、1000個のファイルはそれほど多くもなく、オーバーヘッドもわずかです。しかし、最も安価なバリエーションは1TBファイルです。

おすすめ記事