Linux 에서 커널 성능 카운터가 활성 상태인지 확인하는 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 에서 커널 성능 카운터가 활성화되어 있는지 확인하는 방법을 배우게 됩니다. perf stat 명령을 사용하여 명령 실행에 대한 성능 카운터를 측정하고, /sys/kernel 파일 시스템 내에서 성능 카운터 구성을 확인하며, dmesg를 사용하여 성능 카운터와 관련된 메시지에 대한 커널 로그를 검사하는 방법을 살펴볼 것입니다. 이 실습 경험을 통해 Linux 시스템에서 성능 모니터링 상태를 진단하고 이해하는 기술을 습득할 수 있습니다.

perf stat 으로 카운터 확인

이 단계에서는 perf stat 명령을 사용하여 성능 카운터를 측정하는 방법을 배우게 됩니다. 성능 카운터는 실행된 명령어 수, 캐시 미스 또는 분기 예측과 같이 CPU 내에서 발생하는 특정 이벤트를 계산하는 특수한 하드웨어 레지스터입니다.

perf 도구는 Linux 에서 성능 분석을 위한 강력한 명령줄 유틸리티입니다. perf stat은 명령을 실행하고 해당 명령 실행에 대한 성능 카운터 통계를 수집하는 데 사용됩니다.

간단한 명령을 실행하고 성능 카운터를 관찰하는 것으로 시작해 보겠습니다. 디렉토리 내용을 나열하는 ls 명령을 사용합니다.

아직 열지 않았다면 터미널을 엽니다. 데스크탑 왼쪽에서 Xfce 터미널 아이콘을 찾을 수 있습니다.

이제 다음 명령을 입력하고 Enter 키를 누릅니다.

perf stat ls

다음과 유사한 출력을 볼 수 있습니다.

 Performance counter stats for 'ls':

          <placeholder>      task-clock (msec)         ##    <placeholder> CPUs utilized
          <placeholder>      context-switches          ##    <placeholder> /sec
          <placeholder>      cpu-migrations            ##    <placeholder> /sec
          <placeholder>      page-faults               ##    <placeholder> /sec
          <placeholder>      cycles                    ##    <placeholder> GHz
          <placeholder>      instructions              ##    <placeholder>  insns per cycle
          <placeholder>      branches                  ##    <placeholder> % of all instructions
          <placeholder>      branch-misses             ##    <placeholder> % of all branches

          <placeholder> msec task-clock                ##    <placeholder> CPUs utilized

정확한 숫자와 이벤트는 시스템 및 특정 실행에 따라 다를 수 있지만, ls 명령 실행 중에 성능 이벤트 목록과 해당 카운트를 볼 수 있습니다.

볼 수 있는 몇 가지 일반적인 이벤트는 다음과 같습니다.

  • task-clock: 작업이 CPU 에서 실행된 총 시간입니다.
  • cycles: 소요된 CPU 사이클 수입니다.
  • instructions: 실행된 명령어 수입니다.
  • branch-misses: 분기 예측이 잘못된 횟수입니다.

이러한 카운터를 이해하면 코드 또는 시스템에서 성능 병목 현상을 식별하는 데 도움이 될 수 있습니다.

더 복잡한 명령이나 스크립트에서 perf stat을 실행하여 성능을 분석할 수도 있습니다.

예를 들어, 간단한 sleep 명령에서 perf stat을 실행해 보겠습니다.

perf stat sleep 1

이렇게 하면 시스템이 1 초 동안 절전 상태일 때 성능 카운터가 측정됩니다. 출력에는 sleep 프로세스에 대한 카운터가 표시됩니다.

다양한 명령에서 perf stat을 실행하여 카운터가 어떻게 변경되는지 실험해 보십시오.

다음 단계로 진행하려면 계속을 클릭하십시오.

/sys/kernel 에서 카운터 설정 확인

이 단계에서는 Linux 커널의 /sys 파일 시스템에서 성능 카운터 구성이 어떻게 노출되는지 살펴봅니다. /sys 파일 시스템은 커널 데이터 구조에 대한 인터페이스를 제공하여 커널 매개변수를 검사하고 때로는 수정할 수 있도록 합니다.

권한 없는 사용자가 원시 성능 카운터 이벤트에 액세스할 수 있는지 여부와 같은 성능 카운터 설정은 종종 /sys/kernel/perf_event의 파일을 통해 제어됩니다.

관련 디렉토리로 이동하여 구성 파일을 검사해 보겠습니다.

먼저 cd 명령을 사용하여 현재 디렉토리를 /sys/kernel/perf_event로 변경합니다. 기본 디렉토리는 ~/project이므로 절대 경로를 사용해야 합니다.

다음 명령을 입력하고 Enter 키를 누릅니다.

cd /sys/kernel/perf_event

이제 /sys/kernel/perf_event 디렉토리에 있습니다. ls 명령을 사용하여 이 디렉토리 내의 파일을 볼 수 있습니다.

ls

다음과 같은 파일 목록이 표시됩니다.

kptr_restrict  perf_event_paranoid  sysfs_deprecated

