11.8. 커널

커널 ACPI 드라이버는 PCIe ECAM 메모리 영역에 액세스할 수 없다고 보고

펌웨어가 제공하는 ACPI(Advanced Configuration and Power Interface) 테이블은 PCI 버스 장치의 현재 리소스 설정(_CRS) 방법에서 PCI 버스에 메모리 영역을 정의하지 않습니다. 결과적으로 시스템 부팅 중에 다음 경고 메시지가 발생합니다.

[    2.817152] acpi PNP0A08:00: [Firmware Bug]: ECAM area [mem 0x30000000-0x31ffffff] not reserved in ACPI namespace
[    2.827911] acpi PNP0A08:00: ECAM at [mem 0x30000000-0x31ffffff] for [bus 00-1f]

그러나 커널은 여전히 0x30000000-0x31 ffffffffff의 메모리 영역에 액세스할 수 있으며 해당 메모리 영역을 PCI 강화 구성 액세스 메커니즘(ECAM)에 적절하게 할당할 수 있습니다. 다음 출력으로 256바이트 오프셋을 통해 PCIe 구성 공간에 액세스하여 PCI ECAM이 올바르게 작동하는지 확인할 수 있습니다.

03:00.0 Non-Volatile memory controller: Sandisk Corp WD Black 2018/PC SN720 NVMe SSD (prog-if 02 [NVM Express])
 ...
        Capabilities: [900 v1] L1 PM Substates
                L1SubCap: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2+ ASPM_L1.1- L1_PM_Substates+
                          PortCommonModeRestoreTime=255us PortTPowerOnTime=10us
                L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
                           T_CommonMode=0us LTR1.2_Threshold=0ns
                L1SubCtl2: T_PwrOn=10us

따라서 경고 메시지를 무시할 수 있습니다.

문제에 대한 자세한 내용은 "Firmware Bug: ECAM area mem 0x30000000-0x31ffffffffffffff not reserved in ACPI namespace" 를 참조하십시오.

Bugzilla:1868526

tuned-adm profile powersave 명령을 사용하면 시스템이 응답하지 않습니다.

tuned-adm 프로필 powersave 명령을 실행하면 이전 Thunderx(CN88xx) 프로세서가 있는 Penguin Valkyrie 2000 2-socket 시스템의 응답하지 않는 상태가 발생합니다. 결과적으로 시스템을 재부팅하여 작동을 재개합니다. 이 문제를 해결하려면 시스템이 언급된 사양과 일치하는 경우 powersave 프로필을 사용하지 마십시오.

Bugzilla:1609288

HP NMI 워치독이 항상 크래시 덤프를 생성하는 것은 아닙니다.

특정 경우 NMI 워치독에 대한 hpwdt 드라이버는 NMI가 대신 perfmon 드라이버에서 소비했기 때문에 HPE 워치독 타이머에서 생성한 NMI(Non-maskable interrupt)를 클레임할 수 없습니다.

누락된 NMI는 다음 두 가지 조건 중 하나로 시작됩니다.

  1. iLO(Integrated Lights-Out) 서버 관리 소프트웨어의 NMI 생성 버튼. 이 버튼은 사용자에 의해 트리거됩니다.
  2. hpwdt 워치독 만료는 기본적으로 NMI를 서버로 보냅니다.

두 시퀀스는 일반적으로 시스템이 응답하지 않을 때 발생합니다. 정상적인 상황에서 이러한 상황 모두에 대한 NMI 처리기는 kernel panic() 함수를 호출하고 구성된 경우 kdump 서비스는 vmcore 파일을 생성합니다.

그러나 NMI가 누락되어 있기 때문에 kernel panic() 이 호출되지 않고 vmcore 가 수집되지 않습니다.

첫 번째 사례(1.)에서 시스템이 응답하지 않는 경우 그대로 유지됩니다. 이 시나리오를 해결하려면 가상 전원 버튼을 사용하여 서버를 재설정하거나 전원을 켭니다.

