성능 중단에 시간이 너무 오래 걸렸지만 성능이 설치되지 않았습니다.

성능 중단에 시간이 너무 오래 걸렸지만 성능이 설치되지 않았습니다.

dmesg 내 서버가 때때로 충돌하기 시작하기 때문에 방금 서버를 확인했습니다 . 거기에서 나는 다음 줄을 읽었습니다.

perf interrupt took too long (2528 > 2500), lowering kernel.perf_event_max_sample_rate to 50000

여러 번 나타납니다.
perf는 성능 분석 도구인 것으로 기억하지만 설치한 기억은 없습니다. 그래서 나는 다음을 확인했다:

~$ dpkg -l *perf*
dpkg-query: no packages found matching *perf*

내 질문:

  • 이것은 폭풍이 다가오고 있다는 신호인가? 이 줄이 몇 번 나타나고 다음으로 시작하는 스택 덤프가 있기 때문입니다.rcu_sched detected stalls
  • 이것들은 어디서 오는 걸까요?

답변1

메시지는 Linux 커널에서 나옵니다. 더 정확하게는 다음과 같습니다.perf_duration function존재하다linux/kernel/events/core.c:

static void perf_duration_warn(struct irq_work *w)
{
    printk_ratelimited(KERN_INFO
        "perf: interrupt took too long (%lld > %lld), lowering "
        "kernel.perf_event_max_sample_rate to %d\n",
        __report_avg, __report_allowed,
        sysctl_perf_event_sample_rate);
}

나는 당신이 정확히 무슨 뜻인지 모르겠어요 :

이것은 폭풍이 다가오고 있다는 신호인가?

하지만 귀하의 장치 중 하나에 문제가 있는 것 같습니다.

추신: 주의 깊게 읽으면 코드의 메시지는 이지만 perf: interrupt took too long메시지는 입니다 perf interrupt took too long. 콜론은 커널 버전 4.6에 추가되었습니다.

답변2

한동안 내 데스크탑 시스템에 비슷한 메시지가 나타났습니다. 이는 하나 또는 때로는 여러 개의 코어가 몇 분 이상 논스톱 디스크 I/O( Din ) 에 멈춘 후에 발생합니다 . psI/O 스케줄링의 경쟁 조건으로 인해 교착 상태가 발생한 것으로 의심되지만 디버깅 방법을 모르겠습니다. CFQ 대신 적절한 디스크의 최종 기한 스케줄러로 전환하는 것이 도움이 되는 것 같습니다.

# echo deadline > /sys/block/sdX/queue/scheduler 

나는 스케줄링 프로세스에서 짧은 일시 정지를 관찰했지만 데드라인 스케줄러의 두 번째 대기열은 긴 일시 정지를 완화하는 것처럼 보였습니다.

누구든지 이것에 대해 더 많은 정보를 밝힐 수 있다면 감사하겠습니다.

편집하다

rcu_sched오류/경고가 관련되어 있는지는 모르겠지만 가능성이 매우 높습니다. 나는 그것들을 이해하지 못합니다. 아마도 내 커널 구성이 다르기 때문일 것입니다.

코어가 정지할 때 내가 보는 ps것은

$ ps axu | grep ' D'
dirk      4720 13.0  5.1 1615772 842444 pts/3  Dl+  07:27  24:54 iceweasel -P default

I/O를 수행하는 데 사용되는 프로세스입니다. D에 따르면 "중단되지 않는 절전 모드(일반적으로 I/O)"를 의미합니다 man ps.

답변3

스왑 공간을 암호화하는 경우 이 오류가 자주 발생할 수 있습니다.

자주.

dm_crypt가 범인입니다.

그래도 정보는 손실되지 않습니다.

관련 정보