O processo do ksoftirqd sobrecarrega a CPU com alta largura de banda e várias conexões de rede

3

Eu tenho um servidor de 10GBit com proxmox 2.1 instalado. Há um contêiner OpenVZ rodando com o Ubuntu 10,04 64 bits. Posso obter 200-300MB / seg com wget de servidores internos do datacenter (-O / dev / null) que está bem. No entanto, se houver várias conexões, não é possível obter mais de 800MBit / seg no total.

Eu tenho um servidor web apache2 que funciona como um proxy e acessa os dados de vários outros (não apenas servidores internos do centro de dados). Seu único proxy, então o O disco rígido não é acessado (ao lado dos arquivos de registro, é claro). Como este servidor tem dois SSDs, é muito improvável que esta é a razão. Assim que 800MBit são atingidos, eu só recebo 300kb / seg de servidores internos do data-center com "wget -O / dev / null" ", mesmo no host próprio sistema, não dentro do contêiner OpenVZ.

Eu notei que o processo ksoftirqd / 0 está requerendo Carga da CPU (até 100%):

 4 root      20   0     0    0    0 R   78  0.0 67:38.99 ksoftirqd/0 # (78% in this case)

Às vezes, também, o processo events / 0 requer muitos recursos de CPU e parece competir com o ksoftirqd / 0 pela potência da CPU:

 35 root      20   0     0    0    0 R   50  0.0 18:04.63 events/0
  4 root      20   0     0    0    0 R   50  0.0 24:37.64 ksoftirqd/0

A saída do topo da potência da CPU é assim:

Cpu(s): 13.9%us,  7.3%sy,  0.0%ni, 64.0%id,  0.2%wa,   0.0%hi, 14.6%si,  0.0%st

Como você pode ver, o si é muito alto, que normalmente deveria ficar em 0. Além disso, o disco rígido não é o gargalo. (0,2% wating).

Eu também tenho outros 1-Gigabit-Servers com a mesma configuração. Eles chegam a 900MBit / seg, o que é bom para um 1GBit servidor. No entanto, há também uma alta carga de ksoftirqd / 0 (60-70%).

Atualmente, há cerca de 300 MBit passando pelo servidor de 10 GB e o processo ksoftirqd / 0 fica com 0% de CPU.

No entanto, no final da tarde, quando o tráfego aumenta, vai até 100 e corta a largura de banda a 800MB.

Talvez haja um problema com o OpenVZ? Eu também poderia instalar o Ubuntu diretamente no servidor sem proxmox apenas para testes, mas seria melhor se eu pudesse fique com proxmox / OpenVZ.

No entanto, é importante que eu possa usar pelo menos alguns GBit com este servidor assim que eu precisar. Claro também com várias conexões.

Tanto quanto eu posso ler a saída de lspci -vv , meu cartão suporta MSI-X.

O sistema tem um processador Intel® Xeon® Processor E5606 (8M Cache, 2.13 GHz, 4.80 GT/s Intel® QPI)

Esta é minha placa de rede:

root@ns231828:~# lspci  | grep -i network
02:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
02:00.1 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
05:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
05:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

Também enviei a saída higienizada de lshw aqui: link

Esse também é o conteúdo do link lspci -vv :

Eu tenho um "ambiente de teste" com um pequeno script em lote que baixa arquivos de teste de velocidade de muitos servidores (na verdade eu peguei apenas a lista de iso do ubuntu). Eu sou capaz de alcançar 2 gbit nesse ambiente.

depois que eu tentei ethtool -C eth2 rx-usecs 1022 , consegui atingir 3,5 gigabit.

no entanto com configurações rx-usecs otimizadas (eu tentei os valores 1 e 1000 também, 1022 ficaram melhores) em um ambiente ao vivo com clientes reais que só ganharam cerca de 100 mbit.

Eu carreguei os outros resultados do ethtool -k e ethtool -c aqui: link

Alguém já teve problemas semelhantes ou tem uma dica de como posso resolver esse problema?

    
por The Shurrican 06.05.2012 / 02:15

0 respostas