logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Dell Precision 7810, Ubuntu 22.04 – ECC, znaczenie ce_noinfo_count i monitorowanie liczników EDAC

_jta_ 05 Paź 2025 10:04 192 11
REKLAMA
  • #1 21710475
    _jta_
    Specjalista elektronik
    Posty: 48995
    Pomógł: 3209
    Ocena: 4238
    Linux Ubuntu 22.04 LTS, komputer Dell Precision Tower 7810. W katalogu /sys/devices/system/edac/mc/ są podkatalogi mc0/, mc1/, mc2/, mc3/ , a w każdym z nich pliki: ce_count, ce_noinfo_count, ue_count, ue_noinfo_count, reset_counters, uevent i parę innych. Zapewne pliki *_count zawierają liczniki błędów pamięci (ce_* skorygowanych, ue_* niekorygowalnych), reset_counters zeruje te liczniki; nie wiem, co może pojawić się na uevent (jak czytam, to jest pusty); z liczników za każdym razem odczytuję 0.

    1. Czym się mają odróżniać liczniki z "noinfo"?
    2. Jak ustalić, czy w systemie nie chodzi jakiś program, który odczytuje te liczniki, i przy niezerowym stanie zeruje je i zapisuje informację w logu?
  • REKLAMA
  • #2 21731684
    _jta_
    Specjalista elektronik
    Posty: 48995
    Pomógł: 3209
    Ocena: 4238
    Komputer jest włączony od 19 dni. Wszystkie liczniki są 0 (zero) - czy one w ogóle zliczają błędy, czy przez 19 dni żadnego błędu nie było?

    Chyba te liczniki nie są resetowane: tam są pliki "seconds_since_reset" - zawartość jest o 8 mniejsza od pierwszej wartości w /proc/uptime; teraz dałem polecenie wyzerowania liczników dla jednej pamięci, i ten czas się wyzerował (odczytałem 10 sekund, teraz już jest 100).

    Natomiast nie wiem, czy aby one zliczały błędy pamięci, nie trzeba czegoś załadować; i nie wiem, czy ten sprzęt obsługuje zliczanie błędów.

    Aha: AI (od Google) dało informację, że "ce_count" zlicza wszystkie korygowalne błędy, natomiast "ce_noinfo_count" tylko te, dla których brak informacji pozwalającej zidentyfikować slot DIMM, gdzie one wystąpiły.
  • #3 21732420
    _jta_
    Specjalista elektronik
    Posty: 48995
    Pomógł: 3209
    Ocena: 4238
    @ElektrodaBot - chciałbym sprawdzić, czy w komputerze Dell Precision Tower 7810 z systemem Linux Ubuntu 22.04 wykrywanie błędów pamięci korygowanych przez ECC działa, a jeśli nie, to spowodować, żeby działało - być może do tego trzeba załadować jakiś moduł. Co należy zrobić, by sprawdzić wykrywanie błędów pamięci? Jak ustalić, czy potrzebne moduły są załadowane - jakie powinny być? Jest załadowany sb_edac.
  • REKLAMA
  • #4 21732427
    ElektrodaBot
    AI od OpenAI ChatGPT4
    Posty: 8846
    Pomógł: 361
    Ocena: 948
    _jta_ napisał:
    @ElektrodaBot - chciałbym sprawdzić, czy w komputerze Dell Precision Tower 7810 z systemem Linux Ubuntu 22.04 wykrywanie błędów pamięci korygowanych przez ECC działa, a jeśli nie, to spowodować, żeby działało - być może do tego trzeba załadować jakiś moduł. Co należy zrobić, by sprawdzić wykrywanie błędów pamięci? Jak ustalić, czy potrzebne moduły są załadowane - jakie powinny być? Jest załadowany sb_edac.
    Bezpośrednia odpowiedź

    - W Twoim Precision Tower 7810 (Xeon E5 v3/v4, C610/C612) właściwy sterownik EDAC do kontrolerów pamięci to sb_edac (CONFIG_EDAC_SBRIDGE). Skoro masz go załadowany, to jądro już rejestruje błędy ECC, a katalogi mc0…mc3 i liczniki w sysfs są właściwym miejscem obserwacji. (cateee.net)
    - Zerowe wartości ce_count/ue_count po 19 dniach są normalne i zwykle oznaczają brak błędów. seconds_since_reset to czas od ostatniego zerowania liczników (lub od inicjalizacji sterownika) – stąd różnica względem /proc/uptime. (kernel.org)
    - ce_noinfo_count i ue_noinfo_count zliczają odpowiednio skorygowane i nieskorygowalne błędy, dla których sterownik nie potrafi jednoznacznie przypisać zdarzenia do konkretnego modułu DIMM/gniazda. (lwn.net)
    - Aby mieć czytelne logi w user‑space, zainstaluj i włącz rasdaemon; nie resetuje on liczników EDAC, tylko rejestruje zdarzenia (z EDAC trace/MCE). edac-utils/ras-mc-ctl mogą raportować stan i podpisywać DIMM‑y etykietami. (launchpad.net)
    - Dla ścisłości: i7core_edac dotyczy Nehalem/Westmere, a skx_edac – Xeon Scalable (Skylake). Dla E5 v3/v4 używasz właściwego sb_edac. (android.googlesource.com)
    - Model 7810 fabrycznie wspiera RDIMM ECC DDR4 – sprzętowo jesteś „po właściwej stronie”. (dell.com)

    Poniżej kompletna procedura weryfikacji i dobre praktyki.

    ---

    Szczegółowa analiza i procedura krok‑po‑kroku

    1) Warstwa sprzętowa (BIOS/UEFI i pamięć)
    - Upewnij się, że:
    - w BIOS/UEFI włączone są ECC i (opcjonalnie) Memory Patrol Scrub/Correctable Error logging (nazwy opcji zależne od wersji BIOS Della),
    - obsadzenie DIMM‑ów jest zgodne z instrukcją (kanały/gniazda per CPU).
    - 7810 obsługuje RDIMM ECC DDR4 i to jest wymagane do raportowania CE/UE z kontrolera pamięci. (dell.com)

    2) Warstwa jądra – co musi być załadowane
    - Minimalny zestaw:
    - edac_core (może być wkompilowany; nie zawsze pokaże się w lsmod),
    - sb_edac – sterownik MC dla Sandy/Ivy/Haswell‑EP/‑EX oraz Broadwell‑EP/‑EX (Xeon E5 v3/v4). (cateee.net)
    - Sprawdzenie:
    - lsmod | grep -E '(^| )edac'
    - dmesg -T | grep -i edac (szukaj linii „EDAC sbridge MCx…” – „sbridge” to właśnie sb_edac).
    - Błędne tropy (tu prostuję mylące odpowiedzi z sieci):
    - i7core_edac → Nehalem/Westmere (Xeon 55xx/56xx), nie E5 v3/v4. (android.googlesource.com)
    - skx_edac → rodzina Skylake Server (Xeon Scalable), nie E5 v3/v4. (docs.oracle.com)

    3) Struktura sysfs EDAC i interpretacja liczników
    - /sys/devices/system/edac/mc/mcX:
    - ce_count/ue_count – zagregowane liczniki błędów dla danego MC,
    - ce_noinfo_count/ue_noinfo_count – błędy bez możliwości zmapowania do konkretnego DIMM/slotu (np. ograniczenia kontrolera/firmware). (kernel.org)
    - seconds_since_reset – czas od ostatniego resetu liczników (per MC),
    - reset_counters – zapis dowolnej wartości wyzeruje liczniki danego MC. (kernel.org)
    - Liczba mc0…mc3 w 7810 ma sens: dual‑socket i dwa „home agents”/MC na gniazdo daje zwykle 4 instancje.

    4) Warstwa user‑space – rejestrowanie i etykietowanie
    - Zainstaluj:
    - sudo apt install rasdaemon
    - (opcjonalnie) sudo apt install edac-utils
    - Uruchom i włącz w autostarcie:
    - sudo systemctl enable --now rasdaemon
    - Użycie:
    - ras-mc-ctl --status (status sterowników EDAC),
    - ras-mc-ctl --summary oraz rasdaemon --show‑stats (podsumowania),
    - edac-util -v (czytelny zrzut CE/UE z sysfs).
    - ras-mc-ctl --guess-labels / --register-labels aby wypełnić pliki dimm_label i mieć w logach fizyczne oznaczenia slotów (A1/B1… zależnie od płyty). (launchpad.net)
    - Uwaga historyczna: mcelog jest w Linuksie traktowany jako przestarzały; współczesne dystrybucje preferują rasdaemon. (cateee.net)

    5) Czy coś „zeruje” liczniki?
    - Standardowo ani rasdaemon, ani edac‑utils nie resetują liczników EDAC – one je tylko czytają, a zdarzenia zapisują do bazy/ journala. (man.docs.euro-linux.com)
    - Jeżeli chcesz to zweryfikować:
    - tymczasowo załóż audyt na pliki reset_counters:
    - sudo auditctl -w /sys/devices/system/edac/mc/mc0/reset_counters -p wa -k edac_reset
    - (powtórz dla mc1…mc3)
    - sprawdzaj: sudo ausearch -k edac_reset
    - seconds_since_reset ~ uptime oznacza brak resetów od startu; różnica kilku sekund zwykle wynika z chwili inicjalizacji sterownika.

    6) Skrócony „zestaw komend zdroworozsądkowych”
    - Potwierdzenie ECC w DMI:
    - sudo dmidecode -t memory | egrep -i 'error|ecc|type: ddr4'
    - Sterownik i inicjalizacja:
    - lsmod | grep edac
    - dmesg -T | grep -i 'edac\|mce\|sbridge'
    - Podgląd liczników (zagregowanych i per‑DIMM):
    - for i in /sys/devices/system/edac/mc/mc*/; do echo "== $i =="; cat $i/{mc_name,size_mb,ce_count,ce_noinfo_count,ue_count,ue_noinfo_count,seconds_since_reset} 2>/dev/null; done
    - find /sys/devices/system/edac/mc -name 'dimm*_ce_count' -o -name 'dimm*_ue_count' -print -exec cat {} \;

    7) Generowanie zdarzeń do testów (opcjonalne, zaawansowane)
    - W produkcji trudno „wymusić” realne CE. Do testów ścieżki raportowania można użyć APEI/EINJ (jeśli BIOS wspiera „WHEA/ACPI Error Injection”):
    - sprawdź, czy w jądrze jest CONFIG_ACPI_APEI_EINJ i DEBUGFS,
    - sudo modprobe einj; cd /sys/kernel/debug/apei/einj
    - echo 0x8 > error_type (Memory Correctable)
    - ustaw parametry (np. param1/param2 adres/maska), potem echo 1 > error_inject
    - Uwaga: wstrzykiwanie „UE” może spowodować panic/reboot – tylko w labie. (chiark.greenend.org.uk)

    8) Parametry EDAC przydatne w diagnostyce
    - Możesz włączyć logowanie CE/UE z poziomu parametrów modułu (runtime):
    - sudo sh -c 'echo 1 > /sys/module/edac_core/parameters/edac_mc_log_ce'
    - sudo sh -c 'echo 1 > /sys/module/edac_core/parameters/edac_mc_log_ue'
    - Panic on UE (domyślnie rozsądne w serwerach; ostrożnie w stacji roboczej):
    - sudo sh -c 'echo 1 > /sys/module/edac_core/parameters/edac_mc_panic_on_ue' (kernel.org)

    ---

    Odpowiedzi na Twoje pytania z wątku

    - „Czy liczniki w ogóle zliczają błędy, czy żadnego nie było?” – zliczają, jeśli sterownik działa (u Ciebie: sb_edac). 0 po 19 dniach zwykle oznacza brak błędów. Przy dobrej pamięci i stabilnym zasilaniu to normalny widok przez miesiące.
    - „seconds_since_reset jest ~8 s mniejsze niż uptime” – to najpewniej czas od startu sterownika/ostatniego resetu liczników, a nie od startu systemu. Każdy mcX może mieć inny „punkt zerowy”. (kernel.org)
    - „noinfo liczniki – co to?” – błędy, których nie da się zmapować do konkretnego DIMM‑a/slotu; nadal wartościowe diagnostycznie (sygnalizują problem), ale z mniejszą lokalizowalnością. (lwn.net)
    - „Czy coś może resetować liczniki?” – typowo nie; rasdaemon/edac-utils nie kasują. Użyj auditd, jeżeli chcesz to potwierdzić w swoim systemie. (man.docs.euro-linux.com)

    ---

    Dobre praktyki i co jeszcze można zrobić

    - Ustal etykiety DIMM‑ów w EDAC (ras-mc-ctl --guess-labels / --register-labels), aby logi podawały fizyczne sloty – ułatwia serwis. (systutorials.com)
    - Monitoruj na żywo: journalctl -kf | grep -i -E 'edac|mce|ecc|sbridge|ghes'
    - Zadbaj o aktualny BIOS i pakiet rasdaemon (w Jammy istnieją różnice jakościowe między wersjami – w razie potrzeby rozważ nowsze wydanie z PPA/źródeł, jeśli trafisz na błąd). (launchpad.net)
    - Jeśli w logach widzisz „GHES/APEI” zamiast „sbridge”, to raportowanie może iść przez firmware (też OK, ale nie zawsze będzie pełna lokalizacja DIMM).

    ---

    Pytania uzupełniające (żeby domknąć diagnostykę)

    - Poproszę o wynik:
    - uname -r
    - lsmod | grep -E '(^| )edac'
    - dmesg -T | grep -i 'edac\|sbridge\|ghes\|mce'
    - sudo dmidecode -t memory | egrep -i 'error|ecc|total width|data width' -A2
    - Czy masz rasdaemon uruchomiony (systemctl status rasdaemon)?
    - Ile CPU/DIMM‑ów jest faktycznie obsadzonych (żeby zrozumieć mc0..mc3)?

    Jeżeli podeślesz te wyniki, doprecyzuję mapowanie MC→kanały→sloty i sprawdzę, czy wszystko jest w 100% optymalnie skonfigurowane.

    ---

    Źródła (najważniejsze):
    - Sterownik dla E5 v3/v4: CONFIG_EDAC_SBRIDGE → moduł sb_edac; Haswell/Broadwell‑EP/‑EX wsparcie. (cateee.net)
    - Dokumentacja sysfs EDAC (ce_count/ue_count, ce_noinfo_count/ue_noinfo_count, seconds_since_reset). (kernel.org)
    - Narzędzia: rasdaemon (rola i tryb działania) i edac‑utils. (launchpad.net)
    - i7core_edac (Nehalem/Westmere) i skx_edac (Skylake Server) – dla porównania nazw sterowników. (android.googlesource.com)
    - Dell Precision 7810 – wsparcie RDIMM ECC DDR4. (dell.com)
    - Parametry EDAC (log_ce/log_ue/panic_on_ue). (kernel.org)
    - APEI/EINJ – wstrzykiwanie błędów do testów ścieżki logowania. (chiark.greenend.org.uk)

    ID wątku: 4147481. Data: 26/10/2025.
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
  • #5 21732563
    _jta_
    Specjalista elektronik
    Posty: 48995
    Pomógł: 3209
    Ocena: 4238
    @ElektrodaBot - spróbowałem "modprobe einj" - moduł nie załadował się, dostałem komunikat:
    modprobe: ERROR: could not insert 'einj': No such device
    "dmesg" pokazuje "[czas] EINJ: EINJ table not found."

    "uname -r": 6.8.0-85-generic

    "lsmod | grep -E '(^| )edac'": nic, jest tylko moduł "sb_edac"; "config" kernela ma CONFIG_EDAC_SUPPORT=y i CONFIG_EDAC=y.

    "dmesg -T | grep -i 'edac\|sbridge\|ghes\|mce'": nic, za dużo czasu minęło od startu, natomiast /var/log/dmesg zawiera:
    Kod: Text
    Zaloguj się, aby zobaczyć kod


    "dmidecode" pokazuje: 4x "Physical Memory Array" i 8x "Memory Device";
    - wszystko to ma "Error Information Handle: Not Provided";
    - te "Physical Memory Array" mają "Error Correction Type: Multi-bit ECC";
    - z tych "Memory Device" dla 4 jest informacja o pamięci RAM (i tam jest Total Width 72, Data Width 64, a dla 4 nie, bo jest 8 slotów, ale w nich tylko 4 moduły pamięci.
  • REKLAMA
  • #6 21732573
    ElektrodaBot
    AI od OpenAI ChatGPT4
    Posty: 8846
    Pomógł: 361
    Ocena: 948
    _jta_ napisał:
    @ElektrodaBot - spróbowałem "modprobe einj" - moduł nie załadował się, dostałem komunikat:
    modprobe: ERROR: could not insert 'einj': No such device
    "dmesg" pokazuje "[czas] EINJ: EINJ table not found."

    "uname -r": 6.8.0-85-generic

    "lsmod | grep -E '(^| )edac'": nic, jest tylko moduł "sb_edac"; "config" kernela ma CONFIG_EDAC_SUPPORT=y i CONFIG_EDAC=y.

    "dmesg -T | grep -i 'edac\|sbridge\|ghes\|mce'": nic, za dużo czasu minęło od startu, natomiast /var/log/dmesg zawiera:
    [ 0.984704] kernel: EDAC MC: Ver: 3.0.0
    [ 7.974820] kernel: EDAC sbridge: Seeking for: PCI ID 8086:2fa0
    ... (kilkadziesiąt podobnych linii)
    [ 7.975133] kernel: EDAC sbridge: Seeking for: PCI ID 8086:2fbb
    [ 7.975255] kernel: EDAC MC0: Giving out device to module sb_edac controller Haswell SrcID#1_Ha#0: DEV 0000:ff:12.0 (INTERRUPT)
    [ 7.975334] kernel: EDAC MC1: Giving out device to module sb_edac controller Haswell SrcID#0_Ha#0: DEV 0000:df:12.0 (INTERRUPT)
    [ 7.975404] kernel: EDAC MC2: Giving out device to module sb_edac controller Haswell SrcID#1_Ha#1: DEV 0000:ff:12.4 (INTERRUPT)
    [ 7.975479] kernel: EDAC MC3: Giving out device to module sb_edac controller Haswell SrcID#0_Ha#1: DEV 0000:df:12.4 (INTERRUPT)
    [ 7.975481] kernel: EDAC sbridge: Ver: 1.1.2

    "dmidecode" pokazuje: 4x "Physical Memory Array" i 8x "Memory Device";
    - wszystko to ma "Error Information Handle: Not Provided";
    - te "Physical Memory Array" mają "Error Correction Type: Multi-bit ECC";
    - z tych "Memory Device" dla 4 jest informacja o pamięci RAM (i tam jest Total Width 72, Data Width 64, a dla 4 nie, bo jest 8 slotów, ale w nich tylko 4 moduły pamięci.
    Bezpośrednia odpowiedź

    - Masz prawidłowo działające wykrywanie ECC: sterownik sb_edac został skojarzony z czterema kontrolerami pamięci (mc0–mc3), a EDAC MC jest aktywny – potwierdzają to Twoje logi dmesg.
    - Brak możliwości załadowania „einj” (EINJ table not found) oznacza tylko, że BIOS nie udostępnia ACPI/APEI Error Injection; to nie ma wpływu na realne wykrywanie błędów ECC.
    - Zerowe liczniki ce_count/ue_count po 19 dniach to normalny, dobry znak (brak błędów). seconds_since_reset liczy czas od inicjalizacji sterownika lub ostatniego resetu liczników, nie od startu systemu.
    - „ce_noinfo_count/ue_noinfo_count” zliczają błędy, których nie da się przypisać do konkretnego DIMM.
    - Jeśli chcesz mieć pełny, czytelny log zdarzeń, zainstaluj i włącz rasdaemon; on nie resetuje liczników EDAC.

    Poniżej szczegółowa procedura, jak to domknąć i jak samemu zweryfikować każdy element.

    ---

    Szczegółowa analiza i procedura krok‑po‑kroku

    1) Co już wiemy z Twoich danych
    - Kernel: 6.8.0-85-generic z włączonym EDAC (CONFIG_EDAC_SUPPORT=y, CONFIG_EDAC=y).
    - dmesg (ze startu):
    - „EDAC MC: Ver: 3.0.0” – rdzeń EDAC pracuje,
    - „EDAC sbridge … Giving out device … Haswell … MC0–MC3” – właściwy sterownik (sb_edac) przejął cztery kontrolery pamięci, co odpowiada 2×CPU × 2 HA (Home Agent) = 4 instancje.
    - dmidecode:
    - „Error Correction Type: Multi-bit ECC”,
    - „Total Width 72, Data Width 64” – typowy podpis RDIMM ECC (64 bity danych + 8 bitów ECC).
    - „Error Information Handle: Not Provided” – BIOS nie udostępnia przez SMBIOS uchwytów do rekordów błędów; to częste i nie blokuje EDAC.

    Wniosek: warstwa sprzętowa i jądro są skonfigurowane poprawnie. EDAC liczy i będzie raportował CE/UE.

    2) Dlaczego nie działa „einj” i co z tym zrobić
    - „modprobe einj: No such device” + „EINJ: EINJ table not found” = firmware nie udostępnia tabeli ACPI EINJ (b. typowe dla stacji roboczych).
    - To moduł do sztucznego wstrzykiwania błędów (do testów), nie do normalnego monitoringu. Nie jest potrzebny.
    - Jeśli chcesz to potwierdzić:
    - sudo apt install acpica-tools
    - sudo acpidump -n EINJ
    - Brak wyjścia = brak tabeli (tak jak widzisz w dmesg).

    3) Jak sprawdzić, że wszystko zlicza i będzie logowane (warstwa user‑space)
    - Zainstaluj narzędzia:
    - sudo apt update
    - sudo apt install rasdaemon edac-utils auditd
    - sudo systemctl enable --now rasdaemon
    - Szybki przegląd:
    - ras-mc-ctl --status
    - ras-mc-ctl --summary
    - edac-util -v
    - journalctl -u rasdaemon --since today
    - Włączenie czytelnego logowania z edac_core (na żywo do kernela/journala):
    - sudo sh -c 'echo 1 > /sys/module/edac_core/parameters/edac_mc_log_ce'
    - sudo sh -c 'echo 1 > /sys/module/edac_core/parameters/edac_mc_log_ue'
    - (sprawdź: cat /sys/module/edac_core/parameters/edac_mc_log_{ce,ue})
    - Opcjonalnie „panic on UE” (ostrożnie na stacji roboczej!):
    - sudo sh -c 'echo 1 > /sys/module/edac_core/parameters/edac_mc_panic_on_ue'

    4) Czy coś resetuje liczniki? Jak to wykryć
    - Domyślnie nic w Ubuntu nie resetuje ce_count/ue_count.
    - Aby mieć 100% pewności, nałóż reguły auditd:
    - for f in /sys/devices/system/edac/mc/mc*/reset_counters; do sudo auditctl -w "$f" -p wa -k edac_reset; done
    - podejrzyj ewentualne zapisy: sudo ausearch -k edac_reset
    - seconds_since_reset ~ uptime (z małym offsetem) = nikt nie resetował.

    5) Jak „patrzeć” na liczniki wygodnie
    - Podsumowanie per‑MC:
    - for i in /sys/devices/system/edac/mc/mc*/; do echo "== $i =="; cat $i/{mc_name,ce_count,ce_noinfo_count,ue_count,ue_noinfo_count,seconds_since_reset} 2>/dev/null; done
    - Per‑DIMM (jeśli sterownik ma mapę gniazd):
    - find /sys/devices/system/edac/mc -name 'dimm*_ce_count' -o -name 'dimm*_ue_count' -print -exec cat {} \;

    6) Etykiety slotów DIMM (ułatwia serwis)
    - Spróbuj:
    - sudo ras-mc-ctl --guess-labels
    - sudo ras-mc-ctl --print-labels
    - Jeśli BIOS nie daje pełnych danych, ras-mc-ctl użyje heurystyk; czasem i tak zostaną „noinfo”.

    7) BIOS/UEFI – co warto sprawdzić
    - Jeśli dostępne, włącz/pozostaw włączone:
    - Memory Patrol Scrub (okresowe skanowanie pamięci),
    - Logowanie błędów pamięci/ECC do SEL,
    - Aktualny BIOS i mikrocode (w Ubuntu: sudo apt install intel-microcode).
    - Poprawne obsadzenie DIMM (kanały/kolejność) – dla dual‑CPU ma znaczenie dla wydajności i spójnego raportowania.

    8) Czy da się „sprowokować” błąd ECC bez EINJ?
    - Realnych CE nie „wymusisz” programowo bez wsparcia platformy.
    - Stres test (memtester, mprime/prime95, stress-ng) zwiększa aktywność RAM i może ujawnić niestabilność, ale zwykle nie spowoduje korekcji ECC w zdrowym sprzęcie.
    - Narzędzia pokroju mce-inject istnieją jako debug, ale nie są częścią standardowych jąder Ubuntu i nie polecam ich na maszynie produkcyjnej.

    9) Odpowiedzi na Twoje szczegółowe punkty
    - Dlaczego 4× Physical Memory Array i 8× Memory Device? SMBIOS bywa prezentowany per‑kontroler/soket; przy 2 CPU i 8 slotach to normalne. Ważne, że 4 z 8 slotów są obsadzone i mają 72‑bitową szerokość.
    - Brak „Error Information Handle”: normalne w wielu desktopach/stacjach; nie wpływa na zliczanie, tylko ogranicza precyzję mapowania błędu do slotu (stąd „noinfo”).
    - Brak „edac_core” w lsmod: OK – rdzeń EDAC możesz mieć wkompilowany (CONFIG_EDAC=y), więc nie występuje jako moduł w lsmod, ale ma swoje parametry w /sys/module/edac_core/parameters/.

    ---

    „Checklist” – szybka autoweryfikacja na Twojej maszynie

    1) Kernel/sterowniki:
    - grep -E 'EDAC|Sbridge|sbridge|Haswell' /var/log/dmesg
    - lsmod | grep sb_edac (już masz)
    - test -d /sys/devices/system/edac/mc/mc0

    2) Logowanie:
    - sudo apt install rasdaemon edac-utils
    - systemctl enable --now rasdaemon
    - journalctl -u rasdaemon --since "today"

    3) Parametry EDAC:
    - sudo sh -c 'echo 1 > /sys/module/edac_core/parameters/edac_mc_log_ce'
    - sudo sh -c 'echo 1 > /sys/module/edac_core/parameters/edac_mc_log_ue'

    4) Audyt resetów:
    - for f in /sys/devices/system/edac/mc/mc*/reset_counters; do sudo auditctl -w "$f" -p wa -k edac_reset; done

    5) (Opcjonalnie) BIOS:
    - sprawdź Patrol Scrub / logowanie ECC i zaktualizuj BIOS.

    ---

    Co jeszcze mogę sprawdzić na życzenie

    Podeślij, proszę:
    - wyjście: ras-mc-ctl --status oraz --summary,
    - zawartość: ls -R /sys/devices/system/edac/mc/mc*/dimm* (z nazwami plików w środku),
    - wynik: journalctl -k -b 0 | grep -i -E 'edac|sbridge|ghes|mce'.

    Na tej podstawie mogę zmapować MC0..MC3 do CPU/kanałów i ocenić, czy jest szansa na pełne etykiety slotów bez „noinfo”.

    ID wątku: 4147481. Data: 26/10/2025.
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
  • #7 21733286
    _jta_
    Specjalista elektronik
    Posty: 48995
    Pomógł: 3209
    Ocena: 4238
    Katalogi /sys/devices/system/edac/mc/mc*/dimm*/ zawierają pliki: dimm_ce_count (zawsze 0), dimm_dev_type (zawsze x4), dimm_edac_mode (zawsze S4ECD4ED), dimm_label (różne), dimm_location (zawsze "channel 0 slot 0"), dimm_mem_type (zawsze "Registered-DDR4"), dimm_ue_count (zawsze 0), size: (zawsze 32768); oraz katalog power/.

    Zawartości "dimm_label" w kolejności mc0, mc1, mc2, mc3: "CPU_SrcID#1_Ha#0_Chan#0_DIMM#0", "CPU_SrcID#0_Ha#0_Chan#0_DIMM#0", "CPU_SrcID#1_Ha#1_Chan#0_DIMM#0", "CPU_SrcID#0_Ha#1_Chan#0_DIMM#0".

    @ElektrodaBot - jak rozumieć zawartość dimm_edac_mode równą S4ECD4ED?

    "journalctl -k -b 0 | grep -i -E 'edac|sbridge|ghes|mce'" nic nie wypisuje - może za dużo czasu minęło od startu; chyba te informacje są w /var/log/dmesg (podawałem je w #5); nie wiem, jak można to powiąza np. z wartościami "Locator" w wynikach "dmidecode -t memory".
  • REKLAMA
  • #8 21733290
    ElektrodaBot
    AI od OpenAI ChatGPT4
    Posty: 8846
    Pomógł: 361
    Ocena: 948
    _jta_ napisał:
    Katalogi /sys/devices/system/edac/mc/mc*/dimm*/ zawierają pliki: dimm_ce_count (zawsze 0), dimm_dev_type (zawsze x4), dimm_edac_mode (zawsze S4ECD4ED), dimm_label (różne), dimm_location (zawsze "channel 0 slot 0"), dimm_mem_type (zawsze "Registered-DDR4"), dimm_ue_count (zawsze 0), size: (zawsze 32768); oraz katalog power/.

    Zawartości "dimm_label" w kolejności mc0, mc1, mc2, mc3: "CPU_SrcID#1_Ha#0_Chan#0_DIMM#0", "CPU_SrcID#0_Ha#0_Chan#0_DIMM#0", "CPU_SrcID#1_Ha#1_Chan#0_DIMM#0", "CPU_SrcID#0_Ha#1_Chan#0_DIMM#0".

    @ElektrodaBot - jak rozumieć zawartość dimm_edac_mode równą S4ECD4ED?

    "journalctl -k -b 0 | grep -i -E 'edac|sbridge|ghes|mce'" nic nie wypisuje - może za dużo czasu minęło od startu; chyba te informacje są w /var/log/dmesg (podawałem je w #5); nie wiem, jak można to powiąza np. z wartościami "Locator" w wynikach "dmidecode -t memory".
    Bezpośrednia odpowiedź

    - dimm_edac_mode = S4ECD4ED oznacza schemat ECC typu „Chipkill” dla modułów z kośćmi x4: Single 4‑bit symbol Error Correct, Double 4‑bit symbol Error Detect. W praktyce (RDIMM x4 na E5 v3/v4) daje to SDDC – korekcję danych z całego pojedynczego układu DRAM x4.
    - To, że dimm_dev_type = x4 i wszystkie DIMM‑y mają 32768 MB, jest spójne z powyższym – masz 32‑GB RDIMM x4 w każdym z widocznych gniazd logicznych.
    - dimm_location = „channel 0 slot 0” to ograniczenie prezentacji w sb_edac dla tej platformy; prawdziwe mapowanie jest w dimm_label (CPU_SrcID/Ha/Chan/DIMM).
    - Brak wpisów z grepem w journalctl -k -b 0 po długim czasie od startu jest normalny (rotacja/wycinka starych komunikatów). Wpisy startowe znajdziesz w /var/log/dmesg lub w trwałym journalu, jeśli jest włączony.

    Poniżej wyjaśnienia i praktyczne kroki.

    ---

    Co dokładnie oznacza S4ECD4ED

    - S4EC = Single 4‑bit symbol Error Correct: korekcja jednego „symbolu” 4‑bitowego (czyli całego układu DRAM o organizacji x4).
    - D4ED = Double 4‑bit symbol Error Detect: detekcja dwóch niezależnych 4‑bitowych symboli (dwóch układów).
    - W języku marketingowym odpowiada to „Chipkill (x4)”. Na platformach Xeon E5 v3/v4 z RDIMM x4 daje tzw. SDDC (Single Device Data Correction) – system koryguje pełną awarię jednego chipa pamięci x4 bez utraty danych.
    - Zwykłe ECC (SEC/DED) koryguje 1 bit i wykrywa 2 bity; S4ECD4ED jest wyraźnie silniejsze, bo operuje na symbolach (całych układach x4).

    Uwagi praktyczne:
    - Dla kości x8 podobna odporność zwykle wymaga trybu lockstep; dla x4 – nie jest konieczny, SDDC jest dostępne w standardowym trybie.

    ---

    Dlaczego dimm_location zawsze „channel 0 slot 0”

    - W sterowniku sb_edac dla Haswell/Broadwell‑EP pole dimm_location bywa uogólnione; dokładne położenie niesie dimm_label:
    - CPU_SrcID#N – który procesor (socket),
    - Ha#M – który Home Agent (IMC) w danym CPU,
    - Chan#K – kanał w obrębie tego IMC,
    - DIMM#L – pozycja DIMM w kanale.
    - U Ciebie wszystkie cztery moduły są na „Chan#0” każdego z czterech HA (mc0..mc3). To typowe przy 4 modułach – po jednym na pierwszy kanał każdego HA, aby zachować symetrię.

    ---

    Jak skorelować EDAC z „Locator” (dmidecode)

    Automat:
    - Zainstaluj rasdaemon i użyj etykiet:
    - sudo apt install rasdaemon edac-utils
    - sudo ras-mc-ctl --guess-labels
    - sudo ras-mc-ctl --print-labels
    - Jeśli znasz fizyczne nazwy z instrukcji Della (np. CPU1_DIMM_A1), możesz je zapisać do sysfs:
    - echo 'CPU1_DIMM_A1' | sudo tee /sys/devices/system/edac/mc/mc0/dimm0/dimm_label
    - … i zarejestrować trwałe etykiety: sudo ras-mc-ctl --register-labels

    Manualnie (najpewniejsze):
    1) Wypisz obsadzone moduły z DMI:
    - sudo dmidecode -t memory | egrep -A3 'Locator:|Size:|Serial Number:'
    2) Jeżeli dostęp do SPD nie jest zablokowany, odczytaj SPD i numery seryjne:
    - sudo apt install i2c-tools
    - sudo modprobe eeprom
    - sudo decode-dimms
    3) Zrób tabelę:
    - powiąż SrcID#0/#1 z CPU0/CPU1,
    - zwykle Ha#0 = dwa pierwsze kanały CPU, Ha#1 = dwa kolejne,
    - Chan#0 to „pierwszy” kanał danego HA (często odpowiada slotom A1/C1 itp.; nazewnictwo zależy od Della).
    4) Zweryfikuj: na czas testu wyjmij jeden moduł i zobacz, który dimm_label zniknie – to daje 100% pewności mapowania do „Locator”.

    W praktyce dla 4 modułów w 2×CPU E5 v3/v4 typowy układ to po jednym DIMM na pierwszy kanał każdego HA, czyli coś jak CPU0:A1 i C1 oraz CPU1:A1 i C1 (nazwa literowa zależy od producenta; patrz schemat w manualu tej płyty).

    ---

    Dlaczego nie widać wpisów w journalctl i jak je odzyskać

    - Po długim uptime bufor kernela i/lub dziennik mogą nie zawierać najstarszych linii (rotacja).
    - Co zrobić:
    - Włącz trwały journald (jeśli nie był):
    sudo mkdir -p /var/log/journal
    sudo systemctl restart systemd-journald
    - Odczytaj pełny dziennik kernela z grepem:
    journalctl -k --since '2025-10-01' | grep -i -E 'edac|sbridge|ghes|mce'
    - Obejrzyj zachowane logi startowe:
    sudo less /var/log/dmesg
    - Na żywo podczas pracy:
    journalctl -kf | grep -i -E 'edac|mce|hardware error'

    ---

    Szybka kontrola spójności (Twoje dane)

    - dimm_dev_type = x4, dimm_mem_type = Registered-DDR4, size = 32768 → 32‑GB RDIMM x4, idealne do S4ECD4ED.
    - dimm_edac_mode = S4ECD4ED na wszystkich czterech DIMM → spójne z RDIMM x4 i E5 v3/v4.
    - dimm_label: cztery kombinacje SrcID#0/1 × Ha#0/1, zawsze Chan#0/DIMM#0 → po jednym DIMM w pierwszym kanale każdego HA.
    - Zerowe dimm_ce_count/dimm_ue_count oraz ce_count/ue_count → brak błędów; to normalne.

    ---

    Co jeszcze warto włączyć

    - Czytelne logowanie CE/UE:
    - echo 1 | sudo tee /sys/module/edac_core/parameters/edac_mc_log_ce
    - echo 1 | sudo tee /sys/module/edac_core/parameters/edac_mc_log_ue
    - Patrol Scrub i logowanie ECC w BIOS/UEFI (jeśli opcje są dostępne).
    - Aktualny BIOS i intel‑microcode (sudo apt install intel-microcode).

    Jeżeli podasz konkretne „Locator” z dmidecode dla 4 obsadzonych modułów, przygotuję mapę Locator ↔ CPU_SrcID/Ha/Chan/DIMM dla Twojej 7810 i gotowe polecenia ras-mc-ctl --register-labels, abyś miał jednoznaczne nazwy w logach.
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
  • #9 21734472
    _jta_
    Specjalista elektronik
    Posty: 48995
    Pomógł: 3209
    Ocena: 4238
    @ElektrodaBot - wciąż nie mogę powiązać nazw gniazd pamięci, podawanych przez "dmidecode", z katalogami mc0..mc3 w /sys/devices/system/edac/mc/ - "ras-mc-ctl" nie daje informacji o etykietach, nie znajduję ich w /var/log/dmesg ani nigdzie w /sys/ i nie wiem, skąd "dmidecode" je bierze. Aha: w "/etc/edac/labels.db" nie ma płyty głównej tego komputera.
  • #10 21734479
    ElektrodaBot
    AI od OpenAI ChatGPT4
    Posty: 8846
    Pomógł: 361
    Ocena: 948
    _jta_ napisał:
    @ElektrodaBot - wciąż nie mogę powiązać nazw gniazd pamięci, podawanych przez "dmidecode", z katalogami mc0..mc3 w /sys/devices/system/edac/mc/ - "ras-mc-ctl" nie daje informacji o etykietach, nie znajduję ich w /var/log/dmesg ani nigdzie w /sys/ i nie wiem, skąd "dmidecode" je bierze. Aha: w "/etc/edac/labels.db" nie ma płyty głównej tego komputera.
    Bezpośrednia odpowiedź

    - dmidecode bierze nazwy gniazd (Locator/Bank Locator) bezpośrednio z tabel SMBIOS/DMI wystawianych przez firmware/BIOS. To inny „świat” niż nazewnictwo EDAC w jądrze – nie istnieje automatyczne, uniwersalne mapowanie Locator ↔ mcX/dimmY. (looklinux.com)
    - Na Ubuntu 22.04 rasdaemon/ras‑mc‑ctl szuka bazy etykiet nie w /etc/edac/…, lecz w /etc/ras/dimm_labels.d/ lub /etc/ras/dimm_labels.db. Dlatego nie widzisz etykiet, jeśli patrzysz w /etc/edac/. Użyj ras-mc-ctl --register-labels dopiero po utworzeniu własnego pliku w /etc/ras/dimm_labels.d/. (manpages.debian.org)
    - Żeby powiązać Locator z mc0..mc3 na Twojej platformie (sb_edac, Haswell/Broadwell‑EP), są trzy praktyczne drogi: (A) plik etykiet dla rasdaemon na bazie układu EDAC (polecane), (B) szybka weryfikacja „wyjmij‑jeden‑DIMM”, (C) odczyt SPD i korelacja po numerach seryjnych/PN.
    - Dla Twoich etykiet dimm_label:
    - mc0: CPU_SrcID#1_Ha#0_Chan#0_DIMM#0
    - mc1: CPU_SrcID#0_Ha#0_Chan#0_DIMM#0
    - mc2: CPU_SrcID#1_Ha#1_Chan#0_DIMM#0
    - mc3: CPU_SrcID#0_Ha#1_Chan#0_DIMM#0
    oznacza to po jednym module na gnieździe DIMM#0 i kanale Chan#0 każdego z dwóch Home Agentów (Ha#0 i Ha#1) w obu CPU (SrcID#0 i SrcID#1). To typowy układ „po jednym DIMM na pierwszy kanał każdego IMC”.
    Fizyczne nazwy (A1, C1, …) zależą od schematu producenta i nie są z jądra wywnioskowywane – dlatego trzeba je wprowadzić ręcznie (patrz niżej).
    - Sam T7810 ma 8 złączy (4 na CPU), co potwierdza manual Della – to pomoże przy układaniu mapy. (dl.dell.com)

    Poniżej procedura „krok po kroku”, która pozwoli Ci trwale związać nazwy z dmidecode z mc0..mc3 w EDAC.

    ---

    Jak zbudować mapę Locator ↔ EDAC na Dell Precision T7810

    1) Ustal identyfikatory płyty, które ras‑mc‑ctl użyje do dopasowania pliku etykiet:
    - Polecenie:
    - ras-mc-ctl --mainboard
    - lub: cat /sys/class/dmi/id/board_vendor; cat /sys/class/dmi/id/board_name
    - Te dwa łańcuchy (Vendor/Model) muszą dokładnie trafić do pierwszych dwóch linii Twojego pliku etykiet. (manpages.debian.org)

    2) Sprawdź układ warstw EDAC, żeby wiedzieć jak numerować „MC.TOP.MID.LOW”:
    - ras-mc-ctl --layout
    - Dla sb_edac zwykle dostaniesz układ wielowarstwowy, który (logicznie) odpowiada: MC (mcX) → „wyższa warstwa” (np. socket lub HA) → „kanał” → „slot DIMM”.
    - To właśnie te trzy (TOP.MID.LOW) indeksy – razem z numerem MC – wpisujesz do pliku etykiet. Format podaje dokumentacja (MC.TOP.MID.LOW). (manpages.debian.org)

    3) Zbierz nazwy fizyczne z firmware:
    - sudo dmidecode -t memory | egrep -A3 'Memory Device|Locator:|Size:'
    - Interesują Cię wypełnione pozycje (Size != “No Module Installed”) i ich „Locator” (np. CPU1_DIMM_A1, DIMM_A1, itp.). To będą etykiety widoczne dla serwisu – chcemy, żeby EDAC je wyświetlał. dmidecode czyta to z tabel SMBIOS/DMI. (looklinux.com)

    4) Utwórz własny plik etykiet rasdaemon:
    - Katalog i format (Ubuntu 22.04):
    - sudo mkdir -p /etc/ras/dimm_labels.d
    - sudo nano /etc/ras/dimm_labels.d/dell-t7810
    - Wzorzec zawartości:
    - Vendor: [dokładnie to, co zwraca --mainboard lub /sys/class/dmi/id/board_vendor]
    - Model: [dokładnie to, co zwraca --mainboard lub /sys/class/dmi/id/board_name]
    - <fizyczna_nazwa_z_dmidecode>: MC.TOP.MID.LOW
    - Przykład dla Twojej maszyny (DO DOPASOWANIA po sprawdzeniu --layout; poniżej przykład zgodny z podanymi dimm_label, każdy z nich to „slot 0 kanału 0” danego HA i CPU):
    - … załóżmy, że ras-mc-ctl --layout każe wpisać koordynaty jako mc.srcha.chan.slot:
    - mc1/dimm0 (CPU_SrcID#0_Ha#0_Chan#0_DIMM#0) → wpisz np. CPU0_DIMM_A1: 1.0.0.0
    - mc3/dimm0 (CPU_SrcID#0_Ha#1_Chan#0_DIMM#0) → CPU0_DIMM_C1: 3.0.0.0
    - mc0/dimm0 (CPU_SrcID#1_Ha#0_Chan#0_DIMM#0) → CPU1_DIMM_A1 lub CPU1_DIMM_E1: 0.0.0.0
    - mc2/dimm0 (CPU_SrcID#1_Ha#1_Chan#0_DIMM#0) → CPU1_DIMM_C1 lub CPU1_DIMM_G1: 2.0.0.0
    Uwaga: literowe nazwy (A1/C1/E1/G1) to konwencja producenta płyty. Dell w wielu platformach rozdziela kanały CPU0 (A–D) i CPU1 (E–H), ale dla T7810 finalnie oprzyj się na etykietach „Locator” z Twojego dmidecode, bo to te nazwy chcesz widzieć w logach. Sam format pliku jest udokumentowany i akceptowany przez ras‑mc‑ctl. (manpages.debian.org)

    5) Załaduj etykiety i sprawdź:
    - sudo systemctl restart rasdaemon
    - ras-mc-ctl --register-labels
    - ras-mc-ctl --print-labels (powinno pokazać Twoje nazwy z kolumny CONFIGURED LABEL → SYSFS CONTENTS). (manpages.debian.org)

    6) Jeżeli chcesz 100% pewności mapy (bez zgadywania):
    - Metoda „fizyczna”: wyłącz, wyjmij jeden wskazany moduł (np. ten, którego „Locator” to CPU1_DIMM_A1), uruchom i sprawdź, który mcX/dimmY zniknął – to najpewniejsza kalibracja. Następnie uzupełnij plik /etc/ras/dimm_labels.d/ zgodnie z obserwacją.
    - Metoda ze SPD (bez rozbierania, gdy SPD jest dostępne): odczytaj SPD i porównaj PN/serial z dmidecode:
    - sudo apt install i2c-tools; sudo modprobe i2c-i801 i2c-dev ee1004
    - sudo decode-dimms (dla DDR4 wymaga ee1004; narzędzie opisane w man)
    - Jeśli BIOS udostępnia I²C/SMBus, zobaczysz PN/SN modułów i dopasujesz je do „Locator” z dmidecode. (manpages.debian.org)

    7) Dodatkowe wskazówki i weryfikacja
    - Rasdaemon potrafi wypisać układ z EDAC: ras-mc-ctl --layout i zestawienie: ras-mc-ctl --error-count/--summary. Etykiety ułatwią od razu wskazanie fizycznego slotu w logach. (manpages.debian.org)
    - Dokumentacja jądra opisuje strukturę sysfs EDAC (mcX/dimmX, dimm_label, dimm_location itd.), co potwierdza, że to jądro wystawia topologię logiczną, ale nie zna nazw „Locator” z BIOS. (kernel.org)
    - Manual Della dla T7810 potwierdza 8 gniazd (4 na CPU), ale nie narzuca bezpośrednio liter A/C/E/G – te nazwy bierzesz z własnego dmidecode. (dl.dell.com)

    ---

    Dlaczego ras‑mc‑ctl „nie daje informacji o etykietach”

    - Bo domyślna baza z etykietami nie zawiera Twojej płyty. Na współczesnych dystrybucjach baza używana jest spod /etc/ras/… (a nie /etc/edac/…). Opcja --register-labels zadziała dopiero wtedy, gdy przygotujesz własny wpis „Vendor/Model + mapowania”. (manpages.debian.org)
    - --guess-labels może pokazać nazwy z DMI (o ile firmware wypełnił Bank Locator), ale to tylko podpowiedź do stworzenia pliku w /etc/ras/dimm_labels.d/. (manpages.debian.org)

    ---

    Szybki „check‑list” dla Twojej konfiguracji

    - Sprawdź, co ras‑mc‑ctl uznaje za Vendor/Model:
    - ras-mc-ctl --mainboard
    - Zobacz układ EDAC (współrzędne do pliku):
    - ras-mc-ctl --layout
    - Wypisz, co masz dziś w sysfs:
    - for d in /sys/devices/system/edac/mc/mc*/dimm*/dimm_label; do echo -n "$d: "; cat "$d"; done
    - Zadbaj o trwałe etykiety:
    - utwórz /etc/ras/dimm_labels.d/dell-t7810 zgodnie z powyższym i uruchom:
    - ras-mc-ctl --register-labels; ras-mc-ctl --print-labels

    Jeśli chcesz, podeślij wynik:
    - ras-mc-ctl --mainboard
    - ras-mc-ctl --layout
    - dmidecode -t memory | egrep -A2 'Locator:|Size:'
    Z tych trzech elementów przygotuję gotowy plik /etc/ras/dimm_labels.d/dell-t7810 pod Twoją płytę, tak by w logach ECC pojawiały się od razu „ludzkie” nazwy slotów.

    ---

    Źródła i odniesienia:
    - Man ras‑mc‑ctl – ścieżki bazy etykiet (/etc/ras/dimm_labels.d/…; --register-labels/--print-labels/--layout). (manpages.debian.org)
    - SUSE HPC Guide – format wpisu etykiet: „Vendor/Model” oraz „LABEL: MC.TOP.MID.LOW”. (documentation.suse.com)
    - Dokumentacja RAS jądra Linuksa – model EDAC i sysfs (/sys/devices/system/edac/mc, dimm_label/dimm_location). (kernel.org)
    - dmidecode – pola „Locator/Bank Locator” pochodzą z tabel SMBIOS/DMI udostępnianych przez BIOS/UEFI. (looklinux.com)
    - Dell Precision Tower 7810 Owner’s Manual – 8 slotów (4 na CPU) i ogólne wytyczne dla pamięci. (dl.dell.com)
    - SPD/DDR4 – decode‑dimms i sterownik ee1004 (jak czytać SPD na DDR4). (manpages.debian.org)

    ID wątku: 4147481. Data: 28/10/2025.
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
  • #11 21741620
    _jta_
    Specjalista elektronik
    Posty: 48995
    Pomógł: 3209
    Ocena: 4238
    @ElektrodaBot - dla płyty Dell 0GWHMW stosowanej w Dell Precision Tower 7810 "dmidecode -t memory" podaje nazwy (Locator): DIMM1_CPU1, DIMM3_CPU1, DIMM2_CPU1, DIMM4_CPU1, DIMM1_CPU2, DIMM3_CPU2, DIMM2_CPU2, DIMM4_CPU2; mam wrażenie (zdjęcia płyty, które znalazłem w sieci, nie są na tyle dobre, bym mógł wszystko przeczytać), że właśnie takie nazwy są na płycie przy gniazdach pamięci.

    Wciąż nie wiem, według czego mam ustalać powiązanie tych nazw z "dmidecode" plikami w "/sys/devices/system/edac/mc/" - tam pliki "dimm_label" zawierają np. "CPU_SrcID#1_Ha#1_Chan#0_DIMM#0" (są 4 pliki, zamiast każdej z tych '1' może być '0', to daje 4 kombinacje); i nie wiem, jak zawartość takiego pliku tłumaczyć na to, co mam wpisać do pliku konfiguracyjnego dla "ras-mc-ctl" (/etc/ras/dimm_labels.d/dell-t7810) - ani którą wartość Locator przypisać do którego mc (w tym pliku pierwsza liczba po etykiecie i dwukropku), ani jakie mają być pozostałe liczby (czy same zera? a jakie mają być, jak będą wetknięte dalsze pamięci?).

    Dla płyty w Dell Precision Tower 5810 z procesorem Xeon E5-1650v3 mam zupełnie inne nazwy z "dmidecode" i z plików "dimm_label" - z pierwszego DIMM1, DIMM5, DIMM3, DIMM7, DIMM2, DIMM6, DDR4, DIMM8 (w tej kolejności); z drugiego mam tylko katalog mc0/, w nim podkatalogi dimm0, dimm1, dimm3, dimm4, dimm6, dimm7, dimm9, dimm10, w nich pliki "dimm_label" z zawartością zaczynającą się od "CPU_SrcID#0_Ha#0", zmienia się Chan# od 0 do 3, i DIMM# występuje 0 i 1.
  • #12 21741633
    ElektrodaBot
    AI od OpenAI ChatGPT4
    Posty: 8846
    Pomógł: 361
    Ocena: 948
    _jta_ napisał:
    @ElektrodaBot - dla płyty Dell 0GWHMW stosowanej w Dell Precision Tower 7810 "dmidecode -t memory" podaje nazwy (Locator): DIMM1_CPU1, DIMM3_CPU1, DIMM2_CPU1, DIMM4_CPU1, DIMM1_CPU2, DIMM3_CPU2, DIMM2_CPU2, DIMM4_CPU2; mam wrażenie (zdjęcia płyty, które znalazłem w sieci, nie są na tyle dobre, bym mógł wszystko przeczytać), że właśnie takie nazwy są na płycie przy gniazdach pamięci.

    Wciąż nie wiem, według czego mam ustalać powiązanie tych nazw z "dmidecode" plikami w "/sys/devices/system/edac/mc/" - tam pliki "dimm_label" zawierają np. "CPU_SrcID#1_Ha#1_Chan#0_DIMM#0" (są 4 pliki, zamiast każdej z tych '1' może być '0', to daje 4 kombinacje); i nie wiem, jak zawartość takiego pliku tłumaczyć na to, co mam wpisać do pliku konfiguracyjnego dla "ras-mc-ctl" (/etc/ras/dimm_labels.d/dell-t7810) - ani którą wartość Locator przypisać do którego mc (w tym pliku pierwsza liczba po etykiecie i dwukropku), ani jakie mają być pozostałe liczby (czy same zera? a jakie mają być, jak będą wetknięte dalsze pamięci?).

    Dla płyty w Dell Precision Tower 5810 z procesorem Xeon E5-1650v3 mam zupełnie inne nazwy z "dmidecode" i z plików "dimm_label" - z pierwszego DIMM1, DIMM5, DIMM3, DIMM7, DIMM2, DIMM6, DDR4, DIMM8 (w tej kolejności); z drugiego mam tylko katalog mc0/, w nim podkatalogi dimm0, dimm1, dimm3, dimm4, dimm6, dimm7, dimm9, dimm10, w nich pliki "dimm_label" z zawartością zaczynającą się od "CPU_SrcID#0_Ha#0", zmienia się Chan# od 0 do 3, i DIMM# występuje 0 i 1.
    Bezpośrednia odpowiedź

    - W Twoim T7810 (płyta 0GWHMW, Xeon E5 v3/v4, sterownik sb_edac) numery po dwukropku w plikach etykiet rasdaemon to MC.TOP.MID.LOW. Na tej platformie odpowiada to MC.HA.CHAN.DIMM.
    - Z Twoich logów dmesg wynika mapowanie kontrolerów:
    - mc0 → CPU_SrcID#1 Ha#0
    - mc1 → CPU_SrcID#0 Ha#0
    - mc2 → CPU_SrcID#1 Ha#1
    - mc3 → CPU_SrcID#0 Ha#1
    - Dell „CPU1/CPU2” zwykle odpowiada EDAC „SrcID#0/SrcID#1” (odpowiednio). Przyjmując to (i że na T7810 jest 1 DIMM na kanał → DIMM zawsze = 0), gotowy plik etykiet dla wszystkich 8 gniazd wygląda tak:

    Dell Inc.
    0GWHMW
    DIMM1_CPU1: 1.0.0.0
    DIMM2_CPU1: 1.0.1.0
    DIMM3_CPU1: 3.1.0.0
    DIMM4_CPU1: 3.1.1.0
    DIMM1_CPU2: 0.0.0.0
    DIMM2_CPU2: 0.0.1.0
    DIMM3_CPU2: 2.1.0.0
    DIMM4_CPU2: 2.1.1.0

    - Pierwsza liczba to numer mc (mc0→0, mc1→1, …). Następne to: HA (Home Agent), CHAN (kanał w ramach tego HA) i DIMM (pozycja w kanale). Na T7810 DIMM=0, bo jest jeden slot na kanał.
    - Jeśli okaże się, że u Ciebie „CPU1” i „CPU2” są zamienione względem SrcID (rzadkie, ale możliwe), zamień bloki „CPU1”↔„CPU2” w pliku. Weryfikacja jest prosta i opisana niżej.

    Poniżej pełne wyjaśnienie i procedury dla T7810 i T5810.

    ---

    Jak to działa (EDAC ↔ dmidecode)

    - dmidecode ≈ nazwy z SMBIOS: „Locator” (np. DIMM1_CPU1) to to, co masz nadrukowane przy gniazdach.
    - EDAC (sysfs) ≈ topologia logiczna: dimm_label ma postać CPU_SrcID#X_Ha#Y_Chan#Z_DIMM#W.
    - rasdaemon/ras-mc-ctl potrzebuje mapy: „czytelna nazwa: MC.HA.CHAN.DIMM”. Ta mapa trafia do pliku w /etc/ras/dimm_labels.d/… i po rejestracji zamienia kernelowe dimm_label na Twoje nazwy.

    Klucz: na Haswell/Broadwell‑EP (E5 v3/v4) każdy CPU ma 2 HA (Ha#0, Ha#1). Każdy HA ma 2 kanały (Chan#0, Chan#1). Na T7810 jest 1 DIMM/kanał, więc DIMM# zawsze 0. To daje łącznie 4 gniazda na CPU: (Ha0,Chan0), (Ha0,Chan1), (Ha1,Chan0), (Ha1,Chan1).

    ---

    Dlaczego akurat tak zmapowane na T7810 (0GWHMW)

    Z Twojego dmesg:
    - MC1 i MC3 mają SrcID#0 → to jeden CPU (oznaczmy go „CPU1” w nomenklaturze Della).
    - MC0 i MC2 mają SrcID#1 → drugi CPU („CPU2” w nomenklaturze Della).

    Zwyczajowo:
    - Ha#0 = „pierwsza para kanałów” tego CPU (u Della zwykle odpowiada DIMM1 i DIMM2),
    - Ha#1 = „druga para kanałów” (zwykle DIMM3 i DIMM4),
    - Chan#0 = „pierwszy kanał w tej parze” (DIMM1 lub DIMM3),
    - Chan#1 = „drugi kanał w tej parze” (DIMM2 lub DIMM4).

    Stąd gotowe wpisy (DIMM1/DIMM2 ↔ Ha#0 Chan#0/1; DIMM3/DIMM4 ↔ Ha#1 Chan#0/1), z przypisaniem do właściwych mcX przez SrcID.

    ---

    Jak utworzyć i załadować plik etykiet (T7810)

    1) Ustal dokładne ciągi Vendor/Model (muszą identycznie zgadzać się z DMI):
    - ras-mc-ctl --mainboard
    - albo: cat /sys/class/dmi/id/board_vendor; cat /sys/class/dmi/id/board_name

    2) Utwórz plik, np. /etc/ras/dimm_labels.d/dell-t7810-0GWHMW:
    - Pierwsza linia: dokładnie Vendor (np. „Dell Inc.”),
    - Druga linia: dokładnie Model (np. „0GWHMW”),
    - Dalej linie „Locator: MC.HA.CHAN.DIMM” – jak w sekcji „Bezpośrednia odpowiedź”.

    3) Zarejestruj i sprawdź:
    - sudo ras-mc-ctl --register-labels
    - sudo ras-mc-ctl --print-labels
    - Po rejestracji cat /sys/devices/system/edac/mc/mc*/dimm*/dimm_label powinno już pokazywać Twoje przyjazne nazwy.

    Uwaga na format: bez prefiksów „Vendor:”/„Model:”. To mają być dokładnie dwie linie tekstu odpowiadające /sys/class/dmi/id/board_vendor i /sys/class/dmi/id/board_name, a potem mapowania.

    ---

    Co gdy dołożysz pamięci (T7810)

    - Nowe moduły dla CPU1:
    - DIMM2_CPU1 → 1.0.1.0 (ten sam mc i HA co DIMM1_CPU1, ale Chan=1; DIMM=0)
    - DIMM4_CPU1 → 3.1.1.0 (drugi kanał w HA#1)
    - Nowe moduły dla CPU2:
    - DIMM2_CPU2 → 0.0.1.0
    - DIMM4_CPU2 → 2.1.1.0

    DIMM (ostatnia liczba) pozostaje 0, bo T7810 ma po 1 gnieździe na kanał.

    ---

    Jak w 60 sekund zweryfikować, że „CPU1↔SrcID#0” nie jest zamienione

    Metoda „bez specjalnych narzędzi”:
    - Wyłącz stację, wyjmij DIMM z gniazda fizycznie oznaczonego DIMM1_CPU1.
    - Uruchom i sprawdź, który katalog zniknął:
    - jeśli zniknął mc1/dimm0 → mapping jest OK,
    - jeśli zniknął mc0/dimm0 → CPU1/CPU2 są zamienione: zamień dwie sekcje w pliku.

    Metoda „SPD” (bez otwierania obudowy – jeśli BIOS udostępnia SMBus):
    - sudo modprobe i2c-i801 i2c-dev ee1004
    - sudo decode-dimms
    - Porównaj PN/SN z dmidecode i z EDAC (widzisz, który dimm_label odpowiada któremu modułowi).

    ---

    Dell Precision T5810 – jak zmapować

    - Jednosocketowy E5 v3 → w EDAC masz zwykle tylko mc0.
    - W dimm_label widać zwykle CPU_SrcID#0_Ha#0_Chan#0..3_DIMM#0/1 (4 kanały × do 2 DIMM/kanał = 8 slotów).
    - Typowa mapa (dopasuj do swoich „Locator” z dmidecode – na T5810 często są po prostu „DIMM1..DIMM8”):

    Dell Inc.
    [Wpisz dokładny board_name z /sys/class/dmi/id/board_name]
    DIMM1: 0.0.0.0
    DIMM2: 0.0.0.1
    DIMM3: 0.0.1.0
    DIMM4: 0.0.1.1
    DIMM5: 0.0.2.0
    DIMM6: 0.0.2.1
    DIMM7: 0.0.3.0
    DIMM8: 0.0.3.1

    - Tu MC=0, HA=0 (zwykle spłaszczony), CHAN=0..3 (kanały A..D), DIMM=0/1 (pierwszy/drugi slot w kanale).
    - Jeśli dmidecode wstawia dziwny „DDR4” jako Locator, użyj realnych „Locator” gniazd (czasem „Bank Locator” bywa mylący).

    ---

    Krótkie FAQ

    - Co dokładnie oznaczają cyfry MC.HA.CHAN.DIMM?
    - MC: numer mcX w /sys/devices/system/edac/mc/
    - HA: Home Agent (na E5 v3/v4 są 2 na socket)
    - CHAN: kanał w danym HA (0 lub 1)
    - DIMM: indeks gniazda w kanale (T7810: zawsze 0; T5810: 0/1)

    - Skąd wziąć pewność co do kolejności „HA, CHAN, DIMM”?
    - ras-mc-ctl --layout pokaże nazwy i zakresy warstw (TOP/MID/LOW) dla aktywnego sterownika; na sb_edac odpowiadają one HA/CHAN/DIMM.

    - Dlaczego w sysfs widzę „dimm_location: channel 0 slot 0” dla wszystkich?
    - To ograniczenie prezentacji w sb_edac dla tej platformy; właściwa topologia jest w dimm_label (CPU_SrcID/Ha/Chan/DIMM). Etykiety użytkownika (z pliku) nadpisują dimm_label po rejestracji.

    ---

    Komendy „na gotowo”

    - Sprawdź identyfikację płyty i układ:
    - ras-mc-ctl --mainboard
    - ras-mc-ctl --layout
    - Utwórz plik etykiet (jak w sekcji „Bezpośrednia odpowiedź”), potem:
    - sudo ras-mc-ctl --register-labels
    - sudo ras-mc-ctl --print-labels
    - Podgląd aktualnych etykiet w sysfs:
    - for f in /sys/devices/system/edac/mc/mc*/dimm*/dimm_label; do echo -n "$f: "; cat "$f"; done

    ---

    Jeśli coś się nie zepnie

    - Podeślij:
    - ras-mc-ctl --mainboard
    - ras-mc-ctl --layout
    - dmidecode -t memory | egrep -A2 'Locator:|Size:'
    - oraz listę ścieżek i zawartość dimm_label z mc0..mc3
    - Na tej podstawie przygotuję dokładny plik pod Twoją płytę (z właściwą kolejnością HA/CHAN/DIMM i właściwym przypisaniem CPU1/CPU2).
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.

Podsumowanie tematu

✨ Na komputerze Dell Precision Tower 7810 z Ubuntu 22.04 LTS i jądrem 6.8.0-85-generic sterownik EDAC sb_edac jest poprawnie załadowany i obsługuje cztery kontrolery pamięci (mc0–mc3). Liczniki błędów pamięci ECC w katalogu /sys/devices/system/edac/mc/ (ce_count, ue_count, ce_noinfo_count, ue_noinfo_count) wskazują na brak błędów po 19 dniach pracy, co jest normalne. Pliki ce_noinfo_count i ue_noinfo_count zliczają odpowiednio skorygowane i nieskorygowalne błędy, których nie można przypisać do konkretnego modułu DIMM. Czas od ostatniego resetu liczników jest monitorowany przez seconds_since_reset. Moduł einj nie ładuje się z powodu braku wsparcia BIOS/ACPI dla wstrzykiwania błędów, co nie wpływa na wykrywanie rzeczywistych błędów ECC.

Tryb ECC dimm_edac_mode o wartości S4ECD4ED oznacza korekcję typu Chipkill dla modułów RDIMM z kośćmi x4, umożliwiającą korekcję pojedynczego 4-bitowego symbolu i wykrywanie podwójnego. Wartości dimm_label wskazują na logiczne przypisanie gniazd pamięci do CPU, Home Agent i kanału, jednak nie istnieje automatyczne mapowanie nazw gniazd z dmidecode (Locator) do katalogów mc0..mc3 w sysfs. Nazwy z dmidecode pochodzą z tabel SMBIOS/DMI BIOS-u i różnią się od nazewnictwa EDAC.

Aby powiązać nazwy gniazd z katalogami EDAC i umożliwić czytelne logowanie błędów, zaleca się utworzenie pliku etykiet dla rasdaemon w /etc/ras/dimm_labels.d/, bazując na schemacie MC.HA.CHAN.DIMM. Dla płyty Dell 0GWHMW stosowanej w Precision 7810 przykładowy plik etykiet przypisuje nazwy typu DIMM1_CPU1 do odpowiednich mc i kanałów, gdzie CPU1/CPU2 odpowiada SrcID#0/SrcID#1. Narzędzia rasdaemon i ras-mc-ctl umożliwiają monitorowanie i raportowanie błędów ECC bez resetowania liczników EDAC. Brak wpisów w journalctl po długim czasie od startu jest normalny, a logi startowe EDAC znajdują się w /var/log/dmesg.

Podsumowując, system jest poprawnie skonfigurowany do wykrywania błędów ECC, liczniki działają prawidłowo, a do pełnej identyfikacji i monitorowania błędów należy skonfigurować odpowiednie etykiety DIMM i używać narzędzi rasdaemon/ras-mc-ctl.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA