Encontrando fonte de 100% de uso da CPU

4

Recentemente, tive uma falha em um Dell Poweredge 2850 que remeti a um cartão de memória RAID com defeito. Troquei o cartão e reiniciei a bateria e fiz o servidor inicializar novamente.

Após a inicialização, notei que uma das CPUs sempre chega a 100%. Geralmente é o CPU 1 (2ª CPU), mas de cerca de 10 botas foi o CPU 3 (4ª CPU) uma vez.

O processo que está causando a carga alta é eventos / 1 (ou eventos / 3 a única vez que aconteceu no núcleo 3). Eu olhei através do dmesg e não achei nada anormal. Alguém tem alguma sugestão sobre como eu posso encontrar o que realmente está causando o uso da CPU?

Eu também notei que quando eu conecto um monitor na inicialização, na tela de carregamento do CentOS, as barras de carregamento ficam na metade do caminho, então a tela fica preta (nenhuma tela de login é mostrada). Caso contrário, tudo é iniciado e executado normalmente.

Informação do servidor:

CentOS release 6.9 (Final)

Informação da CPU:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 15
model       : 4
model name  : Intel(R) Xeon(TM) CPU 3.00GHz
stepping    : 3
microcode   : 5
cpu MHz     : 3000.000
cache size  : 2048 KB
physical id : 3
siblings    : 2
core id     : 0
cpu cores   : 1
apicid      : 6
initial apicid  : 6
fpu     : yes
fpu_exception   : yes
cpuid level : 5
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc pebs bts pni dtes64 monitor ds_cpl cid cx16 xtpr
bogomips    : 5985.27
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 48 bits virtual
power management:

Por favor, adicione um comentário, se você quiser ver quaisquer arquivos de configuração específicos ou saídas.

UPDATE 1:

cat / proc / interrupts

            CPU0       CPU1       CPU2       CPU3       
   0:        133          0          0          1   IO-APIC-edge      timer
   1:          0          0          0          2   IO-APIC-edge      i8042
   4:          0          0          0          2   IO-APIC-edge    
   8:          0          0          0          1   IO-APIC-edge      rtc0
   9:          0          0          0          0   IO-APIC-fasteoi   acpi
  12:          0          0          0          4   IO-APIC-edge      i8042
  14:          0          0          0        147   IO-APIC-edge      ata_piix
  15:          0          0          0          0   IO-APIC-edge      ata_piix
  16:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb2
  18:          0          0          0        301   IO-APIC-fasteoi   uhci_hcd:usb4, radeon
  19:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb3
  23:          0          0          0         49   IO-APIC-fasteoi   ehci_hcd:usb1
  46:          0          0       3804       4767   IO-APIC-fasteoi   megaraid
  64:          0        288          0        104   IO-APIC-fasteoi   eth0
 NMI:          0          1          0          0   Non-maskable interrupts
 LOC:      24325      76909      25269      31039   Local timer interrupts
 SPU:          0          0          0          0   Spurious interrupts
 PMI:          0          1          0          0   Performance monitoring interrupts
 IWI:          0          0          0          0   IRQ work interrupts
 RES:       2295        703       1357        886   Rescheduling interrupts
 CAL:       3986        421        156        175   Function call interrupts
 TLB:        526         95        803       3519   TLB shootdowns
 TRM:          0          0          0          0   Thermal event interrupts
 THR:          0          0          0          0   Threshold APIC interrupts
 MCE:          0          0          0          0   Machine check exceptions
 MCP:          1          1          1          1   Machine check polls
 ERR:          0
 MIS:          0

sar

Linux 2.6.32-696.16.1.el6.x86_64 (HOSTNAME)     12/30/2017  _x86_64_    (4 CPU)

09:57:37 AM       LINUX RESTART

10:00:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
10:10:01 AM     all      0.10      0.07     21.09      1.49      0.00     77.25
10:20:01 AM     all      0.15      0.00     21.00      0.00      0.00     78.85
10:30:01 AM     all      0.11      0.00     20.92      0.00      0.00     78.97
10:40:01 AM     all      0.09      0.00     20.81      0.01      0.00     79.09
Average:        all      0.11      0.02     20.96      0.37      0.00     78.54

12:35:32 PM       LINUX RESTART

topo

Tasks: 164 total,   2 running, 162 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us, 20.8%sy,  0.0%ni, 78.9%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   8058904k total,   453272k used,  7605632k free,    22240k buffers
Swap:  8191996k total,        0k used,  8191996k free,   174064k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                               
   20 root      20   0     0    0    0 R 99.9  0.0   5:50.67 events/1                                                                                                                                              

UPDATE 2:

