ターミナルウィンドウでコマンドをスロットルする方法を教えてください。


8

convertたくさんの画像を同時に実行する必要がありました。コマンドはかなり時間がかかりましたが、これは私を気にしません。

問題は、このコマンドにより、コマンドの実行中(約15分間)にコンピューターが使用できなくなったことです。

それで、リソース(プロセッサとメモリ)をコマンドラインから直接コマンドに制限することで、コマンドを調整することは可能ですか?これは押す前に同じ行に何かを追加した場合にのみ機能Enterします。プロセスを開始すると、コンピューターが非常に遅くなるため、たとえば「システムモニター」に切り替えて優先度を下げることができないためです。

編集:上位およびiotopの結果

私はなんとか実行topsudo iotop >iotop.txt、これらの変換操作の1つを行いました。(生成されたiotop.txtファイルは読みにくい)

トップの結果:

   PIDユーザーPR NI VIRT RES SHR S%CPU%MEM TIME +コマンド           
14275ユーザー名20 0 4043m 3.0g 1448 D 7.0 80.4 0:16.45変換 

iotopの結果:

[?1049h [1; 24r(B [m [4l [?7h [?1h = [39; 49m [?25l [39; 49m(B [m [H [2JTotal DISK READ:1269.04 K / s | Total DISK WRITE :[59G0.00 B / s
(B [0; 7m TID PRIO USER DISK READ DISK WRITE SWAPIN(B [0; 1; 7m IO>(B [0; 7m COMMAND [3; 2H(B [m2516 be / 4 username 350.08 K / s 0.00 B / s 0.00%0.00%zeitgeist-datahub
 7394 be / 4ユーザー名568.88 K / s 0.00 B / s 77.41%0.00%--rendere〜.530483991 [5; 1H14275アイドルユーザー名350.08 K / s 0.00 B / s 37.49%0.00%変換S〜f test.pdf [6 ; 2H2048 be / 4 root [6; 24H0.00 B / s 0.00 B / s 0.00%0.00%[kworker / 3:2]
[5G1 be / 4 root [7; 24H0.00 B / s 0.00 B / s 0.00%0.00%init

さらに、プロセスが終了した後でも、コンピューターは以前のパフォーマンスに戻りません。私が実行してこの回避する方法を発見したsudo swapoff -aが続きますsudo swapon -a

回答:


5

ああ、男の子、私はこれを捕まえた... OPを引用して:

さらに、プロセスが終了した後でも、コンピューターは以前のパフォーマンスに戻りません。私が実行してこの回避する方法を発見したsudo swapoff -aが続きますsudo swapon -a

OK、つまり、システムで使用可能なRAMを使い果たしていることを意味します。つまりconvert、一度に多くのプロセスを実行しようとするのは簡単です。スポーンconvertするときに実際の構文を見てアドバイスする必要がありますが、基本的には、RAMが快適に処理できる以上の同時プロセスを開かないようにする必要があります。

これの原因は何であるかを説明したのでconvert *.tif blah.pdf、起こっているのは、すべてのTIFのコンテンツとPDFへの変換が一度にRAMに詰め込まれていることです。あなたがする必要があるのは、これが必要ないようにジョブを分割することです。頭に浮かぶ可能性の1つは、代わりにのようなことを行ってから、のようなものfind . -iname '*.tif' | xargs -I% convert % %.pdfを使用pdftkして、個々のPDFをすべて接着することです。あなたがいる場合、実際のバッチで変換を実行するための小さなスクリプト記述するために空想を取得したい、とあなたはマルチコアのCPUを持っている、これはまたもたらさあなたのチャンスnはn個のコアのあなたの数であり、全部が大幅に高速化成し遂げます。:)

pdftkハウツー:http ://ubuntuhowtos.com/howtos/merge_pdf_files (基本的にに要約されますsudo apt-get install pdftk; pdftk *.pdf cat output merged.pdf


私は一度に1つのconvert *.tif bla.pdfプロセスを実行しているだけですが、入力はtif画像の束全体です。たくさんの画像から1つのPDFを作成する方法ですが、うまく機能しますが、私のPCを抑制します。
ために何

^^編集済みの回答を参照してください:)
ジム・サルター

これは、1つの簡単な変更で完全に機能しました。find . -iname '*.tif' | xargs -I% convert % %.pdfの代わりにfind . -iname '*.pdf' | xargs -I% convert % %.pdf。速かった!ありがとう。
ために何

申し訳ありませんが、脳と指の間の誤動作:-)
ジムサルター

1つの小さな変更… -execとの-execdirオプションについて知っておくことは良いことですfind。あなたの場合、を使用する代わりにxargs、私は次を使用します:find -iname '*.tif' -execdir convert {} {}.pdf ';'
Paddy Landau

12

man nice、およびI / Oスロットリングが必要な場合man ionice

いくつかの簡単な例を見てみましょう。

CPU使用率の調整:

you@box:/$ nice -n 10 /usr/bin/convert blah.gif blah.jpg

ただし、説明からすると、CPU使用率は、ほぼ間違いなくここでの実際の問題ではありません。多くの場合、深刻なI / O競合が発生しています。

ディスク使用量の調整:

you@box:/$ ionice -c2 -n7 /usr/bin/convert blah.gif blah.jpg

-c2「ベストエフォート」であり-n7、最も低い「ベストエフォート」の優先順位です。したがって、これによりジョブが抑制され、システム上の他のほとんどのものよりもI / O優先順位が低くなります。

you@box:/$ ionice -c3 /usr/bin/convert blah.gif blah.jpg

-c3(優先度レベルは不要)は「アイドルのみ」を意味します。ジョブを-c3ONLYに設定すると、システムにほとんど影響を与えることなく、アイドルディスクスケジュール時間がかかります。ただし、システムの残りの部分のビジー度によっては、ジョブの実行時間がかなり長くなる可能性があります。


どのようにnice変換コマンドに統合しますか?私が間違っていなければ、すでに実行中のプロセスに対してniceが機能します。
ために何

1
上記を参照してください...また、srsly、manページをお読みください。これは非常に簡単なmanページであり、まったく腰がありません。:-)
ジム・ソルター

私はそれを試してみました。ちょっと助けになったが十分ではない。nice -n 20次回もやってみます。
ために何

正直なところ、CPU負荷がここでの問題であることはよくわかりません。iotopプロセスの実行中にやってみましたか?通常、CPUを大量に消費する単一のプロセスはシステムのユーザビリティにほとんど影響を与えませんが、ハードドライブをスラッシングするプロセスは、特にSSDではなく従来のドライブを使用している場合は非常に迅速にすべてを急停止させます。
ジムソルター

システム全体がかなり使い物にならないconvert blah.gif blah.jpg & iotopので、iotopあなたはあなたのconvert仕事を始めたらすぐにそれがすぐに起動するように、それに沿って何かを試すかもしれません。
ジムソルター

2

以下cpulimitは、任意のプロセスのCPU使用を制限するために呼び出されるプログラムの使用に関するかなり良い記事です。

http://maketecheasier.com/limit-cpu-usage-of-any-process-in-linux/2010/09/22

問題は、convertプロセスの開始後にプロセスのPIDを見つけると言ったようなものです。

起動後convert、ターミナルでコマンドを入力できる場合は、実行ps aux | grep convertしてPIDを見つけ、sudo cpulimit -p PID -l CPU%スロットルを開始できます。

または、起動convertすると端末もロックされる場合はcpulimit、特定の量のCPU使用率でプロセスを自動的に監視および抑制するバックグラウンドデーモンとして実行する方法を記事に示します。幸運を!


このスクリプトは悪い考えであり、組み込みniceコマンドに比べて原始的です。 cpulimit他にCPU時間を必要とするかどうかに関係なく、プロセスを特定の%CPU使用率に制限します。nice対照的に、1つのタスクを他のタスクより上(または下)に優先順位付けできる優先レベル(合計40)を設定します。
ジムサルター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.