> 패키지 및 시스템 관리 > perf

perf: 리눅스 성능 분석 도구

perf는 Linux 커널에 내장된 강력한 성능 모니터링 및 분석 도구입니다. CPU 사용량, 캐시 미스, 시스템 호출 등 다양한 하드웨어 및 소프트웨어 이벤트를 추적하여 애플리케이션 및 시스템의 성능 병목 현상을 식별하고 최적화하는 데 사용됩니다. 커널 레벨에서 작동하여 매우 상세하고 정확한 성능 데이터를 제공합니다.

개요

perf는 개발자와 시스템 관리자가 성능 문제를 진단하고 최적화하는 데 필수적인 도구입니다. 다양한 서브커맨드를 통해 통계 수집, 이벤트 기록, 보고서 생성 등 광범위한 성능 분석 기능을 제공합니다.

주요 기능

  • CPU 프로파일링 (CPU 사용량, 호출 스택 분석)
  • 하드웨어 이벤트 모니터링 (캐시 미스, 분기 예측 실패 등)
  • 소프트웨어 이벤트 모니터링 (스케줄링 이벤트, 페이지 폴트 등)
  • 시스템 호출 추적 및 분석
  • 동적 트레이싱 (kprobes, uprobes)

주요 옵션 (서브커맨드)

perf는 다양한 서브커맨드를 통해 기능을 수행합니다. 각 서브커맨드마다 고유한 옵션이 있습니다.

perf stat: 통계 수집

perf record: 성능 데이터 기록

perf report: 기록된 데이터 분석

perf list: 사용 가능한 이벤트 목록

생성된 명령어:

명령어를 조합해 보세요.

설명:

`perf` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

perf 명령어의 다양한 활용 예시입니다.

ls 명령어 실행 통계 보기

perf stat ls

ls 명령어가 실행되는 동안의 CPU 사이클, 명령어 수, 캐시 미스 등의 기본 성능 통계를 확인합니다.

특정 프로세스 5초간 모니터링

perf stat -p 1234 sleep 5

PID가 1234인 프로세스의 성능 통계를 5초 동안 모니터링합니다. (실제 PID로 교체 필요)

애플리케이션 실행 중 호출 그래프 기록

perf record -g ./my_app

my_app 실행 중 함수 호출 스택 정보를 포함한 성능 데이터를 기록합니다. 기록된 데이터는 perf.data 파일에 저장됩니다.

기록된 데이터 분석

perf report

perf record로 생성된 perf.data 파일을 대화형으로 분석하여 성능 병목 현상을 시각적으로 확인합니다.

사용 가능한 하드웨어 이벤트 목록 보기

perf list hw

현재 시스템에서 perf가 모니터링할 수 있는 모든 하드웨어 성능 이벤트 목록을 확인합니다.

설치

perf는 대부분의 리눅스 배포판에서 기본적으로 설치되어 있지 않을 수 있습니다. 다음 명령어를 사용하여 설치할 수 있습니다.

Debian/Ubuntu

sudo apt update
sudo apt install linux-tools-common linux-tools-$(uname -r)

Debian 또는 Ubuntu 기반 시스템에서 perf를 설치하는 명령어입니다. 커널 버전에 맞는 linux-tools 패키지를 설치해야 합니다.

CentOS/RHEL/Fedora

sudo yum install perf
# 또는 sudo dnf install perf (Fedora)

CentOS, RHEL 또는 Fedora 기반 시스템에서 perf를 설치하는 명령어입니다.

팁 & 주의사항

perf 사용 시 유용한 팁과 주의해야 할 사항들입니다.

루트 권한

대부분의 perf 명령어는 시스템 전체의 성능 데이터를 수집하므로 루트 권한(sudo)이 필요합니다.

  • perf 명령어 실행 시 'Operation not permitted' 오류가 발생하면 sudo를 사용해 보세요.

커널 심볼 로드

perf report에서 함수 이름이 'unknown'으로 표시되는 경우, 커널 심볼을 로드해야 합니다. 이는 'kernel-debuginfo' 또는 'kernel-devel' 패키지 설치를 통해 가능합니다.

  • CentOS/RHEL: `sudo debuginfo-install kernel`
  • Ubuntu/Debian: `sudo apt install linux-image-$(uname -r)-dbg`

오버헤드

perf는 매우 상세한 데이터를 수집하므로, 특히 높은 샘플링 빈도로 `perf record`를 사용할 경우 시스템에 약간의 오버헤드를 발생시킬 수 있습니다. 프로덕션 환경에서는 주의하여 사용해야 합니다.

  • 성능에 민감한 시스템에서는 낮은 샘플링 빈도(-F 옵션)로 시작하여 오버헤드를 최소화하세요.

perf top 활용

`perf top`은 실시간으로 CPU 사용량이 높은 함수를 보여주는 유용한 서브커맨드입니다. 간단한 성능 모니터링에 적합합니다.

  • `perf top`을 사용하여 현재 시스템에서 가장 많은 CPU 시간을 소비하는 함수를 빠르게 식별할 수 있습니다.

동일 카테고리 명령어