OProfile은 작업 부하가 낮은, 시스템 전체 성능 감시 도구입니다. OProfile은 프로세서 상에서 성능 감시 하드웨어를 사용하여 커널과 사용된 메모리, L2 캐시 요청의 수, 전송받은 하드웨어 인터럽트의 숫자와 같은 시스템 상 실행가능 프로그램들에 대한 정보를 알아냅니다. Red Hat Enterprise Linux 시스템에서 이 도구를 사용하기 위해서는 oprofile RPM 패키지를 설치하셔야 합니다.
많은 프로세서에는 전용 성능 감시 하드웨어가 포함되어 있습니다. 이러한 하드웨어를 사용하여 특별한 사건 발생시 (예를 들어 요청된 자료가 캐시에 저장되지 않는 경우) 문제를 탐지할 수 있습니다. 하드웨어는 일반적으로 사건이 발생할 때마다 한개씩 증가되는 카운터 (counter) 형태로 나타납니다. 카운터의 값이 "0 값으로 넘어가면" 인터럽트가 발생하여, 성능 감시로 인한 작업 부하를 조절할 수 있습니다.
OProfile은 이 하드웨어 (또는 성능 감시 하드웨어가 없는 경우 타이머가 같은 대체 하드웨어)를 사용하여 카운터가 인터럽트를 발생할 때마다 성능과 관련된 데이터 샘플을 수집합니다. 이 샘플은 주기적으로 디스크에 기록되며; 이후 이 샘플에 포함된 데이터를 사용하여 시스템 수준 성능과 응용 프로그램 수준 성능에 대한 리포트를 생성할 수 있습니다.
![]() | 중요 |
|---|---|
Red Hat Enterprise Linux 3에 포함된 OProfile의 커널 지원은 2.5 개발용 커널의 이전 버전 호환 가능한 코드 (back-ported code)에 기초합니다. 따라서 OProfile 문서 자료에서 언급된 2.5-특정 기능은 Red Hat Enterprise Linux 3의 커널 버전은 2.4 이지만 OProfile에 적용됩니다. 그러나 반대로 2.4 커널에만 있는 OProfile 기능은 Red Hat Enterprise Linux 3에 적용되지 않습니다. |
OProfile은 유용한 도구이지만 사용하실때 몇가지 제한 사항을 알고 계셔야 합니다:
공유 라이브러리 사용 — --separate=library 옵션이 사용되지 않은 한 공유 라이브러리 코드의 샘플은 특정 응용 프로그램에 속하지 않습니다.
성능 감시 샘플은 정확하지 않습니다 — 성능 감시 기록기가 샘플을 수집시 인터럽트 처리는 0으로 나누는 것에 대해 예외사항(Exception)과 같이 정확하지 않습니다. 프로세서 명령이 순서대로 실행되지 않기 때문에 (out-of-order execution), 샘플은 근접하지만 정확하지 않게 기록될 수 있습니다.
oprofpp은 인라인(inline) 함수에 사용된 샘플을 제대로 조합하지 못합니다 — oprofpp은 단순 주소 범위 메커니즘을 사용하여 주소가 어느 함수에 위치하는지 알아냅니다. 인라인 함수 샘플은 인라인 함수 자체에 속하기 보다는 인라인 함수가 삽입된 함수에 속합니다.
OProfile은 여러번 실행된 데이터를 축척합니다 — OProfile은 시스템 수준 프로파일러로서 여러번 시작되고 종료된 프로세스를 감시한 후 축척된 샘플을 수집합니다. 이전 실행에서 수집한 샘플을 지우시려면 opcontrol --reset 명령을 사용하십시오.
CPU 제한과 관련되지 않은 성능 문제들 — OProfile은 CPU 제한과 관련된 프로세스 문제점을 찾도록 고안되었습니다. 따라서 OProfile은 잠금이 해제되기를 기다리고 있거나 다른 작업이 발생하기를 (예, I/O 장치가 작업을 마치기를) 기다리면서 프로세스가 멈출 경우 그러한 프로세스를 찾아내지 못합니다.
Red Hat Enterprise Linux에서 오직 멀티프로세서 (SMP) 커널만 OProfle 지원이 활성화되어 있습니다. 어느 커널이 실행 중인지 알아보시려면 다음 명령을 입력하십시오:
uname -r |
만일 출력된 커널 버전의 마지막 부분이 .entsmp으로 끝난다면, 멀티프로세서 커널이 실행 중입니다. 그렇지 않다면 시스템이 멀티프로세서 시스템이 아니라도 Red Hat Network 이나 배포 CD를 사용하여 설치하시면 됩니다. 멀티프로세서 커널은 단일 프로세서 시스템으로 실행 가능합니다.
표 43-1에서는 oprofile 패키지에 포함된 도구들에 대한 간단한 설명을 제공합니다.
| 명령 | 설명 |
|---|---|
| opcontrol | 어떠한 데이터를 수집할 것인지 설정합니다. 자세한 정보는 43.2 절을 참조하시기 바랍니다. |
| op_help | 시스템 프로세서에 사용 가능한 작업과 각 작업에 대한 간략한 설명을 보여줍니다. |
| op_merge | 동일한 실행 프로그램에서 수집한 여러 샘플을 하나로 병합합니다. 자세한 정보는 43.5.4 절을 참조하시기 바랍니다. |
| op_time | 모두 프로파일된 실행 프로그램의 개요를 보여줍니다. 자세한 정보는 43.5.1 절을 참조하시기 바랍니다. |
| op_to_source | 만일 응요 프로그램이 디버깅 심볼을 사용하여 컴파일된 경우 실행 프로그램에 주석 첨가된 소스를 생성합니다. 자세한 정보는 43.5.3 절을 참조하시기 바랍니다. |
| oprofiled | 데몬으로 실행되어 샘플 데이터를 디스크에 주기적으로 기록합니다. |
| oprofpp | 프로파일 데이터를 검색합니다. 자세한 정보는 43.5.2 절을 참조하시기 바랍니다. |
| op_import | 샘플 데이터베이스 파일을 외부 이진 형식에서 시스템의 원시 형식으로 변환합니다. 다른 구조에서 수집한 샘플 데이터베이스를 분석할 경우에만 이 옵션을 사용하십시오. |
표 43-1. OProfile 명령