두 번째 경우 (ASR) 자동 시스템 복구에서 재설정에 의해 누락 된 NMI가 9 초 후에 발생합니다.

HPE Gen9 서버 줄에서는 이 문제가 한 자리 백분율로 발생합니다. 더 작은 주파수에서의 Gen10.

Bugzilla:1602962

동일한 충돌 확장을 다시 로드하면 세그먼트 오류가 발생할 수 있습니다.

이미 로드된 충돌 확장 파일의 복사본을 로드하면 세그먼트 오류가 발생할 수 있습니다. 현재 crash 유틸리티는 원본 파일이 로드되었는지 여부를 탐지합니다. 결과적으로 크래시 유틸리티에 공동 존재하는 두 개의 동일한 파일로 인해 네임스페이스 충돌이 발생하여 크래시 유틸리티가 손상되어 세그먼트 오류가 발생합니다.

크래시 확장 파일을 한 번만로드하여 문제를 해결할 수 있습니다. 결과적으로 설명된 시나리오에서 세그먼트 결함이 더 이상 발생하지 않습니다.

Bugzilla:1906482

가상 머신에 가상 기능을 연결할 때 연결에 실패합니다.

ionic 장치 드라이버를 사용하는 Pensando 네트워크 카드를 자동으로 VLAN 태그 구성 요청을 수락하고VF(네트워크 가상 기능)를VM(가상 머신)에 연결하는 동안 네트워크 연결 구성을 시도합니다. 이러한 네트워크 연결은 카드의 펌웨어에서 아직 지원되지 않으므로 실패합니다.

Bugzilla:1930576

OPEN MPI 라이브러리는 기본 PML을 사용하여 런타임 오류를 트리거할 수 있습니다.

OPEN Message Passing Interface(OPEN MPI) 구현 4.0.x 시리즈에서 UCX(Unified Communication X)는 기본 PML(point-to-point communicator)입니다. OPEN MPI 4.0.x 시리즈의 최신 버전은 더 이상 openib ECDHE Transfer Layer (BTL)입니다.

그러나 OPEN MPI는 동종 클러스터(하드웨어 및 소프트웨어 구성)를 통해 실행할 때 UCX는 여전히 MPI one-sided 작업을 위해 openib BTL을 사용합니다. 이로 인해 실행 오류가 발생할 수 있습니다. 이 문제를 해결하려면 다음을 수행합니다.

  • 다음 매개변수를 사용하여 mpirun 명령을 실행합니다.
-mca btl openib -mca pml ucx -x UCX_NET_DEVICES=mlx5_ib0

여기서,

  • -mca btl openib 매개변수는 openib BTL을 비활성화합니다.
  • -mca pml ucx 매개변수는 OPEN MPI가 ucx PML을 사용하도록 구성합니다.
  • X UCX_NET_DEVICES= 매개 변수는 지정된 장치를 사용하도록 UCX를 제한합니다.

OPEN MPI는 이기종 클러스터(하이웨어 및 소프트웨어 구성)를 통해 실행될 때 UCX를 기본 PML으로 사용합니다. 이로 인해 OPEN MPI 작업이 잘못된 성능, 응답하지 않는 동작 또는 충돌 오류로 실행될 수 있습니다. 이 문제를 해결하려면 UCX 우선 순위를 다음과 같이 설정합니다.

  • 다음 매개변수를 사용하여 mpirun 명령을 실행합니다.
-mca pml_ucx_priority 5

결과적으로 OPEN MPI 라이브러리는 UCX를 통해 사용 가능한 대체 전송 계층을 선택할 수 있습니다.

Bugzilla:1866402

메모리 핫플러그 또는 언플러그 작업 후 vmcore 캡처가 실패합니다.

