Предотвращение использования un tar слишком большого количества процессора

Ответ аналогичен чоробе (я написал это, не видя вашего, клянусь!), Но обрабатывает регистр заголовка без жесткого кодирования:

#!/usr/bin/perl
use strict;
use warnings;

my %links = (
    yahoo => "www.yahoo.com",
    google => "www.google.com",
);
$links{"the $_"} = $links{$_} for keys %links;

while (<>) {
    s{\\MakeLink\[(.+?)\]\{\}}{
        sprintf "\\MakeLink[%s]{%s}", 
            $1, 
            exists $links{$1} ? $links{$1}
                              : join " ", map {ucfirst lc} split " ", $1;
    }eg;
    print;
}

Запуск:

$ perl link.pl input
A very popular site on the internet was
\MakeLink[yahoo]{www.yahoo.com} but was surpassed by
\MakeLink[google]{www.google.com} due to its  
MakeLink[search engine]{}.

Due to its dominance
\MakeLink[the google]{www.google.com} has had to deal with
\MakeLink[antitrust issues]{Antitrust Issues}.
1
17.09.2018, 07:50
2 ответа
 cpulimit -fl 50 -- tar xzvf abc.tar.gz

лимит процессора:

   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.
1
27.01.2020, 23:42

Ограничивать загрузку ЦП следует только в том случае, если он перегревается или возникает какая-либо проблема, которая может возникнуть при полной загрузке ЦП или когда вы не хотите, чтобы задача выполнялась так быстро.

Если его не использовать полностью, это просто тратит циклы ЦП на «бездействующую задачу»

Если проблема в том, что вы предпочитаете, чтобы другой процесс получал эти циклы ЦП с приоритетом, то решение состоит в том, чтобы понизить приоритет tar/ gzipили, другими словами, увеличить его приятность .

Например, используя:

nice 20 tar...

Где 20 — высшая любезность. Таким образом, tarполучит немного циклов ЦП, если другие процессы потребуют их, но по-прежнему будет использовать 100% ЦП, когда системе больше нечего делать.

Теперь, если ваш другой процесс действительно использует приоритеты реального времени, вам не нужно этого делать, так как планировщик должен отдавать приоритет процессам реального времени над обычными процессами, поэтому может случиться так, что ЦП не является ресурсом, который ваш процесс не может удержаться, и ни изменение приоритета, ни снижение использования ЦП tarне помогут.

Вы также можете использовать ioniceнаtar:

nice 20 ionice -c idle tar...

Цитирование справочной страницы ionice:

Idle A program running with idle I/O priority will only get disk time when no other program has asked for disk I/O for a defined grace period. The impact of an idle I/O process on normal system activity should be zero.

1
27.01.2020, 23:42

Теги

Похожие вопросы