퍼포먼스(Linux)
perf (Linux)저장소 | https://github.com/torvalds/linux/tree/master/tools/perf |
---|---|
기입처 | C |
운영 체제 | Linux 커널 |
유형 | 퍼포먼스 감시 및 테스트 |
면허증. | GNU GPL |
웹 사이트 | perf |
perf(perf_events[1] 또는 perf tool이라고도 함)[2]는 Linux의 퍼포먼스 분석 도구이며 [3]2009년 Linux 커널 버전 2.6.31에서 사용할 수 있습니다.사용자 공간 제어 유틸리티, 이름 지정perf
명령줄에서 액세스하여 다수의 서브 명령어를 제공합니다.시스템 전체의 통계 프로파일링(커널 코드와 사용자 랜드 코드 모두)이 가능합니다.
하드웨어 퍼포먼스카운터, 트레이스 포인트, 소프트웨어 퍼포먼스카운터(hrtimer 등) 및 다이내믹프로브(kprobe 또는 routbe [4]등)를 지원합니다.2012년에 두 명의 IBM 엔지니어는 (OProfile과 함께)[5] perf를 Linux에서 가장 일반적으로 사용되는 두 가지 성능 카운터 프로파일링 도구 중 하나로 인식했습니다.
실장
perf 유틸리티와 커널 사이의 인터페이스는 하나의 syscall로만 구성되며 파일 기술자 및 매핑된 메모리 [6]영역을 통해 수행됩니다.LTTng 또는 이전 버전의 oprofile과는 달리 대부분의 기능이 커널에 통합되어 있기 때문에 서비스 데몬은 필요하지 않습니다.perf 유틸리티는 버퍼가 가득 차면 매핑된 버퍼에서 디스크에 원시 데이터를 덤프합니다.R에 의하면.Vitillo(LBNL), 퍼포먼스에 의해 실행되는 프로파일링은 매우 [6]낮은 오버헤드를 수반합니다.
2010년 현재[update] 하드웨어 카운터를 지원하는 아키텍처에는 x86, PowerPC64, UltraSPARC(III 및 IV), ARM(v5, v6, v7, Cortex-A8 및 -A9), Alpha EV56 및 SuperH가 있습니다.[4]Pentium 4 이후 인텔 CPU에서 사용 가능한 브랜치 트레이스 구현인 Last Branch [7]Records의 사용법을 [6]패치로 이용할 수 있습니다.2014년 3월 31일에 출시된 Linux 커널 메인라인 버전 3.14 이후 perf는 특정 인텔 CPU의 [8][9][10]기능으로 사용 가능한 전력 소비량 측정에 대한 RAPL(평균 전력 제한) 실행도 지원합니다.
Perf는 Red Hat Enterprise Linux(2010년 [11]버전 6 출시 이후)와 Linux-tools-Common [12]패키지(2011년 Debian 6.0(Squeeze) 출시 이후)를 포함한 많은 Linux 디스트리뷰션에서 기본적으로 지원됩니다.
서브커맨드
perf는 다음과 같은 여러 하위 명령과 함께 사용됩니다.
stat
: 단일 프로그램 또는 일정 기간 동안 시스템의 총 이벤트 수를 측정합니다.top
: 최신 기능을 톱처럼 역동적으로 표시record
: 단일 프로그램에[13] 대한 샘플링 데이터 측정 및 저장report
: 퍼포먼스 레코드에 의해 생성된 파일을 분석합니다.플랫 프로파일 또는 그래프 [13]프로파일을 생성할 수 있습니다.annotate
: 소스 또는 어셈블리에 주석 추가sched
: 스케줄러 액션 및 지연[14] 추적/검출list
: 사용 가능한 이벤트 목록
비판
예를 들어, 대부분의 이벤트를 문서화하거나 별칭을 설명하지는 않습니다([16]종종 외부 도구를 사용하여 이벤트 이름과 코드를[15] 가져옵니다).또한 Perf 도구는 실제 월클럭 [16]시간을 기준으로 프로파일을 작성할 수 없습니다.
보안.
Linux 커널의 perf 서브시스템(2.6.37~3.8) 및 RHEL6 커널 2.6.32)에는 보안 취약성(CVE-)이 포함되어 있습니다.2013-2094)는 로컬 [17][18]사용자에 의해 루트 권한을 얻기 위해 악용되었습니다.이 문제는 event_id 검증 코드 [19]경로에서 잘못된 유형(64비트가 아닌 32비트 int)이 사용되고 있기 때문입니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Vince Weaver, 비공식 Linux Perf 이벤트 웹 페이지
- ^ Linux perf 이벤트 기능과 오버헤드 // 2013 FastPath 워크숍, Vince Weaver
- ^ Jake Edge, Perfcounters, 2009년 7월 1일 LWN에 "최근 완료된 2.6.31 병합 기간 동안 Perfcounters가 본선에 포함됨"을 추가했습니다.
- ^ a b Arnaldo Carvalho de Melo, 새로운 Linux 'perf' 툴, Linux Kongress 프레젠테이션, 2010년 9월
- ^ A. 자넬라, R. 아놀드Linux on POWER의 퍼포먼스를 평가합니다. Linux 도구를 사용하여 성능 분석, 2012년 6월 12일 // IBM DeveloperWorks Technical Library
- ^ a b c 로베르토 A.Vitillo (LBNL)퍼포먼스 툴 개발, 2011년 6월 16일 "입자물리학에서의 미래 컴퓨팅" 컨퍼런스 프레젠테이션
- ^ Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3B: System Programming Guide, Part 2. Intel. June 2009. p. 19-2 vol. 3.
- ^ Jake Edge (2014-04-09). "Lots of new perf features". LWN.net. Retrieved 2014-04-22.
- ^ Jacob Pan (2013-04-02). "RAPL (Running Average Power Limit) driver". LWN.net. Retrieved 2014-04-22.
- ^ "kernel/git/torvalds/linux.git - Linux kernel source tree". Git.kernel.org. 2014-01-20. Retrieved 2014-03-31.
- ^ 6.4. Linux(PCL) 툴 및 성능 카운터 // RHEL 개발자 가이드
- ^ "Debian - Details of package linux-tools-2.6.32 in squeeze". Packages.debian.org. Retrieved 2014-03-31.
- ^ a b Urs Fésler perf 파일 형식 2012-12-14년 CERN OpenLab, 2011년 Wayback Machine에서 보관
- ^ 잉고 몰나, 'perf sched' : 스케줄러 지연 및 동작을 캡처, 측정 및 분석하는 유틸리티, 2009년 9월 17일
- ^ CPU 퍼포먼스 이벤트의 모든 범위를 감시하는 방법 // Bojan Nicolic, 2012
- ^ a b 로버트 하스(포스트그레)SQL), 성능: 좋은 것, 나쁜 것, 추한 것// 2012년 6월 6일
- ^ Michael Larabel (2013-05-15). "New Linux Kernel Vulnerability Exploited". Phoronix.
- ^ corbet (2013-05-15). "Local root vulnerability in the kernel". LWN.
- ^ Joe Damato (2013-05-20). "A closer look at a recent privilege escalation bug in Linux (CVE-2013-2094)".