7장. 컴파일러 및 도구
SystemTap
SystemTab은 사용자가 운영체제(특히 커널)의 동작을 세밀히 연구하고 살펴볼 수 있도록 해주는 추적 및 측정 도구입니다. 이는 netstat, ps, top, iostat와 같은 도구의 출력과 유사한 정보를 제공합니다; 하지만, SystemTab은 수집한 정보에 대해 보다 자세한 필터링과 분석할 수 있도록 고안되어 있습니다.
Red Hat Enterprise Linux 5.9에서 SystemTap은 1.8 버전으로 업데이트되어 다음과 같은 기능 및 개선 사항을 제공합니다:
- SystemTap 런타임 (staprun)은
-T
시간 제한 옵션을 허용하여 깨우기 횟수를 줄여 스크립트에서 낮은 처리량을 폴링할 수 있게 합니다. - SystemTap에 의해 호출된 경우
kbuild
$PATH
환경은 삭제 처리됩니다. printf
형식은%#c
제어 매개 변수를 사용하여 비인쇄 문자를 확장할 수 있습니다.- 프리티 프린트 (Pretty-printed) 비트 필드에 정수를 사용할 수 있습니다. 또한 문자는 출력을 위한 확장 형식을 사용할 수 있습니다.
- SystemTap 컴파일 서버 및 클라이언트는 IPv6 네트워크를 지원합니다.
- SystemTap 모듈은 크기가 작아져 컴파일이 빨라졌습니다. 모듈의 디버그 정보는 기본값으로 표시되지 않습니다.
@var
구문은uprobe
및kprobe
처리기 (프로세스, 커널, 모듈)에서 DWARF 변수에 액세스하기 위한 대안적인 언어 구문입니다.- SystemTap 스크립트 번역기 드라이버 (
stap
)는 다음과 같은 리소스 제한 옵션을 제공합니다:--rlimit-as=NUM --rlimit-cpu=NUM --rlimit-nproc=NUM --rlimit-stack=NUM --rlimit-fsize=NUM
- SystemTap 컴파일러 서버는 동시에 여러개의 연결을 지원합니다.
- 다음의 tapset 기능은 1.8 릴리즈에서 폐기 대상으로 지정되어 있으며 1.9 릴리즈에서 삭제될 것입니다.
daddr_to_string()
- SystemTap은 tapset에 의해 포함된 C 헤더와의 충돌을 피하기 위해 로컬 매개 변수를 조작합니다.