우리가 관심 있는 파일은 perf_event_paranoid입니다. 이 파일은 권한 없는 사용자가 성능 이벤트에 접근할 수 있는 수준을 제어합니다. 값이 낮을수록 덜 민감 (더 많은 접근) 하고, 값이 높을수록 더 민감 (더 적은 접근) 합니다.

cat 명령을 사용하여 이 파일의 내용을 살펴보겠습니다.

cat perf_event_paranoid

출력은 일반적으로 -1 에서 2 사이의 단일 숫자입니다.

<number>

다음은 서로 다른 값의 일반적인 의미입니다.

  • -1: 모든 사용자가 모든 perf 기능을 사용할 수 있습니다.
  • 0: 모든 사용자가 프로세스별 및 CPU 별 측정을 위해 perf를 사용할 수 있습니다.
  • 1: 권한 있는 사용자 (예: root) 만 프로세스별 및 CPU 별 측정을 위해 perf를 사용할 수 있습니다.
  • 2: 권한 있는 사용자만 프로세스별 측정을 위해 perf를 사용할 수 있습니다.

보안상의 이유로 기본값은 종종 2 로 설정되어 권한 없는 사용자가 잠재적으로 성능 카운터를 사용하여 다른 프로세스에 대한 정보를 얻는 것을 방지합니다.

이 파일을 이해하면 성능 모니터링 접근과 관련하여 시스템이 어떻게 구성되어 있는지 알 수 있습니다.

계속 진행하려면 계속을 클릭하십시오.

dmesg 에서 카운터 로그 검토

이 단계에서는 dmesg 명령을 사용하여 커널 메시지를 보는 방법을 배우게 됩니다. 커널 메시지에는 때때로 성능 카운터 또는 perf 이벤트와 관련된 정보가 포함될 수 있습니다. dmesg는 커널 링 버퍼 메시지를 표시하는 명령입니다. 이러한 메시지는 부팅 및 런타임 중에 커널에 의해 생성되며 디버깅 및 시스템 분석에 유용한 정보를 포함할 수 있습니다.

perf 자체는 일반적으로 통계를 터미널에 직접 출력하지만, 성능 모니터링 하드웨어와의 커널 상호 작용 또는 관련 문제는 커널 링 버퍼에 기록될 수 있습니다.

커널 메시지를 보려면 dmesg 명령을 사용합니다.

dmesg

이렇게 하면 커널 링 버퍼의 모든 메시지를 표시하는 잠재적으로 많은 양의 출력이 터미널에 인쇄됩니다.

perf 또는 성능 카운터와 관련된 메시지를 찾으려면 dmesg의 출력을 grep 명령으로 파이프할 수 있습니다. grep은 패턴을 사용하여 텍스트를 검색하는 강력한 도구입니다.

"perf"라는 단어가 포함된 메시지를 검색해 보겠습니다.

dmesg | grep perf

이 명령은 다음을 수행합니다.

  • dmesg: 커널 메시지를 출력합니다.
  • |: 파이프이며, 왼쪽의 명령 출력을 오른쪽의 명령에 대한 입력으로 보냅니다.
  • grep perf: "perf"라는 단어가 포함된 줄을 입력에서 검색합니다.

다음과 유사한 출력을 볼 수 있습니다 (또는 최근 커널 이벤트에 따라 아무것도 없을 수 있습니다).

[<placeholder>] perf: interrupt took too long (<placeholder> > <placeholder> ms), lowering kernel.perf_event_paranoid to <placeholder>

이 예제 메시지는 성능 인터럽트가 너무 오래 걸렸고, 커널이 잠재적으로 문제를 완화하기 위해 perf_event_paranoid 설정 (이전 단계에서 확인) 을 덜 제한적인 값으로 자동 조정했음을 나타냅니다.

"performance" 또는 "counter"와 같은 다른 관련 용어를 검색할 수도 있습니다.

dmesg | grep performance
dmesg | grep counter

dmesg 출력을 검사하면 성능 모니터링과 관련된 문제를 진단하거나 커널이 성능 카운터 하드웨어와 어떻게 상호 작용하는지 이해하는 데 도움이 될 수 있습니다.

이 랩을 완료하려면 계속을 클릭하십시오.

요약

이 랩에서는 Linux 에서 커널 성능 카운터가 활성화되어 있는지 확인하는 방법을 배웠습니다. 먼저 ls와 같은 간단한 명령에 대한 성능 카운터를 측정하기 위해 perf stat 명령을 사용하여 다양한 성능 이벤트와 해당 카운트의 출력을 관찰했습니다. 이는 성능 분석을 위한 perf 도구의 기본 기능을 보여주었습니다.

그런 다음 랩에서는 /sys/kernel 파일 시스템 내에서 성능 카운터 구성을 확인하고 dmesg 출력에서 카운터 관련 로그를 검사하는 과정을 안내했습니다. 이러한 단계는 perf stat 명령 외에 커널 성능 카운터의 지원 및 활성 상태를 확인하는 방법을 제공하여 가용성을 평가하는 대체 방법을 제공했습니다.