web-dev-qa-db-ja.com

ddへの入力としてopensslを並列化します

私は @ trembyの素晴らしいアイデア を使用してディスクをランダムデータで埋めています。

これには、多くのゼロを暗号化するopenssldd (bs=4M)にパイプすることが含まれます。

これが実行されているシングルコアを最大限に活用しています(あと7つあります)。I/ Oを最大限に活用することはできません。

入力をddに並列化する方法を探しています。

私はそれができると思います このように 、しかし私が本当に探しているのは、opensslを並列化してそれをddに書き込む方法です。ディスクはシーケンシャルです。

誰か提案がありますか?

1
Diagon

重要な部分は、いくつかのopensslコマンドの出力をマージする方法を持つことです。 FIFOで問題が解決すると思います。これを試してください

mkfifo foo
openssl <whatever your command is> > foo &
openssl <whatever your command is> > foo &
openssl <whatever your command is> > foo &
dd if=foo of=/dev/sda bs=4M

編集:システムを最大限に活用するために必要な数のopenssl行を追加します。 ddの呼び出し後に追加することもできます。

以下のコメントでOPが述べているように、cat foo | pv | dd of=/dev/sda進行状況を監視します。

2
David King