Piping to nice?

1

Eu tenho o seguinte comando (simplificado):

mysqldump <databases> | bzip2 > backupfile.sql.bz2

Por alguma razão o processo do bzip2 enlouqueceu e levou a carga da CPU até 60. Eu não sei porque, mas eu espero que o uso de nice possa mitigá-lo no futuro, mas eu só quero legal no bzip2, não mysqldump.

Posso apenas alterá-lo para

mysqldump <databases> | nice bzip2 > backupfile.sql.bz2

ou eu tenho que fazer

nice mysqldump <databases> | bzip2 > backupfile.sql.bz2

Obrigado

    
por Ben Holness 11.04.2017 / 22:47

2 respostas

2

TL; DR : o comando correto é

mysqldump <databases> | nice bzip2 > backupfile.sql.bz2

O comando nice apenas altera a gentileza do comando que recebe como argumento direto. Ele não se aplica a todo o pipeline ou a uma cadeia de comandos se você apenas escrevê-lo no início da linha.

Portanto:

  • mysqldump <databases> | nice bzip2 > backupfile.sql.bz2
    

    fará o que quiser e lançará mysqldump normalmente, enquanto bzip2 será executado com uma propriedade de gentileza elevada de +10.

  • nice mysqldump <databases> | bzip2 > backupfile.sql.bz2
    

    fará o oposto do que você deseja, ele tornará mysqldump legal, mas deixe bzip2 executar normalmente.

  • Uma terceira opção que permite executar todos os comandos do pipeline seria executá-los em um novo processo de shell com alta gentileza, como

    nice bash -c 'mysqldump <databases> | bzip2 > backupfile.sql.bz2'
    

No entanto, por favor, note que aumentar o niceness de um processo não necessariamente reduz seu uso de CPU. Contanto que você ainda tenha recursos de CPU, um bom processo continuará a usar o máximo de tempo de CPU que puder e requerer. Somente se sua CPU estiver sobrecarregada (o que significa que seus processos em execução solicitam um tempo total de CPU maior do que o que você pode oferecer), os processos agradáveis retrocederão e deixarão a CPU dar mais prioridade aos processos normais ou não agradáveis.

    
por Byte Commander 11.04.2017 / 23:10
1

Se você quer apenas um bom bzip escolha a primeira versão.

    
por Kamil 11.04.2017 / 22:55