메모리 핫플러그 또는 핫 플러그 해제 작업을 수행한 후 해당 이벤트는 메모리 레이아웃 정보가 포함된 장치 트리를 업데이트한 후에 발생합니다. 따라서 makedumpfile 유틸리티는 존재하지 않는 물리적 주소에 액세스하려고 합니다. 다음 조건이 모두 충족되면 문제가 발생합니다.

  • IBM Power System의 little-endian 변형은 RHEL 8을 실행합니다.
  • kdump 또는 fadump 서비스가 시스템에서 활성화됩니다.

결과적으로 메모리 핫플러그 또는 핫 플러그 해제 작업 후 커널 충돌이 트리거되면 캡처 커널이 vmcore 를 저장하지 못합니다.

이 문제를 해결하려면 핫플러그 또는 핫 언플러그 후 kdump 서비스를 다시 시작하십시오.

# systemctl restart kdump.service

결과적으로 vmcore 가 설명된 시나리오에 성공적으로 저장됩니다.

Bugzilla:1793389

irqpoll 을 사용하면 vmcore 생성이 실패합니다.

Amazon Web Services graviton 1 프로세서에서 실행되는 64비트 ARM 아키텍처의 nvme 드라이버의 기존 문제로 인해 irqpoll 커널 명령줄 매개변수를 첫 번째 커널에 제공할 때 vmcore 생성이 실패합니다. 결과적으로 커널이 충돌하면 /var/crash/ 디렉터리에 vmcore 파일이 덤프되지 않습니다. 이 문제를 해결하려면 다음을 수행합니다.

  1. /etc/sysconfig/kdump 파일의 KDUMP_COMMANDLINE_REMOVE 변수에 irqpoll 을 추가합니다.

    # KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swiotlb"
  2. /etc/sysconfig/kdump 파일의 KDUMP_COMMANDLINE_APPEND 변수에서 irqpoll 을 삭제합니다.

    # KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory udev.children-max=2 panic=10 swiotlb=noforce novmcoredd"
  3. kdump 서비스를 다시 시작하십시오.

    # systemctl restart kdump

결과적으로 첫 번째 커널은 올바르게 부팅되고 커널 충돌 시 vmcore 파일이 캡처됩니다.

Amazon Web Services graviton 2 및 Amazon Web Services graviton 3 프로세서는 /etc/sysconfig/kdump 파일에서 irqpoll 매개변수를 수동으로 제거할 필요가 없습니다.

kdump 서비스는 상당한 양의 크래시 커널 메모리를 사용하여 vmcore 파일을 덤프할 수 있습니다. 캡처 커널에 kdump 서비스에 사용할 수 있는 충분한 메모리가 있는지 확인합니다.

이 known Issue에 대한 관련 정보는 The irqpoll kernel command line parameter might cause vmcore generation failure article에서 참조하십시오.

Bugzilla:1654962

디버그 커널이 RHEL 8에서 크래시 캡처 환경에서 부팅되지 않음

디버그 커널의 메모리 집약적인 특성으로 인해 디버그 커널이 사용되고 커널 패닉이 트리거될 때 문제가 발생합니다. 결과적으로 캡처 커널과 스택 추적이 생성되므로 디버그 커널을 부팅할 수 없습니다. 이 문제를 해결하려면 필요에 따라 크래시 커널 메모리를 늘립니다. 결과적으로 크래시 캡처 환경에서 디버그 커널이 성공적으로 부팅됩니다.

Bugzilla:1659609

부팅 시 크래시 커널 메모리 할당 실패

일부 Ampere Altra 시스템에서는 BIOS 설정에서 32비트 리전을 비활성화하면 부팅 중에 크래시 커널 메모리를 할당하는 데 실패합니다. 결과적으로 kdump 서비스가 시작되지 않습니다. 이는 4GB 미만의 리전의 메모리 조각화로 인해 크래시 커널 메모리를 포함할 만큼 조각이 크지 않기 때문입니다.

