
Amazon S3を介して複数のシステム間で大規模ディレクトリ(〜40GiBおよび約800万ファイル)の一部を移動しようとしていますが、シンボリックリンクを保存する必要があるため、ディレクトリを圧縮して結果ファイルをアップロードするのではなく、S3に直接同期します。 。
ほとんどのファイルはすでに圧縮されているため、gzipまたはbzipを使用してアーカイブを圧縮していません。私のコマンドはこれです
tar --create --exclude='*.large-files' --exclude='unimportant-directory-with-many-files' --file /tmp/archive.tar /directory/to/archive
このプログラムの実行中に、tar
8コアシステムでは1つのコアしか使用されていません。私はこのコアのフック、低い負荷平均(〜1)、そして私が見ている統計に基づいて、予想通り、タスクはiostat
実際にはディスクバインディングではなくCPUバインディングであるという印象を受けました。遅いため(〜90分)、追加のコアを活用するためにtarを並列化することに興味があります。
このトピックに関するその他の質問集中する存在する圧縮または複数のプロファイルを作成(私の場合はディレクトリ構造のため簡単ではありませんでした。)ほとんどの人は、圧縮なしでタールボールを作成できることを忘れているようです。
答え1
tar
アーカイブの特性は出力にファイルを順次保存することであるため、複数のアーカイブを作成しないとプロセスを並列化することはできません。
ジョブのボトルネックはハードドライブかもしれません。したがって、ジョブを複数のプロセスに分割しても、異なるドライブで実行されない限り、より速く実行されません。