web-dev-qa-db-ja.com

tar / gzip cronスクリプトでNiceスケジューリング優先順位を使用する

tar/gzipを使用すると、サーバーに大きな負担をかける大規模なバックアップを実行します。バックアップを処理するスクリプトにアクセスするcronjobとしてタスクセットアップを取得しました。 Niceがこの状況で役立つ可能性があることは知っていますが、それを使用する適切な方法については少し不確かです。

スクリプト内に次のコマンドがあります。

tar -cf 
gzip -9 

優先順位を下げるために、その前にNiceコマンドを追加するだけですか?:

Nice -n 13 tar -cf 
Nice -n 13 gzip -9

このアプローチを使用する際の注意点はありますか?ありがとう。

7
Joe Habadas

注意すべき注意点があります。質問では正確なOSを指定していないため(ただし、それは一部のUnixライクなOSであることを意味します)、警告のリストは特定のOSとバージョンによって異なります。覚えておくべき最も重要なことは次のとおりです。

Niceは、プロセスに与えられるCPU時間に影響を与えることを目的としていますが、RAMまたはI/Oキャパシティ)には影響を与えません。 :

  • CPU時間が少ないため、バックアップの完了に時間がかかります。ただし、以前と同じようにRAMを使用しますが、現在はより長い時間RAMを使用します。システムが少ないためにシステムの速度が低下します。 RAM他の目的では、この遅延は以前よりも長く続きます。
  • Niceを使用してもまったく影響はありません。これは、バックアッププロセスが最初からI/Oにバインドされており、I/OスケジューリングがNiceの影響を受けないためです。 OSが最近のLinuxバージョンである場合、使用されているNice設定に応じて、I/Oスケジューリングはioniceの影響を受ける場合と影響されない場合があります。

さらに、CPUスケジューリングへの正確な影響でさえ、特定のオペレーティングシステムと設定に大きく依存します。一部のカーネルには、Niceコマンドを使用して到達可能な設定よりも高いまたは低い優先度でプロセスを実行できる設定があります。

私が遭遇した1つの警告は、Ubuntu 14.04に固有のようです。デフォルトの構成では、スケジューリングのためにプロセスをグループ化します。各グループは、CPU時間の公平な配分を受け取ります。 Niceは、そのようなグループ内のプロセスに割り当てられるCPU時間にのみ影響し、各グループに割り当てられる量には影響しません。優先度の低いプロセスでも、異なるグループのプロセスからCPU時間を奪う可能性があるため、私にとってはNiceの使用を完全に弱体化させました。

8
kasperd

私は別のアプローチを取るでしょう...

いいえ、このために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

結論:データの圧縮に費やされた非常に長い時間に相当する追加の圧縮ビットはありますか?

5
ewwhite

これは元の質問から外れていると思いますが、それは効率性のテーマにとどまっています(「私のサーバーに大きな負担がかかる」と言います)...

あなたが投稿した内容から、一連のファイルを含むtarを作成し、その結果をgzip- ingしていると推測しています(または推測しています)。一方を他方に直接パイプすることで、多くのディスクI/O(および一時スペース要件)を節約できます。

tar cf - /path/to/stuff | gzip > archive.tar.gz

これにより、合計経過時間に大きな違いが生じる場合があります。

2
Chris