이 문제를 해결하려면 BIOS에서 32비트 메모리 영역을 다음과 같이 활성화합니다.

  1. 시스템의 BIOS 설정을 엽니다.
  2. Chipset 메뉴를 엽니다.
  3. 메모리 구성에서 Slave 32비트 옵션을 활성화합니다.

결과적으로 32비트 리전 내에서 커널 메모리 할당이 충돌하고 kdump 서비스가 예상대로 작동합니다.

Bugzilla:1940674

IBM Z의 RoCE 인터페이스에서 네트워크 인터페이스 이름을 예기치 않은 변경으로 인해 IP 설정이 손실됨

RHEL 8.6 이전 버전에서는 udev 장치 관리자가 IBM Z 플랫폼에서 예측할 수 없는 장치 이름을 UID(Unique ID)로 열거한 RoCE 인터페이스에 할당합니다. 그러나 RHEL 8.7 이상에서는 udev 가 이러한 인터페이스에 eno 접두사가 포함된 예측 가능한 장치 이름을 할당합니다.

RHEL 8.6 이하에서 8.7 이상으로 업데이트하면 이러한 UID 사용 인터페이스에 새 이름이 있으며 더 이상 NetworkManager 연결 프로필의 장치 이름과 일치하지 않습니다. 결과적으로 이러한 인터페이스에는 업데이트 후 IP 구성이 없습니다.

해결 방법은 시스템을 이미 업데이트한 경우 업데이트 전에 적용할 수 있으며 RHEL 8.7 이상으로 업데이트한 후 IBM Z의 RoCE 인터페이스 손실을 참조하십시오.

Bugzilla:2169382

QAT 관리자는 LKCF에 대한 예비 장치를 남겨 두지 않습니다.

Intel® QuickAssist Technology (QAT) 관리자(QAT) 관리자는 기본적으로 시스템의 모든 QAT 장치를 사용하는 사용자 공간 프로세스입니다. 그 결과, Linux Kernel cryptographic framework(LKCF)에 남아 있는 QAT 장치가 남아 있지 않습니다. 이러한 동작이 예상되고 대부분의 사용자가 사용자 공간에서 가속을 사용하기 때문에 이 상황을 해결할 필요가 없습니다.

Bugzilla:1920086

Solarflare는 최대 VF(가상 기능)를 생성하지 못합니다.

Solarflare NIC는 리소스가 충분하지 않기 때문에 최대 VF 수를 생성하지 못합니다. PCIe 장치가 /sys/bus/pci/devices/ PCI_ID/sriov_totalvfs 파일에서 생성할 수 있는 최대 VF 수를 확인할 수 있습니다. 이 문제를 해결하려면 VF 수 또는 VF MSI 인터럽트 값을 시작 시 Solarflare Boot Manager 에서 또는 Solarflare sfboot 유틸리티를 사용하여 더 낮은 값으로 조정할 수 있습니다. 기본 VF MSI 인터럽트 값은 8 입니다.

  • sfboot 를 사용하여 VF MSI 인터럽트 값을 조정하려면 다음을 수행합니다.
# sfboot vf-msix-limit=2
참고

VF MSI 인터럽트 값을 조정하면 VF 성능에 영향을 미칩니다.

그에 따라 조정할 매개변수에 대한 자세한 내용은 Solarflare Server Adapter 사용자 가이드를 참조하십시오.

Bugzilla:1971506

page_poison=1 을 사용하면 커널이 충돌할 수 있습니다.

errory EFI 구현이 있는 펌웨어에서 page_poison=1 을 커널 매개변수로 사용하는 경우 운영 체제가 충돌할 수 있습니다. 기본적으로 이 옵션은 비활성화되어 있으며 특히 프로덕션 시스템에서 사용하도록 설정하지 않는 것이 좋습니다.

Bugzilla:2050411

iwl7260-firmware 는 Intel Wi-Fi 6 AX200, AX210 및ECDHE ThinkPad P1 Gen 4에서 Wi-Fi를 중단

