Três processos do servidor consomem não mais do que 50% do CPU Dual Core

2

Eu tenho três processos em execução no processador Intel Core 2 Duo. De assistir a saída de 'top' e gráficos de carga de CPU (desenhada pelo MRTG, coleta de dados via SNMP) eu posso ver que a carga da CPU nunca é superior a 50% e, a maior parte do dia, quando esses processos estão ocupados um teto em 50%. Quero dizer, a carga da CPU cresce até 50% de manhã e fica lá até tarde da noite.

Meu primeiro pensamento foi que apenas um núcleo foi usado em 100%, dando 50% de ambos os processadores. Mas, como há três processos em execução e do 'topo' eu vejo que ambos os núcleos estão sendo carregados, então este não é o caso. O schedtool mostra que a afinidade da CPU para esses três processos está no padrão, 0x03, permitindo que eles usem ambos os núcleos. Se eu forçar um processo para um núcleo (schedtool -a 0x01) e dois outros para o segundo (schedtool -a 0x02), o uso cumulativo aumenta além de 50%.

Por que três processos parecem consumir apenas 50% de dois núcleos? Por que forçá-los a diferentes CPUs permite que o uso cresça mais alto? Alguma dica?

P.S. Processos em questão são servidores Counter-Strike.

    
por thor 03.01.2011 / 14:05

1 resposta

1

Com a afinidade da CPU, o sistema operacional pode evitar algumas opções de contexto e resultar em maior uso da CPU. Eu duvido que o ganho seria significativo, a menos que você tenha alguma rede alta ou disco IO.

O topo também resume os dados em vários núcleos e eu vi erros de arredondamento / matemática. Na parte superior, tente visualizar cada núcleo (pressione 1 enquanto estiver no topo). Isso lhe dará uma idéia melhor de como cada CPU é usada.

Do homem

The task's share of the elapsed CPU time since the last screen update, expressed as a percentage of total CPU time. In a true SMP environment, if 'Irix mode' is Off, top will operate in 'Solaris mode' where a task's cpu usage will be divided by the total number of CPUs. You toggle 'Irix/Solaris' modes with the 'I' interactive command.

Pode querer verificar o uso do sysstat para obter mais detalhes sobre as métricas da CPU. O comando mpstat irá ajudá-lo aqui:

mpstat -P ALL 
01:06:12 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
01:06:12 PM  all    0.06    0.00    0.02    1.84    0.00    0.00    0.03   98.05     96.39
01:06:12 PM    0    0.06    0.00    0.02    1.84    0.00    0.00    0.02   98.05     50.98
01:06:12 PM    1    0.58    0.00    0.67    1.81    0.00    0.00    4.10   92.85     50.98
01:06:12 PM    2    0.35    0.00    0.73    1.85    0.00    0.00    4.10   92.98     50.98
01:06:12 PM    3    0.12    0.00    0.38    1.06    0.00    0.00    4.09   94.35     50.98

vai cuspir todos os núcleos.

    
por 03.01.2012 / 19:04