Quando recuperei o acesso físico à caixa, troquei completamente o controlador PERC por um de um servidor de peças. Recoloquei o cartão de memória e a bateria. Como a configuração do RAID não foi compatível com o novo hardware, eu o restaurei do disco. Após a inicialização, obtive o mesmo uso de 100% da CPU.

Reinicializei o BIOS / CMOS puxando a bateria do CMOS e mantendo pressionado o botão de energia por 10 segundos. Reinicie e configure o RAID para ler novamente a partir do disco rígido. CPU ainda em 100%.

Eu corri yum update e reiniciei. Ainda 100%. Abaixo está a parte superior mostrando CPUs individuais.

topo

top - 11:59:19 up 21 min,  1 user,  load average: 1.00, 0.97, 0.72
Tasks: 164 total,   2 running, 162 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.3%us,  0.3%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  0.3%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,100.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8058904k total,   456996k used,  7601908k free,    22480k buffers
Swap:  8191996k total,        0k used,  8191996k free,   173792k cached

sar

Linux 2.6.32-696.16.1.el6.x86_64 (HOSTNAME)     01/04/2018  _x86_64_    (4 CPU)

10:40:45 AM       LINUX RESTART

10:50:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
11:00:01 AM     all      0.08      0.00     20.86      0.00      0.00     79.06
11:40:01 AM     all      0.00      0.00      0.00      0.00      0.00      0.00
11:50:01 AM     all      0.08      0.00     20.87      0.02      0.00     79.03
12:00:01 PM     all      0.08      0.00     20.89      0.00      0.00     79.02
Average:        all      0.00      0.00     20.83      0.00      0.00     79.78

cat / proc / interrupts

            CPU0       CPU1       CPU2       CPU3       
   0:        133          0          0          6   IO-APIC-edge      timer
   1:          0          0          0          2   IO-APIC-edge      i8042
   4:          0          0          0          2   IO-APIC-edge    
   8:          0          0          0          1   IO-APIC-edge      rtc0
   9:          0          0          0          0   IO-APIC-fasteoi   acpi
  12:          0          0          0          4   IO-APIC-edge      i8042
  14:          0          0          0        147   IO-APIC-edge      ata_piix
  15:          0          0          0          0   IO-APIC-edge      ata_piix
  16:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb2
  18:          0          0        302        302   IO-APIC-fasteoi   uhci_hcd:usb4, radeon
  19:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb3
  23:          0          0          0         53   IO-APIC-fasteoi   ehci_hcd:usb1
  46:          0          0       4074       4912   IO-APIC-fasteoi   megaraid
  64:          0       4917          0        108   IO-APIC-fasteoi   eth0
 NMI:          0          0          0         28   Non-maskable interrupts
 LOC:     197497     401002     148354    1361329   Local timer interrupts
 SPU:          0          0          0          0   Spurious interrupts
 PMI:          0          0          0         28   Performance monitoring interrupts
 IWI:          0          0          0          0   IRQ work interrupts
 RES:       5891       1183       2828       8249   Rescheduling interrupts
 CAL:       3641       1441        156        184   Function call interrupts
 TLB:        837       3324        833        202   TLB shootdowns
 TRM:          0          0          0          0   Thermal event interrupts
 THR:          0          0          0          0   Threshold APIC interrupts
 MCE:          0          0          0          0   Machine check exceptions
 MCP:          6          6          6          6   Machine check polls
 ERR:          0
 MIS:          0

UPDATE 3:

Eu adicionei os argumentos noapic e nolapic ao comando Kernel no GRUB. Aqui estão os resultados de top e cat / proc / interrupts

topo

top - 14:55:01 up 5 min,  1 user,  load average: 1.76, 1.27, 0.58
Tasks: 111 total,   2 running, 109 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.4%us, 99.6%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8059152k total,   442016k used,  7617136k free,    22252k buffers
Swap:  8191996k total,        0k used,  8191996k free,   173556k cached

cat / proc / interrupts

          CPU0       
  0:     447518    XT-PIC-XT-PIC    timer
  1:          2    XT-PIC-XT-PIC    i8042
  2:          0    XT-PIC-XT-PIC    cascade
  3:          1    XT-PIC-XT-PIC  
  4:          4    XT-PIC-XT-PIC  
  5:         50    XT-PIC-XT-PIC    ehci_hcd:usb1
  7:       8825    XT-PIC-XT-PIC    uhci_hcd:usb4, radeon, megaraid
  8:          1    XT-PIC-XT-PIC    rtc0
  9:          0    XT-PIC-XT-PIC    acpi
 10:          0    XT-PIC-XT-PIC    uhci_hcd:usb3
 11:       1586    XT-PIC-XT-PIC    uhci_hcd:usb2, eth0
 12:          4    XT-PIC-XT-PIC    i8042
 14:        148    XT-PIC-XT-PIC    ata_piix
 15:          0    XT-PIC-XT-PIC    ata_piix
