/var/log/syslog에는 다음이 포함됩니다.
Jul 31 13:45:01 ray-desktop CRON[5667]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Jul 31 13:45:50 ray-desktop org.gnome.Shell.desktop[1689]: [2036:2054:0731/134550.778035:ERROR:socket_stream.cc(219)] Closing stream with result -2
Jul 31 13:47:51 ray-desktop rasdaemon[695]: <...>-35 [-41071872] 0.001327: mce_record: 2019-07-31 12:27:04 -0400 bank=8, status= 8c2001000001110b, corrected filtering (some unreported errors in same region) Generic CACHE Level-3 Generic Error, mci=Corrected_error Threshold based error status: green, mca=corrected filtering (some unreported errors in same region) Generic CACHE Level-3 Generic Error Large number of corrected cache errors. System operating, but might leadto uncorrected errors soon, cpu_type= Intel generic architectural MCA, cpu= 0, socketid= 0, misc= 31c0, addr= 2cee80000075b7d, mcgstatus=0, mcgcap= c09, apicid= 0
Jul 31 13:47:51 ray-desktop kernel: [18114.699831] mce: [Hardware Error]: Machine check events logged
Jul 31 13:47:51 ray-desktop rasdaemon[695]: cpu 00:rasdaemon: mce_record store: 0x556ec46df398
Jul 31 13:47:51 ray-desktop rasdaemon[695]: rasdaemon: register inserted at db
Jul 31 13:48:22 ray-desktop kernel: [18145.544922] perf: interrupt took too long (5187 > 5062), lowering kernel.perf_event_max_sample_rate to 38500
그 다음에는 13:55:53에 다시 시작 로그가 표시됩니다.
내가 아는 한, "mce" 로깅은 위에서 언급한 "rasdaemon"으로 대체되었습니다.
$ find /sys/kernel/debug/tracing -type f \! -empty
아무것도 발견되지 않았습니다.
이 디렉터리에는 22,000개 이상의 파일이 있으며 모두 비어 있으며 재부팅 시 생성되었습니다.
rasdaemon이 정보를 저장하는 곳인가요? 그렇다면 재부팅 후 모든 정보가 0으로 재설정되면 어떻게 될까요?
답변1
아래의 모든 내용은 일반적 으로 /sys
커널의 가상 파일 시스템입니다./sys/kernel/debug/tracing
추적하다. 이것은 와는 아무 관련이 없습니다 rasdaemon
.
/ 매개변수로 시작하면 rasdaemon
내 시스템에 있는 Sqlite3 데이터베이스에 이벤트가 저장됩니다. 이 데이터베이스는 를 사용하여 확인할 수 있습니다.-r
--record
/var/lib/rasdaemon/ras-mc_event.db
ras-mc-ctl --errors
답변2
- rasdaemon에 대한 로그는 syslog/journald를 통해 보고됩니다.
rasdaemon 프로그램은 Linux 커널 추적 이벤트에서 플랫폼 안정성, 가용성 및 서비스 가능성(RAS) 보고서를 모니터링하는 데몬입니다. 이러한 추적 이벤트는 /sys/kernel/debug/tracing에 기록되며 syslog/journald를 통해 보고됩니다.
https://github.com/mchehab/rasdaemon/blob/master/man/rasdaemon.1.in
Journalctl을 통해 로그를 가져올 수 있습니다.
#journalctl | tail -n 100
Jul 12 20:27:24 localhost.localdomain rasdaemon[39806]: <idle>-0 [-85410864] 0.000960: mc_event: 2023-07-12 20:24:45 +0800 1 Corrected error: single-symbol chipkill ECC on unknown memory (mc: 0 address: 0x400abb3a400 grain: 0 APEI location: node:0 card:5 module:0 rank:1 bank_group:0 bank_address:3 device:0 row:174 column:1280 chip_id:0 status(0x0000000000000400): Storage error in DRAM memory)
Jul 12 20:27:24 localhost.localdomain rasdaemon[39806]: cpu 19:rasdaemon: mc_event store: 0xaaaab9491ff8
Jul 12 20:27:24 localhost.localdomain rasdaemon[39806]: rasdaemon: register inserted at db
- ras 이벤트는 커널에서 발생하는 추적 지점이며, debugfs를 통해 직접 모니터링할 수 있습니다.
# ls /sys/kernel/debug/tracing/events/ras/mc_event/
enable filter format hist id trigger
#cat /sys/kernel/debug/tracing/events/ras/mc_event/id
1188
# cd /sys/kernel/debug/tracing/events/ras/mc_event/
#echo 1 > enable
# cd /sys/kernel/debug/tracing/
# cat trace_pipe
<idle>-0 [074] dnh. 7251.551618: mc_event: 1 Corrected error: Single-symbol ChipKill ECC on unknown memory (mc:0 location:-1:-1:-1 address:0x40098e20900 grain:1 syndrome:0x00000000 APEI location: node:0 card:4 module:0 rank:1 bank_group:2 bank_address:0 row:99 col:64 chipID: 0 status(0x0000000000000400): Storage error in DRAM memory)
# cat trace
# tracer: nop
#
# entries-in-buffer/entries-written: 1/1 #P:128
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
<idle>-0 [075] d.h. 7323.829675: mc_event: 1 Corrected error: Single-symbol ChipKill ECC on unknown memory (mc:0 location:-1:-1:-1 address:0x40098e20900 grain:1 syndrome:0x00000000 APEI location: node:0 card:4 module:0 rank:1 bank_group:2 bank_address:0 row:99 col:64 chipID: 0 status(0x0000000000000400): Storage error in DRAM memory)
- 추적 지점은 rasdeamon에 의해 모니터링되며, 매개변수로 시작되면 결국 Sqlite3 데이터베이스에 지속적으로 저장됩니다
-r/--record
.
#systemctl status rasdaemon.service
● rasdaemon.service - RAS daemon to log the RAS events
Loaded: loaded (/usr/lib/systemd/system/rasdaemon.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2023-07-12 15:40:42 CST; 3s ago
Process: 40597 ExecStartPost=/usr/sbin/rasdaemon --enable (code=exited, status=0/SUCCESS)
Main PID: 40596 (rasdaemon)
Tasks: 1
Memory: 440.0K
CGroup: /system.slice/rasdaemon.service
└─40596 /usr/sbin/rasdaemon -f -r
#ras-mc-ctl --errors
Memory controller events:
1 2023-07-12 15:42:21 +0800 1 Info error(s): memory read error at CPU_SrcID#0_MC#0_Chan#0_DIMM#0 location: 0:0:0:-1, xxxx
No Extlog errors.
PCIe AER events:
1 2023-07-12 17:00:56 +0800 Corrected error: Data Link Protocol
MCE events:
1 2023-07-12 15:42:21 +0800 error: MEMORY CONTROLLER RD_CHANNEL0_ERR Transaction: Memory read error, mcg xxxx