[오류 분석] perf: interrupt took too long — kernel.perf_event_max_sample_rate 자동 조정 경고

반응형

 

[오류 분석] perf: interrupt took too long — kernel.perf_event_max_sample_rate 자동 조정 경고

[오류 분석] perf: interrupt took too long — kernel.perf_event_max_sample_rate 자동 조정 경고

🧩 원인

이 메시지는 커널 성능 분석 도구인 perf가 너무 높은 빈도로 이벤트를 샘플링하여, 커널이 스스로 샘플링 속도를 낮추는 보호 동작을 수행할 때 나타납니다.

perf: interrupt took too long (XXXX > XXXX), lowering kernel.perf_event_max_sample_rate to XXXX
  • Perf 또는 eBPF 기반 툴이 과도한 샘플링을 수행
  • CPU 부하가 높아 인터럽트 처리 지연 발생
  • 가상화 환경에서 타이머 지연 또는 클럭 불일치

🔍 분석

커널은 샘플링 빈도를 kernel.perf_event_max_sample_rate 파라미터로 제어하며, 기본값은 100000(초당 10만 회)입니다. 성능 부하가 감지되면 자동으로 절반 이하로 낮춰 안정화합니다.

sysctl -a | grep perf_event_max_sample_rate
kernel.perf_event_max_sample_rate = 50000

이는 “시스템 부하에 따라 perf의 샘플링 속도를 자동으로 낮췄다”는 의미로, 심각한 오류가 아닌 보호 동작입니다.

⚙️ 조치

다음은 실제 점검 및 복구용 Bash 스크립트 예시입니다.

#!/bin/bash
# perf interrupt took too long 자동 진단 & 복구
echo "🔍 PERF INTERRUPT AUTO-DIAG START"
DATE=$(date "+%Y-%m-%d %H:%M:%S")
echo "실행 시각: $DATE"

RATE=$(sysctl -n kernel.perf_event_max_sample_rate)
if [ "$RATE" -lt 50000 ]; then
  echo "⚠️ 샘플링 속도가 낮게 조정됨 (${RATE})"
  sysctl -w kernel.perf_event_max_sample_rate=100000
  echo "✅ 복구 완료"
else
  echo "✅ 정상 (${RATE})"
fi

💡 해결 방안 요약

항목내용
오류 의미Perf 이벤트가 과도하게 발생하여 자동으로 샘플링 속도 조정
시스템 영향거의 없음, 일시적 경고
원인Perf/eBPF 과다 샘플링, CPU 과부하, 가상화 환경
해결샘플링 주기 조정 또는 무시 가능

📈 결과

샘플링 속도 조정 후 perf 이벤트 부하는 완화되며, CPU 인터럽트 지연 경고는 사라집니다. 지속적인 발생 시 perf 또는 systemd 기반 모듈의 수집 주기를 재설정해야 합니다.

반응형

 

반응형
LIST