私はBeaglebone Greenでun tar ie tar xzvf abc.tar.gzを実行しています。 CPUを使いすぎているようです。解凍操作中は、topコマンドでCPU使用率を確認してください。なぜ2つの異なるプロセスが生成されるのかわかりません。なぜですか? ? ?
PID PPID USER STAT VSZ %VSZ %CPU COMMAND
626 625 root R 1956 1% 64% tar xzvf abc.tar.gz
625 612 root S 1960 1% 12% tar xzvf abc.tar.gz
untarプロセスがCPUをあまり使用しないように制限する方法は? CPUを消費せずにuntarが実行されるたびに影響を受ける時間が重要なリアルタイムプロセスがあります。したがって、解凍は、いかなる方法でもCPUの40〜50%以上が使用されないように制限する必要があります。
答え1
cpulimit -fl 50 -- tar xzvf abc.tar.gz
男性CPU制限:
cpulimit -- limits the CPU usage of a process
-l, --limit=N
percentage of CPU allowed from 1 up. Usually 1 - 100, but can be
higher on multi-core CPUs. (mandatory)
-f, --foreground
run cpulimit in foreground while waiting for launched process to
finish
• cpulimit always sends the SIGSTOP and SIGCONT signals to a process,
both to verify that it can control it and to limit the average
amount of CPU it consumes. This can result in misleading (annoy‐
ing) job control messages that indicate that the job has been
stopped (when actually it was, but immediately restarted). This
can also cause issues with interactive shells that detect or other‐
wise depend on SIGSTOP/SIGCONT. For example, you may place a job
in the foreground, only to see it immediately stopped and restarted
in the background.
答え2
CPUが高すぎたり、CPUが完全に活用されて問題が発生したり、ジョブを高速に実行したくない場合にのみ、CPU使用率を制限する必要があります。
これを完全に活用しないのは、単に「アイドルタスク」にCPUサイクルを無駄にすることです。
問題が異なるプロセスが最初にそのCPUサイクルを取得したい場合は、解決策はtar
/の優先順位を下げることですgzip
。つまり、優先順位を上げることです。フレンドリー。
たとえば、次のようにします。
nice 20 tar...
そのうち20が最も高い好感度点数だ。これにより、tar
他のプロセスに少しのCPUサイクルが必要な場合、CPUサイクルはほとんどありませんが、システムに何もしない場合はまだ100%CPUが使用されます。
他のプロセスがリアルタイム優先順位を使用している場合、スケジューラは通常のプロセスよりもリアルタイムプロセスの優先順位を指定する必要があるため、そうする必要はありません。したがって、CPUは、プロセスが継続して変更するために使用できるリソースではない可能性があります。優先順位やCPU使用率を減らすことはtar
役に立ちません。
ionice
以下も使用できますtar
。
nice 20 ionice -c idle tar...
マニュアルionice
ページを引用すると、次のようになります。
怠惰 アイドルI / O優先順位で実行されるプログラムは、定義された猶予期間内に他のプログラムがディスクI / Oを要求しない場合にのみ、ディスク時間を取得します。アイドル入出力プロセスは、通常のシステム活動に影響を与えないでください。