4.9. 커널
RHEL 9.1의 커널 버전
Red Hat Enterprise Linux 9.1은 커널 버전 5.14.0-162와 함께 배포됩니다.
list_lru
의 메모리 사용량이 최적화되었습니다.
내부 커널 데이터 구조인 list_lru
는 커널 inodes 및 파일의 디렉터리 항목의 "최근에 사용됨" 상태를 추적합니다. 이전 버전에서는 list_lru
할당된 구조의 수는 마운트 지점 수와 현재 메모리 cgroup
수에 직접적으로 비례했습니다. 이 두 수 모두 실행 중인 컨테이너 수로 증가하여 O(n^2)
의 메모리 사용량입니다. 여기서 n
은 실행 중인 컨테이너 수입니다. 이번 업데이트에서는 시스템의 list_lru
의 메모리 사용을 O(n)
로 최적화합니다. 결과적으로 이제 사용자 애플리케이션에 충분한 메모리를 사용할 수 있으며 특히 컨테이너가 많은 시스템에서 사용할 수 있습니다.
(BZ#2013413)
BPF가 Linux 커널 버전 5.16으로 변경
BPF(Berkeley Packet Filter) 기능은 여러 버그 수정 및 개선 사항이 포함된 Linux 커널 버전 5.16로 변경되었습니다. 주요 변경 사항은 다음과 같습니다.
lib
APIbpf
사용자 공간 라이브러리의 간소화된 내부 BPF 프로그램 섹션 처리 및 bpf_ programs_set_attach_target()bpf_ program__set_attach_target()
API는 BPF 기반 프로그램의 BTF 기반 연결 대상을 설정합니다.-
선언 태그를 지정할 수 있는
BTF_KIND_TAG
유형에 대한 지원이 추가되었습니다. -
추적 프로그램에서 하드웨어의 마지막 브랜치 레코드(LBR)를 캡처할 수 있는
bpf_get_branch_snapshot()
도우미에 대한 지원이 추가되었습니다. -
레거시 인터페이스를 통해
kprobe
이벤트 생성을 가능하게 하는libbpf
사용자 공간 라이브러리에서 레거시kprobe
이벤트 지원을 추가했습니다. -
__sk_buff
도우미 기능을 사용하여 BPF 특정 구조를 통해 하드웨어 타임스탬프에 액세스하는 기능이 추가되었습니다. -
AF_XDP
버퍼 풀에서 RX 버퍼 할당을 위한 배치된 인터페이스에 대한 지원이 추가되어i40e
및빙하에
대한 드라이버 지원이 추가되었습니다. -
최근 병합된 레거시
kprobe
를 보완하기 위해libbpf
사용자 공간 라이브러리에 기존uprobe
지원이 추가되었습니다. -
bpf_trace_vprintk()
를 variadicprintk
도우미로 추가했습니다. -
libbpf
옵트인을libbpf
1.0 노력의 일부로 더 엄격한 BPF 프로그램 섹션 이름 처리를 위해 추가했습니다. -
libbpf
지원을 추가하여perf RB
와 같은 특수 맵을 찾고 이를 생성하는 동안 BTF 유형 식별자를 내부적으로 삭제합니다. -
bloomfilter
BPF 맵 유형을 추가하여 세트에 요소가 있는지 테스트합니다. - BPF의 커널 모듈 함수 호출에 대한 지원이 추가되었습니다.
-
경량화에 typeless 및 약한
ksym
에 대한 지원이 추가되었습니다. -
BTF_KIND_DECL_TAG
유형에 대한 지원이 추가되었습니다.
실행 중인 커널에서 사용할 수 있는 BPF 기능의 전체 목록에 대한 자세한 내용은 bpftool feature
명령을 사용하십시오.
(BZ#2069045)
BTF 데이터가 커널 모듈에 있습니다.
BPF 유형 형식(BTF)은 BPF 프로그램 및 맵과 관련된 디버그 정보를 인코딩하는 메타데이터 형식입니다. 이전에는 커널 모듈의 BTF 데이터가 kernel-debuginfo
패키지에 저장되었습니다. 결과적으로 커널 모듈에 BTF를 사용하기 위해 해당 kernel-debuginfo
패키지를 설치해야 했습니다. 이번 업데이트를 통해 이제 BTF 데이터가 커널 모듈에 직접 있습니다. 따라서 BTF에 대한 추가 패키지를 설치할 필요가 없습니다.
(BZ#2097188)
kernel-rt
소스 트리가 RHEL 9.1 트리로 업데이트됨
최신 Red Hat Enterprise Linux 커널 소스 트리를 사용하도록 kernel-rt
소스가 업데이트되었습니다. 실시간 패치 세트도 최신 업스트림 버전 v5.15-rt
로 업데이트되었습니다. 이러한 업데이트는 여러 버그 수정 및 향상된 기능을 제공합니다.
(BZ#2061574)
ARM 및 AMD 및 Intel 64비트 아키텍처에서 동적 선점 스케줄링 활성화
RHEL 9는 ARM 및 AMD 및 Intel 64비트 아키텍처에서 동적 스케줄링 기능을 제공합니다. 이번 개선된 기능을 통해 컴파일 시간 대신 부팅 또는 런타임에 커널의 선점 모드를 변경할 수 있습니다. /sys/kernel/debug/sched/preempt
파일에는 현재 설정이 포함되어 있으며 런타임
수정을 허용합니다.
DYNAMIC_PREEMPT
옵션을 사용하면 부팅 시 preempt=
변수를 none
,자발적 또는 자발적인
선점으로 완전히
설정할 수 있습니다. 동적 선점 처리를 사용하여 기본 선점 모델을 재정의하여 스케줄링 대기 시간을 개선할 수 있습니다.
(BZ#2065226)
stalld
가 버전 1.17로 업데이트됨
stall
데몬을 제공하는 stalld
프로그램은 Linux 시스템에서 운영 체제 스레드의 종료 상태를 방지하기 위한 메커니즘입니다. 이 버전은 starvation 상태의 스레드를 모니터링합니다. 새로 고침은 스레드가 CPU 실행 대기열에 있는 경우 starvation 임계값보다 더 오래 발생합니다.
이 stalld
버전에는 이전 버전보다 많은 개선 사항 및 버그 수정이 포함되어 있습니다. 주목할 만한 변경에는 실행 가능한 종료 작업을 감지할 수 있는 기능이 포함되어 있습니다.
stalld
가 별점 스레드를 감지하면 프로그램은 스레드의 스케줄링 클래스를ECDHE _DEADLINE
정책으로 변경하여 스레드를 실행할 지정된 CPU에 대한 약간의 시간을 스레드에 부여합니다. timeslice
를 사용하면 스레드는 원래 스케줄링 정책으로 돌아가고 stalld
는 스레드 상태를 계속 모니터링합니다.
tpm2-tools
패키지가 tpm2-tools-5.2-1
버전으로 변경되었습니다.
tpm2-tools
패키지는 tpm2-tools-5.2-1
버전으로 변경되었습니다. 이 업그레이드는 많은 중요한 개선 사항 및 버그 수정을 제공합니다. 주요 변경 사항은 다음과 같습니다.
-
tpm2_createprimary
및tpm2_create
툴을 사용하여 기본 오브젝트 생성 시 공개 키 출력에 대한 지원을 추가합니다. -
tpm2_print
툴에 대한 지원을 추가하여 공개 키 출력 형식을 출력합니다.tpm2_print
는 신뢰할 수 있는 플랫폼 모듈(TPM) 데이터 구조를 디코딩하고 첨부된 요소를 출력합니다. -
64KB보다 큰 로그를 읽기 위해
tpm2_eventlog
툴에 지원을 추가합니다. -
세션 속성 표시 및 구성을 지원하기 위해
tpm2_sessionconfig
툴을 추가합니다.
주요 변경 사항에 대한 자세한 내용은 /usr/share/doc/tpm2-tools/Changelog.md
파일을 참조하십시오.
(BZ#2090748)
Intel E800 장치가 iWARP 및 RoCE 프로토콜을 지원
이 향상된 기능을 통해 enable_iwarp
및 enable_roce
devlink 매개변수를 사용하여 iWARP 또는 RoCE 프로토콜 지원을 해제할 수 있습니다. 이 필수 기능을 사용하면 프로토콜 중 하나로 장치를 구성할 수 있습니다. Intel E800 장치는 동일한 포트에서 두 프로토콜을 동시에 지원하지 않습니다.
특정 E800 장치에 대한 iWARP 프로토콜을 활성화 또는 비활성화하려면 먼저 카드의 PCI 위치를 가져옵니다.
$ lspci | awk '/E810/ {print $1}' 44:00.0 44:00.1 $
그런 다음 프로토콜을 활성화하거나 비활성화합니다. 첫 번째 포트에 pci/0000:44:00.0
을 사용하고 카드의 두 번째 포트에 pci/0000:44:00.1
을 devlink 명령의 인수로 사용할 수 있습니다.
$ devlink dev param set pci/0000:44:00.0 name enable_iwarp value true cmode runtime $ devlink dev param set pci/0000:44:00.0 name enable_iwarp value false cmode runtime
특정 E800 장치에 대한 RoCE 프로토콜을 활성화 또는 비활성화하려면 위에 표시된 대로 카드의 PCI 위치를 가져옵니다. 다음 명령 중 하나를 사용합니다.
$ devlink dev param set pci/0000:44:00.0 name enable_roce value true cmode runtime $ devlink dev param set pci/0000:44:00.0 name enable_roce value false cmode runtime
(BZ#2096127)