NMI:          0   Non-maskable interrupts
LOC:          0   Local timer interrupts
SPU:          0   Spurious interrupts
PMI:          0   Performance monitoring interrupts
IWI:          0   IRQ work interrupts
RES:          0   Rescheduling interrupts
CAL:          0   Function call interrupts
TLB:          0   TLB shootdowns
TRM:          0   Thermal event interrupts
THR:          0   Threshold APIC interrupts
MCE:          0   Machine check exceptions
MCP:          2   Machine check polls
ERR:          0
MIS:          0

Eu também tentei inicializar outra versão muito mais antiga do Kernel (Centos 6.7), que produziu o mesmo resultado de antes: 100% de uso da CPU em um núcleo aleatório.

UPDATE 4:

Eu me distraí com outro projeto e deixei o servidor ligado por algumas horas. Eu chequei top antes de desligá-lo e notei que o uso da CPU caiu de volta ao normal (menos de 1% por núcleo). Eu reiniciei para ver se o problema iria ressurgir e isso não aconteceu. Eu quero saber o que causou isso e estou disposto a continuar tentando coisas diferentes para descobrir se alguém tem alguma sugestão. A única coisa que notei fora do comum era uma mensagem em / var / spool / mail / root:

Invalid system activity file: /var/log/sa//sa04

Isso foi gerado antes de eu conferir o topo.

UPDATE 5:

Eu encontrei a fonte do problema! Quando fiz uma pausa para trabalhar no meu outro projeto, desliguei o monitor e levei comigo. Quando eu chequei de volta (via SSH), o uso da CPU era normal. Quando pensei no que poderia ter mudado, a única coisa em que consegui pensar foi no monitor. Para testar a teoria eu reiniciei com o monitor conectado. Voila! 100% de uso da CPU. Eu desliguei o monitor e o uso da CPU caiu instantaneamente.

Então, agora estou me perguntando o que está causando o uso da CPU quando um monitor está conectado?

UPDATE 6:

lspci

00:00.0 Host bridge: Intel Corporation E7520 Memory Controller Hub (rev 09)
00:02.0 PCI bridge: Intel Corporation E7525/E7520/E7320 PCI Express Port A (rev 09)
00:04.0 PCI bridge: Intel Corporation E7525/E7520 PCI Express Port B (rev 09)
00:05.0 PCI bridge: Intel Corporation E7520 PCI Express Port B1 (rev 09)
00:06.0 PCI bridge: Intel Corporation E7520 PCI Express Port C (rev 09)
00:1d.0 USB controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (rev 02)
00:1d.1 USB controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (rev 02)
00:1d.2 USB controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (rev 02)
00:1d.7 USB controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev c2)
00:1f.0 ISA bridge: Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE Controller (rev 02)
01:00.0 PCI bridge: Intel Corporation 80332 [Dobson] I/O processor (A-Segment Bridge) (rev 06)
01:00.2 PCI bridge: Intel Corporation 80332 [Dobson] I/O processor (B-Segment Bridge) (rev 06)
02:0e.0 RAID bus controller: Dell PowerEdge Expandable RAID controller 4 (rev 06)
05:00.0 PCI bridge: Intel Corporation 6700PXH PCI Express-to-PCI Bridge A (rev 09)
05:00.2 PCI bridge: Intel Corporation 6700PXH PCI Express-to-PCI Bridge B (rev 09)
06:07.0 Ethernet controller: Intel Corporation 82541GI Gigabit Ethernet Controller (rev 05)
07:08.0 Ethernet controller: Intel Corporation 82541GI Gigabit Ethernet Controller (rev 05)
09:0d.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV100 [Radeon 7000 / Radeon VE]

UPDATE 7:

Adicionar noacpi e nomodeset às opções de inicialização fez com que o problema de uso da CPU desaparecesse. O CentOS também inicializou em uma tela de login em vez de escurecer a tela de carregamento do monitor. O que isso indica?

    
por user2395126 30.12.2017 / 16:41

1 resposta

2

Parece uma tempestade de IRQ causada pelo driver megaraid (interrupção 46). Isso pode ser causado por uma configuração incorreta do BIOS / driver ou por um hardware defeituoso.

Você pode tentar:

  • atualize seus drivers e firmware Dell PERC
  • use uma versão do kernel diferente (mais antiga / mais recente)
  • redefina o CMOS / BIOS do servidor e / ou atualize seu firmware
  • altere o hardware afetado.
por 30.12.2017 / 19:37