防止 un tar 使用过多的 CPU

防止 un tar 使用过多的 CPU

我正在 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 时就会受到影响。因此,需要以某种方式限制解压,以便在任何时候都不会使用超过 40 - 50% 的 CPU。

答案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 优先级运行的程序才会获得磁盘时间。空闲 I/O 进程对正常系统活动的影响应该为零。

相关内容