プログラムに、より多くのメモリとCPUリソースを割り当てます。

プログラムに、より多くのメモリとCPUリソースを割り当てます。

unzip大きなファイルを解凍しています。しかし、私のCPU使用量は15%未満で、RAMは8GBのうち1〜1.2GBのみを活用しています。

unzipこのプログラムにさらにCPU性能とRAMを割り当てる方法はありますか?

ありがとうございます。

Lubuntu 16.04を使用しています

ベストアンサー1

プログラムは、組み込みの制限がない限り、取得できるすべてのメモリとCPU性能を使用します。unzipそのような組み込みの制限はありません。減らすことはできますが、あまり与えることはできません。基本的には好きなだけ持参できるからです。

解凍は、メモリを大量に使用するプロセスではありません。大容量アーカイブを解凍する際の主なメモリコストは、解凍するとファイルのリストがメモリに保持されることです。

速度を制限する要因は、CPUパフォーマンスまたはディスク(またはネットワーク経由でファイルを読み書きする場合はネットワーク)です。これはCPUに対するディスク速度に依存します。プロセスが100%占有されていることを確認する一つ核兵器。そうでない場合は、速度を上げる唯一の方法は入力/出力速度を上げることです。これは、より速いディスクを意味するか、入力と出力を別のディスクに配置するように配置することを意味します。

プロセスが1つのコアを100%占める場合は、並列化を使用してスピードを上げることができます。多くの圧縮形式と同様に、ファイルの解凍は形式の適応性が高いため、本質的に並列化は不可能です。圧縮は反復パターンを見つけ、それを以前のパターンへの間接的な参照で置き換えることによって達成されます。一部の圧縮形式には、各チャンクを個別に解凍できる「再初期化ポイント」があります。私はbzip2が少なくともこれを行うことを知っています。一部の圧縮ツールは、その形式で必要とされない場合でもこれを行います。しかし、私が知っている限り、zipの場合はそうではありません。一方、Zipはアーカイブの各メンバーを個別に圧縮するため、各ファイルを個別に解凍できます。だから、Nコアがあれば、個々のファイルを解凍することで忙しい状態を維持できます(I / Oが十分速い場合)。

問題は、並列圧縮解除の実装を見つけることです。私の考えではp7zip7z x -mmt=on foo.zipまたは(8コアを使用)使用のサポートがありますが、7z x -mmt=8p7zipのドキュメントはあまり良くなく、これが実際に並列化できるかどうかを確認できませんでした。

おすすめ記事