안녕하세요! MinIO AIStor의 성능을 최대로 끌어내기 위한 RHEL 10 커널 파라미터 튜닝에 대해 문의하셨군요. 제공해주신 설정은 지연 시간(latency)을 최소화하고 처리량(throughput)을 극대화하는 데 초점을 맞춘, 매우 공격적인 성능 우선의 튜닝입니다.
각 파라미터가 RHEL 10의 일반적인 기본값과 비교하여 어떤 역할을 하고, MinIO 워크로드에 어떤 효과를 주는지 섹션별로 자세히 분석해 드리겠습니다.
이 설정의 핵심 목표는 다음과 같습니다.
[vm] & [sysfs] : 가상 메모리 및 THP (Transparent Huge Pages)transparent_hugepage=madvisemadvise는 애플리케이션이 madvise() 시스템 콜을 통해 명시적으로 요청할 때만 THP를 사용하도록 설정합니다.enabled=alwaysalways 설정은 커널이 자동으로 메모리 페이지를 합치면서 예기치 않은 순간적인 지연(latency spike)을 유발할 수 있습니다. MinIO와 같은 데이터베이스나 스토리지 시스템에서는 이러한 지연이 성능에 치명적입니다. madvise로 변경하면 애플리케이션이 필요할 때만 제어할 수 있어, 시스템의 응답 시간을 예측 가능하고 안정적으로 만듭니다./sys/.../defrag=defer+madvise 및 .../max_ptes_none=0madvise를 더욱 강화합니다. defrag 설정은 THP 할당을 위한 메모리 조각 모음을 지연시키고, max_ptes_none=0은 백그라운드에서 THP를 생성하는 khugepaged 커널 스레드의 작동을 사실상 중지시킵니다.defrag는 always 또는 madvise, max_ptes_none은 0이 아닌 값입니다.[cpu] : CPU 성능 제어governor=performanceperformance는 CPU를 항상 최대 주파수로 고정시킵니다.ondemand 또는 schedutil (CPU 부하에 따라 동적으로 주파수 조절)force_latency=1, energy_perf_bias=performance, min_perf_pct=100performance governor를 보완합니다.force_latency=1: CPU가 깊은 절전 상태(C-states)에 빠지는 것을 막아, 깨어나는 데 걸리는 시간을 줄입니다.energy_perf_bias=performance: CPU에게 전력 효율보다 성능을 우선하도록 힌트를 줍니다.min_perf_pct=100: CPU 성능을 절대 100% 미만으로 낮추지 않도록 강제합니다.[sysctl] : 커널 파라미터 상세 튜닝vm.*)vm.swappiness=0:60vm.vfs_cache_pressure=50:10050으로 낮추면 커널이 이 캐시를 메모리에 더 오래 유지하려 합니다. 수많은 객체(파일)를 다루는 MinIO의 메타데이터 조회 성능이 향상됩니다.vm.dirty_background_ratio=3 / vm.dirty_ratio=10:10, 20vm.max_map_count=524288:65530net.*)net.core.busy_poll=50 / net.core.busy_read=50:0 (비활성화)net.core.netdev_max_backlog=250000 / net.core.somaxconn=16384:1000, 4096)net.core.rmem_max/wmem_max 및 net.ipv4.tcp_rmem/tcp_wmem:net.ipv4.tcp_*):tcp_syncookies=0: SYN-flood 공격 방어 기능을 끄는 대신 약간의 성능 향상을 얻습니다. 신뢰할 수 있는 네트워크 환경을 가정합니다.tcp_timestamps=0: 타임스탬프 옵션을 꺼서 패킷 헤더 오버헤드와 CPU 사용량을 줄입니다.tcp_low_latency=1: TCP 스택이 지연 시간 최소화를 우선하도록 설정합니다.tcp_slow_start_after_idle=0: 유휴 상태였던 연결도 즉시 최대 속도로 데이터를 전송하게 하여 응답성을 높입니다.[bootloader] : 부팅 시 커널 옵션cmdline=skew_tick=1제공된 설정은 "전력 소모나 일반적인 안정성보다 오직 MinIO의 최대 성능"이라는 명확한 목표를 가지고 있습니다. 마치 일반 승용차를 F1 경주용 차로 튜닝하는 것과 같습니다.
fs.xfs.xfssyncd_centisecs)은 시스템 장애 시 데이터 손실 위험을 높일 수 있습니다. 또한, MinIO 외의 다른 일반적인 작업을 서버에서 실행할 경우 오히려 비효율적일 수 있습니다.따라서 이 설정은 MinIO AIStor 전용으로 사용되는 고성능 서버에 적용하는 것이 가장 이상적이며, 적용 전 충분한 테스트를 통해 워크로드에 미치는 긍정적/부정적 영향을 반드시 검증해야 합니다.