Alto uso de CPU 32bit Linux App

0

Estou usando a distribuição Linux do Debian 8 em duas configurações diferentes de PC. A primeira configuração que você notará abaixo é a que estou usando há muito tempo. Esta configuração está usando 100% cpu em horários de pico, então eu decidi comprar um novo PC com especificações muito mais altas. Estou executando um aplicativo antigo de 32 bits que foi lançado há mais de 10 anos, chamado samp03svr. Este é um aplicativo de thread único, então eu procurei apenas pelo CPU de alta freqüência. Os processadores Xeon não me ajudaram. O aplicativo precisa de uma frequência de CPU mais alta do que o número de núcleos.

Aqui estão as configurações do meu PC:

  1. Uma configuração mais antiga Motherboard: ASUS P8H61-M Processador: Intel i5-3570 a 3,4 GHz RAM: 2x8 GB Kingston 1333 MHz

  2. Uma nova configuração MotherBoard: B250M-D3H-CF Processador: CPU i7-7700K a 4.20GHz RAM: 2x8 GB Kingston 2133 MHz

O que eu esperaria da nova configuração é um uso de CPU muito menor, mas, surpresa, isso não está acontecendo. De fato, o uso da CPU é cerca de 5 vezes maior do que a configuração mais antiga. Os testes que fiz foram feitos para a mesma quantidade de carga de trabalho, com o mesmo sistema operacional e os mesmos drivers. Eu tentei até mesmo desativar multi-thread, mas não há diferença de uso da CPU.

O que você recomendaria fazer?

    
por Stefan Nechifor 16.03.2017 / 11:11

1 resposta

0

Se o seu objetivo é atender à demanda durante os horários de pico que você menciona, eu consideraria, se possível, executar o programa do servidor nas duas máquinas que você tem agora e colocá-las atrás de um balanceador de carga, como haproxy.

Por outro lado, se o seu objetivo é reduzir o consumo de CPU do seu programa de servidor, você tem algumas opções.

Você pode diminuir a prioridade do seu processo para que o kernel agende seu tempo de CPU de maneira que ele não domine sua CPU. Isso pode ser feito usando os comandos nice ou renice . No Debian, os valores de prioridade variam de -20 a +19, e o valor padrão (iniciando um processo sem usar legal) é 0. Quanto maior o valor, menor a prioridade. Torna-se fácil lembrar se você pensar nisso como "o mais agradável um processo, mais ele está disposto a desistir de seu tempo de CPU para outros processos".

Inicie seu programa assim usando valores diferentes de gentileza:

nice -n +12 /path/to/your/program

Se o seu programa já está em execução, você pode usar renice com seu pid:

#first find the pid
pgrep your_program_name
#or
ps aux | grep your_program_name

#now use the pid here
renice -n +12 pid_of_your_program

#or if you are comfortable combining these
renice -n +12 $(pgrep your_program_name)

Outra opção é usar uma ferramenta chamada cpulimit . Ele permite que você execute um programa e defina a porcentagem máxima da CPU que você deseja permitir.

#install the package
apt-get install cpulimit

#run your program, for example limiting to 25%
cpulimit -l 25 /path/to/your/program
    
por 18.03.2017 / 07:02