11.7. 커널
커널의 kdump
메커니즘으로 인해 64K 커널에서 OOM
오류가 발생합니다.
64비트 ARM 아키텍처의 64K 커널 페이지 크기는 4KB 커널보다 많은 메모리를 사용합니다. 결과적으로 kdump
는 커널 패닉 상태가 발생하고 메모리 할당이 OOM(메모리 부족) 오류로 인해 실패합니다. 작업을 수행하는 경우 crashkernel
값을 640MB로 수동으로 구성합니다. 예를 들어 crashkernel=
매개변수를 crashkernel=2G- :640M
으로 설정합니다.
그 결과 설명된 시나리오의 64K 커널에서 kdump
메커니즘이 실패하지 않습니다.
Bugzilla:2160676
커널 페이지 크기에 종속된 고객 애플리케이션은 4k에서 64k 페이지 크기 커널로 이동할 때 업데이트해야 할 수 있습니다.
RHEL은 4k 및 64k 페이지 크기 커널과 호환됩니다. 4k 커널 페이지 크기에 종속 항목이 있는 고객 애플리케이션은 4k에서 64k 페이지 크기 커널로 이동할 때 업데이트해야 할 수 있습니다. 알려진 인스턴스에는 jemalloc
및 종속 애플리케이션이 포함됩니다.
jemalloc
메모리 할당기 라이브러리는 시스템의 런타임 환경에서 사용되는 페이지 크기에 민감합니다. 라이브러리를 빌드하여 4k 및 64k 페이지 크기 커널과 호환되도록 빌드할 수 있습니다. 예를 들어 --with-lg-page=16
또는 env JEMALLOC_SYS_WITH_LG_PAGE=16
(Jemal locator
Rust crate의 경우)으로 구성할 수 있습니다. 결과적으로 런타임 환경의 페이지 크기와 jemalloc
에 의존하는 바이너리를 컴파일할 때 존재하는 페이지 크기 사이에 불일치가 발생할 수 있습니다. 결과적으로 jemalloc
기반 애플리케이션을 사용하면 다음 오류가 트리거됩니다.
<jemalloc>: Unsupported system page size
이 문제를 방지하려면 다음 방법 중 하나를 사용하십시오.
- 적절한 빌드 구성 또는 환경 옵션을 사용하여 4k 및 64k 페이지 크기 호환 바이너리를 생성합니다.
-
최종 64k 커널 및 런타임 환경으로 부팅한 후
jemalloc
을 사용하는 사용자 공간 패키지를 빌드합니다.
예를 들어 jemalloc
을 사용하여 Rust 패키지 관리자와 함께 fd-find
도구를 빌드할 수 있습니다. 마지막 64k 환경에서 모든 종속 항목의 새 빌드를 트리거하여 hugepages 명령을 입력하여 페이지 크기의 불일치를
확인합니다
.
# cargo install fd-find --force
Bugzilla:2167783
kdump
서비스가 IBM Z 시스템에서 initrd
파일을 빌드하지 못했습니다.
64비트 IBM Z 시스템에서 znet
관련 설정 정보가 비활성 NetworkManager
연결 프로필에 있는 경우 kdump
서비스는 초기 RAM 디스크(initrd
)를 로드하지 못합니다. 결과적으로
kdump
메커니즘이 다음 오류와 함께 실패합니다.
dracut: Failed to set up znet kdump: mkdumprd: failed to make kdump initrd
해결 방법으로 다음 솔루션 중 하나를 사용하십시오.
znet
구성 정보가 있는 연결 프로필을 다시 사용하여 네트워크 본딩 또는 브리지를 구성합니다.$ nmcli connection modify enc600 master bond0 slave-type bond
비활성 연결 프로필의
znet
구성 정보를 활성 연결 프로필에 복사합니다.nmcli
명령을 실행하여NetworkManager
연결 프로필을 쿼리합니다.# nmcli connection show NAME UUID TYPE Device bridge-br0 ed391a43-bdea-4170-b8a2 bridge br0 bridge-slave-enc600 caf7f770-1e55-4126-a2f4 ethernet enc600 enc600 bc293b8d-ef1e-45f6-bad1 ethernet --
비활성 연결의 구성 정보로 활성 프로필을 업데이트합니다.
#!/bin/bash inactive_connection=enc600 active_connection=bridge-slave-enc600 for name in nettype subchannels options; do field=802-3-ethernet.s390-$name val=$(nmcli --get-values "$field"connection show "$inactive_connection") nmcli connection modify "$active_connection" "$field" $val" done
변경 사항을 적용하려면
kdump
서비스를 다시 시작하십시오.# kdumpctl restart
kTLS는 TLS 1.3을 NIC로 오프로드하는 것을 지원하지 않습니다.
kTLS(커널 전송 계층 보안)는 TLS 1.3을 NIC로 오프로드하는 것을 지원하지 않습니다. 결과적으로 NIC가 TLS 오프로드를 지원하는 경우에도 소프트웨어 암호화는 TLS 1.3과 함께 사용됩니다. 이 문제를 해결하려면 오프로드가 필요한 경우 TLS 1.3을 비활성화합니다. 따라서 TLS 1.2만 오프로드할 수 있습니다. TLS 1.3을 사용 중인 경우 TLS 1.3을 오프로드할 수 없기 때문에 성능이 저하됩니다.
Bugzilla:2000616
지연 계정
기능이 기본적으로 SWAPIN
및 IO%
통계 열을 표시하지 않습니다.
초기 버전과 달리 지연된
계정 기능은 기본적으로 비활성화되어 있습니다. 결과적으로 iotop
애플리케이션에 SWAPIN
및 IO%
통계 열이 표시되지 않고 다음 경고가 표시됩니다.
CONFIG_TASK_DELAY_ACCT not enabled in kernel, cannot determine SWAPIN and IO%
taskstats
인터페이스를 사용하는 지연 계정 기능은 스레드 그룹에 속하는 모든 작업 또는 스레드에 대한 지연 통계를 제공합니다. 작업 실행 지연은 커널 리소스가 사용 가능할 때까지 기다릴 때 지연됩니다(예: 사용 가능한 CPU가 실행될 때까지 대기 중인 작업). 통계는 작업의 CPU 우선 순위, I/O 우선 순위 및
rss
제한 값을 적절하게 설정하는 데 도움이 됩니다.
이 문제를 해결하려면 런타임 또는 부팅 시 delayacct
부팅 옵션을 활성화할 수 있습니다.
런타임에
delayacct
를 활성화하려면 다음을 입력합니다.echo 1 > /proc/sys/kernel/task_delayacct
이 명령은 기능 시스템 전체에 적용되지만 이 명령을 실행한 후 시작하는 작업에 대해서만 사용할 수 있습니다.
부팅 시
지연을
영구적으로 활성화하려면 다음 절차 중 하나를 사용하십시오./etc/sysctl.conf
파일을 편집하여 기본 매개변수를 재정의합니다./etc/sysctl.conf
파일에 다음 항목을 추가합니다.kernel.task_delayacct = 1
자세한 내용은 Red Hat Enterprise Linux에서 sysctl 변수를 설정하는 방법을 참조하십시오.
- 변경 사항을 적용하려면 시스템을 재부팅합니다.
kernel 명령줄에
delayacct
옵션을 추가합니다.자세한 내용은 커널 명령줄 매개변수 구성을 참조하십시오.
결과적으로 iotop
애플리케이션에 SWAPIN
및 IO%
통계 열이 표시됩니다.
Bugzilla:2132480
kdump
메커니즘이 LUKS 암호화 대상에서 vmcore
파일을 캡처하지 못했습니다.
Linux Unified Key Setup (LUKS) 암호화 파티션이 있는 시스템에서 kdump
를 실행하는 경우 시스템에 특정 양의 사용 가능한 메모리가 필요합니다. 사용 가능한 메모리가 필요한 메모리 양보다 작으면 systemd-cryptsetup
서비스가 파티션을 마운트하지 못합니다. 결과적으로 두 번째 커널은 LUKS 암호화 대상에서 크래시 덤프 파일(vmcore
)을 캡처하지 못합니다.
kdumpctl estimate
명령을 사용하면 kdump
에 필요한 권장 메모리 크기인 권장 crashkernel 값을
쿼리할 수 있습니다.
이 문제를 해결하려면 다음 단계를 사용하여 LUKS 암호화된 대상에서 kdump
에 필요한 메모리를 설정합니다.
예상
crashkernel
값을 출력합니다.# kdumpctl estimate
crashkernel
값을 늘려 필요한 메모리 양을 구성합니다.# grubby --args=crashkernel=652M --update-kernel=ALL
변경 사항을 적용하려면 시스템을 재부팅합니다.
# reboot
결과적으로 kdump
는 LUKS 암호화 파티션이 있는 시스템에서 올바르게 작동합니다.
Bugzilla:2017401
부팅 시 크래시 커널 메모리 할당 실패
특정 Ampere Altra 시스템에서 사용 가능한 메모리가 1GB 미만인 경우 kdump
사용에 대해 크래시 커널 메모리를 할당하는 데 실패합니다. 결과적으로 kdumpctl
명령이 kdump
서비스를 시작하지 못했습니다.
이 문제를 해결하려면 다음 중 하나를 수행합니다.
-
크기 요구 사항(예:
crashkernel
=240M -
crashkernel=x,high
옵션을 사용하여kdump
에 대해 4GB 이상의 크래시 커널 메모리를 예약합니다.
결과적으로 Ampere Altra 시스템에서 kdump
에 대한 크래시 커널 메모리 할당이 실패하지 않습니다.
VMD가 활성화되면 RHEL에서 NVMe 디스크를 인식하지 못합니다.
드라이버를 재설정하거나 다시 연결할 때 VMI(볼륨 관리 장치) 도메인은 현재 소프트 재설정이 아닙니다. 결과적으로 하드웨어가 장치를 올바르게 감지하고 열거할 수 없습니다. 결과적으로 VMD가 활성화된 운영 체제는 NVMe 디스크를 인식하지 못합니다. 특히 서버를 재설정하거나 VM 머신으로 작업할 때 그러합니다.
Bugzilla:2128610
iwl7260-firmware
는 Intel Wi-Fi 6 AX200, AX210 및ECDHE ThinkPad P1 Gen 4에서 Wi-Fi를 중단
iwl7260-firmware
또는 iwl7260-wifi
드라이버를 RHEL 9.1 이상에서 제공하는 버전으로 업데이트한 후 하드웨어가 잘못된 내부 상태로 전환됩니다. 결과적으로 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:2129288
Weak-modules
from kmod
fails to work with module inter-dependencies
kmod
패키지에서 제공하는 weak-modules
스크립트는 설치된 커널과 호환되는 kABI-호환 모듈을 결정합니다. 그러나 모듈의 커널 호환성을 확인하는 동안 약한 모듈은 모듈
기호의 종속성을 더 높은에서 더 낮은 버전의 커널 릴리스까지 제공합니다. 결과적으로 다른 커널 릴리스에 대해 빌드된 상호 의존 관계가 있는 모듈이 호환되지 않는 것으로 해석될 수 있으므로 약한 모듈
스크립트가 이 시나리오에서 작동하지 않습니다.
이 문제를 해결하려면 새 커널을 설치하기 전에 최신 스포지 커널에 대해 추가 모듈을 빌드하거나 배치합니다.
Bugzilla:2103605
Mellanox ConnectX-5
어댑터를 사용하는 동안 mlx5
드라이버가 실패합니다.
이더넷 스위치 장치 드라이버 모델(switchdev
) 모드에서 DMFS(Device managed flow steering) 매개변수 및 ConnectX-5
어댑터 지원 하드웨어로 구성된 경우 mlx5
드라이버가 실패합니다. 결과적으로 다음과 같은 오류 메시지가 표시됩니다.
BUG: Bad page cache in process umount pfn:142b4b
이 문제를 해결하려면 DMFS 대신 SMFS(Software managed flow steering) 매개변수를 사용하십시오.
Bugzilla:2180665
코어가 큰 시스템에서 실시간 커널의 하드웨어 인증을 사용하려면 잠금 경합을 방지하기 위해 skew-tick=1
부팅 매개변수를 전달해야 할 수 있습니다.
다수의 소켓과 대규모 코어 개수가 있는 대규모 또는 중간 규모의 시스템은 시간 보관 시스템에 사용되는 xtime_lock
의 잠금 경합으로 인해 대기 시간이 급증할 수 있습니다. 결과적으로 멀티프로세싱 시스템에서 대기 시간이 급증하고 하드웨어 인증 지연이 발생할 수 있습니다. 이 문제를 해결하려면 skew_tick=1
부팅 매개변수를 추가하여 CPU당 타이머 눈금을 다른 시간에 시작할 수 있습니다.
잠금 충돌을 방지하려면 skew_tick=1
을 활성화합니다.
grubby
를 사용하여skew_tick=1
매개변수를 활성화합니다.# grubby --update-kernel=ALL --args="skew_tick=1"
- 변경 사항을 적용하려면 재부팅하십시오.
-
cat /proc/cmdline
명령을 실행하여 새 설정을 확인합니다.
skew_tick=1
을 활성화하면 전력 소비가 크게 증가하므로 대기 시간에 민감한 실시간 워크로드를 실행하는 경우에만 활성화해야 합니다.
Bugzilla:2214508
dkms
는 64비트 ARM CPU에서 올바르게 컴파일된 드라이버를 사용하여 프로그램 오류에 대한 잘못된 경고를 제공합니다.
동적 커널 모듈 지원(dkms
) 유틸리티는 64비트 ARM CPU의 커널 헤더가 4 킬로바이트 및 64 킬로바이트 페이지 크기가 있는 커널 모두에서 작동하는지 인식하지 못합니다. 결과적으로 커널 업데이트가 수행되고 kernel-64k-devel
패키지가 설치되지 않은 경우 dkms
는 프로그램이 올바르게 컴파일된 드라이버에서 실패한 이유에 대한 잘못된 경고를 제공합니다. 이 문제를 해결하려면 두 가지 유형의 ARM CPU 아키텍처에 대한 헤더 파일이 포함된 kernel-headers
패키지를 설치하고 dkms
및 해당 요구 사항에 국한되지 않습니다.
Jira:RHEL-25967