9장. 커널

SHMMAX 및 SHMALL 커널 매개 변수가 기본값으로 복귀

이전에는 /usr/lib/sysctl.d/00-system.conf 파일에 설정되는 kernel.shmmaxkernel.shmall 매개 변수 값이 너무 낮았습니다. 결과적으로 SAP와 같은 일부 애플리케이션이 제대로 작동할 수 없었습니다. 적절하지 않은 재정의가 삭제되고 충분히 높은 커널 기본값이 사용되고 있습니다.

Transparent Huge Pages에 의해 더이상 메모리가 손상되지 않음

Transparent Huge Pages가 읽기 및 쓰기 동작에서 제대로 동기화되지 않았습니다. 이로 인해 일부 경우 Transparent Huge Pages가 활성화되어 있을 경우 메모리 손상의 원인이 되었습니다. 메모리 장벽이 transparent huge page 처리에 추가되어 더이상 메모리 손상이 발생하지 않습니다.

SCSI LIO 업그레이드

SCSI 커널 대상 LIO가 Linux-4.0.stable에서 업그레이드되었습니다. 이에는 여러 버그 수정, iSER 관련 버그 수정, XCOPY, WRITE SAME, ATS 명령에 대한 지원 및 DIF 데이터 무결성 지원이 포함되어 있습니다.

makedumpfile은 최대 16 TB 까지의 물리적 메모리를 표시하기 위해 새로운 sadump 형식을 지원

makedumpfile 명령은 16 TB 이상의 물리적 메모리 공간을 표시할 수 있는 새로운 sadump 형식을 지원합니다. 따라서 makedumpfile 사용자는 특정 서버 모델 상의 sadump에서 생성되는 16 TB 이상의 덤프 파일을 읽을 수 있습니다.

커널 삭제 또는 업그레이드에서 더이상 경고 메세지가 표시되지 않음

kABI-호환 모듈 심볼릭 링크를 관리하기 위해 kmod가 사용하는 취약한 모듈 스크립트는 커널과 관련된 파일 삭제 시 /lib/modules/<version>/weak-updates 디렉토리를 삭제했습니다. 이러한 디렉토리는 kernel 패키지에 의해 소유되어 삭제 시 파일 시스템과 rpm에 의해 예상되는 상태가 일치하지 않게 되었습니다. 이로 인해 커널을 업그레이드 또는 삭제할 때 마다 경고 메세지가 표시되었습니다.
이러한 스크립트가 업데이트되어 weak-updates 디렉토리의 컨텐츠를 삭제하고 디렉토리 자체는 남겨 두어 더이상 경고 메세지가 표시되지 않습니다.

새 패키지: libevdev

Libevdev는 Linux 커널 입력 이벤트 장치 인터페이스의 하위 수준 라이브러리입니다. 이는 장치에서 장치 기능 및 프로세스 이벤트를 쿼리하기 위한 안전한 인터페이스를 제공합니다. 현재 xorg-x11-drv-evdev 및 xorg-x11-drv-synaptics 버전에는 종속 라이브러리로 이러한 라이브러리가 필요합니다.

Tuned는 no-daemon 모드에서 실행할 수 있음

이전에는 Tuned는 데몬으로만 실행할 수 있었기 때문에 Tuned 데몬의 메모리 공간으로 인해 소규모 시스템의 성능에 영향을 미칠 수 있었습니다. 이번 업데이트에서 상주 메모리가 필요하지 않는 no-daemon (one shot) 모드가 Tuned에 추가되었습니다. no-daemon 모드에서는 여러 Tuned 기능이 누락되어 있기 때문에 기본값으로 비활성화되어 있습니다.

새 패키지: tuned-profiles-realtime

tuned-profiles-realtime 패키지가 Red Hat Enterprise Linux Server 및 실시간 용 Red Hat Enterprise Linux에 추가되어 있습니다. 이에는 CPU 격리 및 IRQ 튜닝을 수행하기 위해 tuned 유틸리티가 사용하는 실시간 프로파일이 들어 있습니다. 프로파일을 활성화하면 격리될 CPU를 지정하고 이러한 CPU 코어에서 옮길 수 있는 모든 스레드를 이동하는가변 섹션을 읽습니다.

blk-mq로 멀티큐 I/O 스케줄링

