이 페이지에서는 각 커널 출시에 포함된 주요 기능을 요약하고 추가 정보 링크를 제공합니다.
커널 6.12 새로운 기능
이 섹션에서는 커널 6.12의 새로운 기능을 설명합니다.
메모리 할당 프로파일링
메모리 사용을 이해하려면 할당이 이루어지는 위치를 알아야 합니다.
커널 6.12에는 메모리 할당 프로파일링 (구성에서 CONFIG_MEM_ALLOC_PROFILING
)이라는 새로운 메모리 할당 특성 시스템이 포함되어 있습니다.
메모리 할당 프로파일링을 사용하면 각 할당이 고유한 소스 줄에 기여하므로 할당 문제를 빠르게 식별할 수 있습니다.
또한 메모리 할당 프로파일링은 다음을 지원합니다.
엔지니어링 단계에서 사용되지만 표준 GKI 이미지에서 사용할 수 있습니다.
sysctl.vm.mem_profiling
부팅 매개변수를 사용하여 사용 설정할 수 있습니다.커널 내 모듈과 로드된 모듈 모두에 적용됩니다.
제로 카피 및 멀티샷 읽기를 사용한 더 빠른 io_uring
커널 6.12에서 statsd
및 logd
모듈은 sendfile 제로 카피를 사용하여 성능을 개선합니다.
또한 이 커널 버전은 단일 읽기 작업이 여러 데이터 조각을 동시에 가져올 수 있는 멀티샷 읽기를 구현하여 성능을 개선합니다.
Berkeley Packet Filter (BPF) 기능 및 지원 개선
커널 6.12에서 BPF 도구 모음이 CO-RE 및 여러 최신 기능을 지원하도록 이동되었습니다. 또한 새로운 BPF 로더를 통해 AOSP에 포함된 프로그램에 최신 BPF를 사용할 수 있습니다.
프록시 실행
프록시 실행을 사용하면 스케줄러가 우선순위가 낮은 프로세스에서 보유한 잠금을 복구하기 위해 우선순위가 높은 프로세스에서 CPU 주기를 차용할 수 있습니다. 이 기능은 우선순위 역전 문제를 완화합니다.
커널 6.6 새로운 기능
이 섹션에서는 커널 6.6의 새로운 기능을 설명합니다.
Rust 지원
여러 커널 6.6 프로젝트에서 Rust를 사용합니다.
가상 메모리 영역 (VMA)별 잠금
커널 6.6은 가상 메모리 영역별 잠금을 사용하여 mmap_sem
(이전 명칭: mmap_lock
)의 경합 문제를 해결합니다. 따라서 스레드 수를 많이 사용하는 앱의 경우 실행 시간이 최대 20%까지 단축될 수 있습니다.
가장 빠른 적격 가상 기한 우선 (EEVDF) 스케줄러가 CFS를 대체함
EEVDF는 완전히 공정한 스케줄러 (CFS)를 대체하여 단기 작업과 장기 작업 간의 CPU 액세스 균형을 더 잘 맞춥니다.
읽기 복사 업데이트 (RCU) 콜백에서 전력 소비 감소
RCU_LAZY
옵션은 타이머 기반 RCU 콜백 일괄 처리 방법을 사용하여 전력을 절약합니다. 부하가 적거나 유휴 상태인 시스템의 경우 이 옵션으로 소비되는 전력을 5~10% 줄일 수 있습니다.
더 나은 ZRAM 메모리 압축
새로운 CONFIG_ZRAM_MULTI_COMP
빌드 설정을 사용하면 ZRAM이 세 가지 대체 알고리즘 중 하나를 사용하여 페이지를 재압축할 수 있습니다. 이렇게 재압축하면 압축된 메모리가 더욱 축소되어 활성 작업에 더 많은 여유 공간이 제공됩니다.
커널 6.1 새로운 기능
이 섹션에서는 커널 6.1의 새로운 기능을 설명합니다.
커널 제어 흐름 무결성 (KCFI)으로 더 빠른 보안
KCFI는 제어 흐름 무결성 (CFI)을 대체하여 런타임 비용을 절감하고 빌드 시간 비용을 없앱니다. 런타임 비용이 절감되어 CFI에 비해 더 많은 곳에서 KCFI를 사용 설정할 수 있습니다(특히 tracepoint와 공급업체 후크).
커널 6.1에는 KCFI 외에도 엄격한 memcpy
경계 검사, 직선 추측 공격 완화 등 여러 보안 기능이 도입되었습니다.
KCFI에 관한 자세한 내용은 커널 제어 흐름 무결성을 참고하세요.
다세대 LRU (MGLRU)
실제로 사용 중인 페이지를 더 잘 식별하여 메모리 관리를 개선하기 위해 MGLRU가 커널 6.1에 추가되었습니다. 이 개선사항은 시스템에 메모리 부족이 발생할 때 앱을 중지할 필요성을 줄여줍니다. 이 업데이트는 전반적인 기기 응답성이 개선되어 사용자 환경도 개선합니다.
MGLRU 구현에는 새로운 RCU 안전 메이플 트리 지원도 포함되어 있으며, 이 트리는 경우에 따라 레드블랙 트리 (rbtree)를 대체하는 데 사용할 수 있습니다. 사용하면 RCU 안전 메이플 트리는 더 작은 설치 공간과 잠금 없음으로 인해 성능이 향상됩니다.
MGLRU에 관한 자세한 내용은 Multi-Gen LRU를 참고하세요.
스케줄링
스케줄러를 유지하고 업데이트하는 것은 커널을 개선하는 작업의 핵심 측면입니다. 6.1의 커널 업데이트에는 다음이 포함됩니다.
- L2 캐시를 공유하는 코어로 마이그레이션하여 성능을 높이는 클러스터 인식 스케줄링이 추가되었습니다.
- 불필요한 에너지 마진 휴리스틱이 삭제되었습니다. 일부 마이그레이션을 제한함으로써 이 업데이트는 에너지 활용도를 최대 5%까지 개선합니다.
- 절전 모드 해제 지연 시간을 줄이기 위해 부하 분산이 개선되었습니다.
- RCU 긴급 유예 기간을 실시간 kthread로 이동 이 업데이트로 RCU 관련 지연 시간 이상치가 크게 줄었습니다.
그래픽
커널 6.1에는 Vulcan Video API의 필요에 따라 동기화 파일을 내보내고 가져오기 위한 dma-buf의 새로운 메서드가 포함되어 있습니다.
새로운 futex_waitv()
메서드는 여러 futex를 동시에 기다려 다른 플랫폼에서 게임 포팅을 간소화합니다.
디버그 도구
디버그 빌드에서 커널 동시 실행 위생 검사기 (KCSAN)를 사용하여 커널 코드의 경합을 식별합니다.
또한 커널 메모리 소독기 (KMSAN)를 사용하여 커널에서 초기화되지 않은 값을 찾습니다.
ARM64 지원 개선
6.1 커널은 다음을 비롯한 ARM64 아키텍처의 여러 개선사항을 제공합니다.
- ARMv8.6 타이머 확장 프로그램 지원
- QARMA3 포인터 인증 알고리즘 지원
- ARMv9 확장 가능한 행렬 확장 프로그램 (SME) 초기 지원
- 대체 기능 패치를 개선하여 커널 이미지 크기 감소