기본 색인 | 섹션 4 | 日本語 | 옵션 |
성능 모니터링을 하는 카운터에의 모든 액세스는 디바이스형 특수 파일의 " /dev/perfmon" (을)를 매개로서 처리됩니다. 이 디바이스가 제공한다 ioctl(2) 리퀘스트는 많이 있어 < machine/perfmon.h> 중(안)에서 정의되어 이 파일안에는 Pentium (와)과 Pentium Pro 프로세서의 양쪽 모두의 다양한 카운터의 정의도 있습니다.
주의 사항: 이용 가능한 이벤트의 집합은 프로세서마다 다릅니다. 사용되는 이벤트 코드가 측정되는 CPU 의 형식에 대해서 적정인 것을 확인하는 것은 프로그래머의 책임입니다.
이하의 ioctl(2) 리퀘스트가 정의되고 있습니다:
PMIOSETUP | (struct pmc) 구조체에 정의되고 있는 파라미터와 플래그로 카운터를 설정합니다. 이하의 필드가 struct pmc 에 정의되고 있습니다: |
int pmc_num | 지정하는 카운터 번호입니다. NPMC (현재는 2)보다 작지 않으면 안됩니다. |
u_char pmc_event | 모니터 해야 할 특정의 이벤트 코드로, < machine/perfmon.h> 에 정의되고 있습니다. |
u_char pmc_unit | 이벤트의 형태에 대응하는 장치의 마스크의 값입니다 ( Intel 의 문서를 참조). |
u_char pmc_flags | 카운터의 기능을 변경하는 플래그 (아래와 같이 참조)입니다. |
u_char pmc_mask | 카운터의 마스크의 값입니다. 즉, 본래, 이 값은 지정된 수의 클락 이상 (또는 이하)의 사이 계속하는 이벤트에 카운트를 제한하기 위해 사용되고 귀의치 입니다. |
다음과 같은 pmc_flags 의 값이 정의되고 있습니다:
PMCF_USR | 이벤트를 유저 모드로 카운트 합니다. |
PMCF_OS | 이벤트를 커널 모드로 카운트 합니다. |
PMCF_E | 이벤트를 지속 시간은 아니고 그 수로 카운트 합니다. |
PMCF_INV | 카운터의 마스크의 비교의 의미를 역전합니다. |
PMIOGET | (struct pmc) 지정된 카운터의 현재의 설정을 돌려줍니다. |
PMIOSTART
PMIOSTOP | |
(int) 지정한 카운터를 기동 (정지)합니다. 하드웨어의 결함에 의해, 번호순서에 기동과 정지를 하지 않으면 안됩니다. (즉, 카운터 0 은 반드시 우선 카운터 1 을 정지하고 나서 정지하지 않으면 안됩니다). 드라이버에서는 이 제약을 강제하고 있지 않습니다 (라고 하는 것도 장래의 CPU 에서는 이 제약은 없어질지도 모릅니다). | |
PMIORESET | (int) 지정된 카운터를 0 에 리셋트 합니다. 카운터는 리셋트 하기 전에 PMIOSTOP 에 의해 정지되지 않으면 안됩니다. 모든 카운터는 자동적으로 PMIOSETUP 에 의해 리셋트 됩니다. |
PMIOREAD |
(struct pmc_data)
카운터의 현재의 값을 꺼냅니다.
pmc_data
구조체에는 다음과 같은 2 개의 필드가 정의되고 있습니다:
|
int pmcd_num | 읽어내는 카운터의 번호. |
int pmcd_value | 64 비트의 부호 첨부 정수에서의 종료치. |
장래, Pentium Pro 프로세서로부터 카운터를 직접 읽어내기 위해 RDPMC 인스트럭션을 사용 할 수 있는 것처럼 되겠지요.
PMIOTSTAMP |
(struct pmc_tstamp)
타임 스탬프 카운터를 읽어냅니다.
pmc_tstamp
구조체에서는 2 개의 필드가 정의되고 있습니다:
|
int pmct_rate | 카운터의 MHz 에서의 대체로의 속도입니다. |
quad_t pmct_value | 64 비트 정수에서의 카운터의 현재의 값입니다. |
pmct_rate 필드에게 줄 수 있는 카운터의 속도는, 교정이 곤란한 일이나 클락의 진행이 불완전한 때문에, 때때로 정확하지 않는 것에 주의하는 것이 중요합니다. 이 필드에 대해서는 클락이 새기는 속도를 실제로 표시하는 것이라고 하는 것보다도 단서인가 또는 적정 사노 검사정도 생각해야 합니다.
/dev/perfmon | 카운터에의 캐릭터형 디바이스의 인터페이스 |
/usr/include/machine/perfmon.h | 구조체와 이벤트 코드를 정의하고 있는 인클루드 파일 |
/usr/share/examples/perfmon | 모든 ioctl() 명령의 사용을 구체적으로 예시한 샘플의 원시 코드 |
Pentium Pro Family Developer's Manual, Operating System Writer's Manual, vol. 3, January 1996.
,Pentium Pro 파미리디베롭파즈마뉴알, 오페레이팅시스템라이타즈마뉴알, 하권, January 1996.
,FreeBSD 2.2 | PERFMON (4) | March 26, 1996 |
기본 색인 | 섹션 4 | 日本語 | 옵션 |
Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.