Red Hat Enterprise Linux 7.2에는 blk-mq로 알려진 블록 장치 용 멀티 큐 I/O 스케줄링이 포함되어 있습니다. 이는 특정 장치 드라이버가 여러 하드웨어 또는 소프트웨어 큐에 I/O 요청을 매핑할 수 있게 하여 성능이 개선되었습니다. 개선된 성능은 여러 실행 스레드가 단일 장치에 I/O를 수행할 때 나타나는 잠금 경합을 감소시키는 것으로 부터 비롯됩니다. NVMe (Non-Volatile Memory Express)와 같은 새로운 장치는 여러 하드웨어 제출 및 완료 큐 용 기본 지원 및 낮은 대기 시간 성능 특성으로 인해 이러한 기능의 장점을 활용하기 위해 최상의 위치에 배치됩니다. 성능 향상은 하드웨어 및 워크로드에 따라 달라집니다.
blk-mq 기능은 현재 기본값으로 virtio-blk, mtip32xx, nvme, rbd 드라이버에 구현 및 활성화되어 있습니다.
관련 기능 scsi-mq를 통해 SCSI (Small Computer System Interface) 장치 드라이버가 blk-mq 인프라를 사용할 수 있게 합니다. scsi-mq 기능은 Red Hat Enterprise Linux 7.2에서 기술 프리뷰로 제공됩니다. scsi-mq를 활성화하려면 커널 명령행에 scsi_mod.use_blk_mq=y를 지정합니다. 기본값은 n (비활성화)입니다.
요청 기반 DM을 사용하는 DM (device mapper) 멀티패스 대상은 dm_mod.use_blk_mq=y 커널 옵션이 지정된 경우 blk-mq 인프라를 사용하도록 설정할 수 있습니다. 기본값은 n (비활성화)입니다.
기본 SCSI 장치가 blk-mq를 사용하고 있을 경우 DM 레이어에 잠금 오버헤드를 감소시킬 수 있으므로 dm_mod.use_blk_mq=y를 설정하는 것이 좋습니다.
DM 멀티패스가 시스템에서 blk-mq를 사용하고 있는지 확인하려면 cat /sys/block/dm-X/dm/use_blk_mq를 실행합니다. 여기서 dm-X는 DM 멀티패스 장치입니다. 이 파일은 읽기 전용으로 요청 기반 DM 멀티패스 장치가 생성된 때에 /sys/module/dm_mod/parameters/use_blk_mq에 있는 전체 값을 반영합니다.

SCSI 오류 메세지를 제대로 해석할 수 있음

이전에는 printk() 함수에 커널 변경이 있을 경우 SCSI (Small Computer System Interface) 오류 메세지가 여러 줄에 걸쳐 기록되었습니다. 결과적으로 다른 장치에서 여러 오류가 발생하면 오류 메세지를 제대로 해석하기가 어려웠습니다. 이번 업데이트에서 SCSI 오류 로깅 코드가 변경되어 각 오류 메세지가 오류가 발생한 장치와 연결할 수 있는 dev_printk() 옵션을 사용하여 오류 메세지를 기록할 수 있습니다.

libATA 하위 시스템 및 드라이버 업데이트

이번 업데이트에서는 libATA 하위 시스템 및 드라이버 관련 여러 버그 수정 및 기능 개선을 제공합니다.

FCoE 및 DCB 업그레이드

FCoE (Fibre Channel over Ethernet) 및 DCB (Data Center Bridging) 커널 구성 요소가 최신 업스트림 버전으로 업그레이드되어 이전 버전에 대해 여러 버그 수정 및 기능 개선을 제공합니다.

perf는 버전 4.1로 업그레이드

perf 패키지는 업스트림 버전 4.1로 업그레이드되어 성능 및 안정성 수정 및 여러 기능을 제공합니다. 특히 이번 업데이트에는 Intel Cache QoS Monitoring 및 AMD IBS Ops 기능이 추가되어 Intel Xeon v4, 압축 커널 모듈, 매개 변수화된 이벤트에 대한 지원 및 중단점 길이 지정을 위한 지원을 제공합니다. 또한 --system-wide, top -z, top -w, trace --filter-pids, trace --event 옵션 등이 perf 도구에 추가되었습니다.

TPM 2.0 지원

이번 업데이트에는 2.0 호환 버전 TPM (Trusted Platform Module) 장치의 드라이버 수준 지원이 추가되어 있습니다.

Turbostat에서 올바른 출력 결과 제공

이전에 turbostat 도구는 cpu 대신 cpu0의 /dev/cpu/0/msr 파일을 읽어 시스템이 MSR 장치 지원 여부를 감지했었습니다. 결과적으로 CPU를 비활성화할 경우 CPU가 turbostat 출력 결과에서 삭제되었습니다. 이러한 버그가 수정되어 turbostat ls 명령을 실행하면 올바른 출력 결과를 반환합니다.

Intel Xeon v5 프로세서 지원

이러한 개선된 기능을 통해 turbostat 도구에 Intel Xeon v5 프로세서 지원을 제공합니다.

zswap 도구로 zpool API 사용

이전에 zswap 도구는 압축된 페이지를 2:1 비율로 저장하는 스토리지 풀인 zbud를 직접 사용했습니다. 이번 업데이트에서는 zbud 또는 zsmalloc 풀에 액세스할 수 있는 zpool API가 도입되었습니다: zsmalloc은 압축된 페이지를 고밀도로 저장하여 고밀도로 압축 가능한 페이지에 대해 더 많은 메모리를 다시 사용할 수 있게 합니다. 이번 업데이트에서 zsmalloc은 /mm 드라이버에 승격되어 zpool이 제대로 작동합니다.

/proc/pid/cmdline 파일 길이 제한 없음

ps 명령의 /proc/pid/cmdline 파일 길이 제한은 커널에서 4096자로 하드 코드되어 있었습니다. 이번 업데이트에서 /proc/pid/cmdline 길이는 무제한으로 되어 긴 명령행 인수를 갖는 프로세스를 나열하는데 유용합니다.

dma_rmb 및 dma_wmb 지원 제공

이번 업데이트에서는 캐시 간섭 메모리 쓰기 및 읽기를 동기화하기 위해 dma_wmb() 및 dma_rmb()의 두 가지 새로운 기본 형식을 도입하고 있습니다. 이러한 기능은 드라이버에서 적절한 용도로 사용 가능합니다.