iwl7260-firmware 또는 iwl7260-wifi 드라이버를 RHEL 8.7 이상에서 제공하는 버전으로 업데이트한 후 하드웨어가 잘못된 내부 상태로 전환됩니다. 결과적으로 IntelECDHE 6 카드가 작동하지 않아 오류 메시지를 표시할 수 있습니다.

kernel: iwlwifi 0000:09:00.0: Failed to start RT ucode: -110
kernel: iwlwifi 0000:09:00.0: WRT: Collecting data: ini trigger 13 fired (delay=0ms)
kernel: iwlwifi 0000:09:00.0: Failed to run INIT ucode: -110

확인되지 않은 작업은 시스템의 전원을 끄고 다시 켜는 것입니다. 재부팅하지 마십시오.

Bugzilla:2106341

IBM Power Systems의 보안 부팅은 마이그레이션을 지원하지 않음

현재 IBM Power Systems에서 LPAR(Logical partition)는 PV(물리 볼륨)를 마이그레이션한 후 부팅되지 않습니다. 결과적으로 파티션에서 보안 부팅이 활성화된 모든 유형의 자동화된 마이그레이션이 실패합니다.

Bugzilla:2126777

Weak-modules from kmod fails to work with module inter-dependencies

kmod 패키지에서 제공하는 weak-modules 스크립트는 설치된 커널과 호환되는 kABI-호환 모듈을 결정합니다. 그러나 모듈의 커널 호환성을 확인하는 동안 약한 모듈은 모듈 기호의 종속성을 더 높은에서 더 낮은 버전의 커널 릴리스까지 제공합니다. 결과적으로 다른 커널 릴리스에 대해 빌드된 상호 의존 관계가 있는 모듈이 호환되지 않는 것으로 해석될 수 있으므로 약한 모듈 스크립트가 이 시나리오에서 작동하지 않습니다.

이 문제를 해결하려면 새 커널을 설치하기 전에 최신 스포지 커널에 대해 추가 모듈을 빌드하거나 배치합니다.

Bugzilla:2103605

Ampere Altra 서버의 kdump 가 OOM 상태가 됨

Ampere Altra 및 Altra Max 서버의 펌웨어로 인해 현재 커널이 너무 많은 이벤트, 인터럽트 및 명령 큐를 할당하여 메모리를 너무 많이 사용합니다. 결과적으로 kdump 커널은 OOM(Out of memory) 상태가 됩니다.

이 문제를 해결하려면 crashkernel= 커널 옵션의 값을 640M 으로 늘려 kdump 에 대한 추가 메모리를 예약합니다.

Bugzilla:2111855

코어가 큰 시스템에서 실시간 커널의 하드웨어 인증을 사용하려면 잠금 경합을 방지하기 위해 skew-tick=1 부팅 매개변수를 전달해야 할 수 있습니다.

다수의 소켓과 대규모 코어 개수가 있는 대규모 또는 중간 규모의 시스템은 시간 보관 시스템에 사용되는 xtime_lock 의 잠금 경합으로 인해 대기 시간이 급증할 수 있습니다. 결과적으로 멀티프로세싱 시스템에서 대기 시간이 급증하고 하드웨어 인증 지연이 발생할 수 있습니다. 이 문제를 해결하려면 skew_tick=1 부팅 매개변수를 추가하여 CPU당 타이머 눈금을 다른 시간에 시작할 수 있습니다.

잠금 충돌을 방지하려면 skew_tick=1 을 활성화합니다.

  1. grubby 를 사용하여 skew_tick=1 매개변수를 활성화합니다.

    # grubby --update-kernel=ALL --args="skew_tick=1"
  2. 변경 사항을 적용하려면 재부팅하십시오.
  3. cat /proc/cmdline 명령을 실행하여 새 설정을 확인합니다.

skew_tick=1 을 활성화하면 전력 소비가 크게 증가하므로 대기 시간에 민감한 실시간 워크로드를 실행하는 경우에만 활성화해야 합니다.

Bugzilla:2214508