最近我的 Dell Poweredge 2850 崩溃了,我将其追溯到 RAID 内存卡损坏。我更换了内存卡并重置了电池,然后服务器再次启动。
启动后,我注意到其中一个 CPU 总是达到 100%。通常是 CPU 1(第 2 个 CPU),但在大约 10 次启动中,有一次是 CPU 3(第 4 个 CPU)。
导致高负载的进程是 events/1(或 events/3,它发生在核心 3 上)。我查看了 dmesg,没有发现任何异常。有人能建议我如何才能找到导致 CPU 使用率过高的实际原因吗?
我还注意到,当我在启动时插入显示器时,CentOS 加载屏幕上的加载栏到达大约一半时屏幕变黑(不显示登录屏幕)。否则一切都会正常启动和运行。
服务器信息:
CentOS release 6.9 (Final)
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:
如果您想查看任何特定的配置文件或输出,请添加评论。
更新 1:
猫/ proc /中断
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
特区
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
顶部
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
更新2:
重新获得对盒子的物理访问权后,我完全用来自零件服务器的 PERC 控制器替换了它。我重新安装了内存卡和电池。由于新硬件导致 RAID 配置不匹配,我从磁盘恢复了它。启动后,我的 CPU 使用率仍然为 100%。
我拔掉 CMOS 电池并按住电源按钮 10 秒钟,重置了 BIOS/CMOS。重新启动并设置 RAID 以再次从硬盘读取数据。CPU 仍为 100%。
我运行yum update
并重启。仍然是 100%。下面是显示各个 CPU 的顶部。
顶部
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
特区
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
猫/ proc /中断
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
更新 3:
我在 GRUB 中的内核命令中添加了 noapic 和 nolapic 参数。以下是 top 和 cat /proc/interrupts 的结果
顶部
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
猫/ proc /中断
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
我还尝试启动另一个更旧版本的内核(Centos 6.7),结果与以前相同:随机核心的 CPU 使用率为 100%。
更新 4:
我被另一个项目分散了注意力,让服务器运行了几个小时。在关闭之前,我检查了 top,发现 CPU 使用率已降至正常水平(每核不到 1%)。我重新启动以查看问题是否会再次出现,但并没有。我想知道是什么原因造成的,如果有人有任何建议,我愿意继续尝试不同的方法来找出原因。我注意到的唯一异常是 /var/spool/mail/root 中的一条消息:
Invalid system activity file: /var/log/sa//sa04
这是在我检查顶部之前生成的。
更新 5:
我找到了问题的根源!当我休息去处理其他项目时,我拔掉了显示器的电源并随身携带。当我再次检查(通过 SSH)时,CPU 使用率正常。当我回想可能发生了什么变化时,我唯一能想到的就是显示器。为了验证这个理论,我在插入显示器的情况下重新启动。瞧!100% CPU 使用率。我拔掉显示器的电源,CPU 使用率立即下降。
所以现在我想知道插入显示器时是什么原因导致 CPU 占用率升高?
更新 6:
串行通信
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]
更新7:
将 noacpi 和 nomodeset 添加到启动选项后,CPU 使用率问题就消失了。CentOS 还启动到登录屏幕,而不是在加载屏幕中间使显示器变黑。这说明了什么?
答案1
似乎是由megaraid
驱动程序 (中断 46) 引起的 IRQ 风暴。这可能是由不正确的 BIOS/驱动程序设置或硬件故障引起的。
您可以尝试:
- 更新您的 Dell PERC 驱动程序和固件
- 使用不同的(较旧/较新)内核版本
- 重置服务器 CMOS/BIOS 和/或更新其固件
- 更换受影响的硬件。