tar/gzip
を使用すると、サーバーに大きな負担をかける大規模なバックアップを実行します。バックアップを処理するスクリプトにアクセスするcronjobとしてタスクセットアップを取得しました。 Nice
がこの状況で役立つ可能性があることは知っていますが、それを使用する適切な方法については少し不確かです。
スクリプト内に次のコマンドがあります。
tar -cf
gzip -9
優先順位を下げるために、その前にNice
コマンドを追加するだけですか?:
Nice -n 13 tar -cf
Nice -n 13 gzip -9
このアプローチを使用する際の注意点はありますか?ありがとう。
注意すべき注意点があります。質問では正確なOSを指定していないため(ただし、それは一部のUnixライクなOSであることを意味します)、警告のリストは特定のOSとバージョンによって異なります。覚えておくべき最も重要なことは次のとおりです。
Nice
は、プロセスに与えられるCPU時間に影響を与えることを目的としていますが、RAMまたはI/Oキャパシティ)には影響を与えません。 :
Nice
を使用してもまったく影響はありません。これは、バックアッププロセスが最初からI/Oにバインドされており、I/OスケジューリングがNice
の影響を受けないためです。 OSが最近のLinuxバージョンである場合、使用されているNice
設定に応じて、I/Oスケジューリングはionice
の影響を受ける場合と影響されない場合があります。さらに、CPUスケジューリングへの正確な影響でさえ、特定のオペレーティングシステムと設定に大きく依存します。一部のカーネルには、Nice
コマンドを使用して到達可能な設定よりも高いまたは低い優先度でプロセスを実行できる設定があります。
私が遭遇した1つの警告は、Ubuntu 14.04に固有のようです。デフォルトの構成では、スケジューリングのためにプロセスをグループ化します。各グループは、CPU時間の公平な配分を受け取ります。 Nice
は、そのようなグループ内のプロセスに割り当てられるCPU時間にのみ影響し、各グループに割り当てられる量には影響しません。優先度の低いプロセスでも、異なるグループのプロセスからCPU時間を奪う可能性があるため、私にとってはNice
の使用を完全に弱体化させました。
私は別のアプローチを取るでしょう...
いいえ、このためにNice
をいじりません。そして、gzip
はそれほど素晴らしいものではありません。さらに、CPUを犠牲にして最大の圧縮率を提供するgzip -9
を使用しています。デフォルト(レベル6)よりもそのレベルの圧縮が本当に必要ですか?
Gzipレベル9を使用しない場合、システムに負担がかかりますか?
サーバーの仕様は何ですか? CPUはいくつありますか? cat /proc/cpuinfo
複数のCPUがある場合、代わりに pigz
を使用することを検討しますか?マルチスレッド化されており、もう少し効率的で、システムのリソースをより有効に活用できます。
1.8GBファイルでのいくつかのテスト:
標準gzip
(-6圧縮レベル)
Original file size: 1.8G CHL0001.TXT
Compression time: 0m18.335s
Compressed file size: 85M CHL0001.TXT.gz
Decompression time: 0m6.300s
gzip -9(最高の圧縮)
Original file size: 1.8G CHL0001.TXT
Compression time: 1m29.432s
Compressed file size: 75M CHL0001.TXT.gz
Decompression time: 0m6.325s
pigz(-6圧縮レベル)
Original file size: 1.8G CHL0001.TXT
Compression time: 0m1.878s
Compressed file size: 85M CHL0001.TXT.gz
Decompression time: 0m2.506s
pigz -9(最高の圧縮、マルチスレッド)
Original file size: 1.8G CHL0001.TXT
Compression time: 0m5.611s
Compressed file size: 76M CHL0001.TXT.gz
Decompression time: 0m2.489s
結論:データの圧縮に費やされた非常に長い時間に相当する追加の圧縮ビットはありますか?
これは元の質問から外れていると思いますが、それは効率性のテーマにとどまっています(「私のサーバーに大きな負担がかかる」と言います)...
あなたが投稿した内容から、一連のファイルを含むtar
を作成し、その結果をgzip
- ingしていると推測しています(または推測しています)。一方を他方に直接パイプすることで、多くのディスクI/O(および一時スペース要件)を節約できます。
tar cf - /path/to/stuff | gzip > archive.tar.gz
これにより、合計経過時間に大きな違いが生じる場合があります。