이면에서 Rational Developer for Power Systems Software Performance Advisor는 AIX / POWER Linux 시스템에서 여러 하위 레벨 데이터 프로파일링 도구를 사용합니다. 이러한 도구로는 tprof, oprofile, procstack, ps, IBM Debug Engine 및 컴파일러 변환 보고서가 포함됩니다.
AIX 운영 체제에서 tprof 유틸리티는 하위 레벨 프로파일링 데이터의 기본 소스입니다. tprof는 애플리케이션에서 소요된 프로세스 실행 시간을 프로파일링하는 데 사용됩니다.
tprof 유틸리티는 다음 방식으로 작동합니다. 10밀리초마다 tprof는 애플리케이션 2진에서 현재 실행 지점을 기록합니다. 기록된 각 지점은 "틱"이라고 합니다. 애플리케이션 실행의 수명 동안 이러한 틱의 분포는 대략 애플리케이션에서 다양한 지점에서 얼마나 많은 프로세서 시간이 소요되었는지를 표시합니다.
tprof에서 확보한 하위 레벨 프로파일링 데이터는 여러 보기에서 사용됩니다. 핫스팟 브라우저에서는 데이터를 사용하여 애플리케이션의 핫 함수에 대한 순위를 표시합니다. 성능 소스 뷰어 및 아웃라인 보기에서는 데이터를 사용하여 소스 코드 라인 또는 섹션에 표시되는 틱 값을 제공합니다. 핫스팟 비교 브라우저에서는 데이터를 사용하여 비교를 위한 틱 값을 확보합니다.
AIX tprof 유틸리티에 대한 자세한 정보는 IBM AIX Information Center 웹 사이트(tprofcommand)에서 제공합니다.
AIX 운영 체제에서 procstack 유틸리티는 함수의 호출자 및 피호출자를 프로파일링하는 데 사용됩니다. 1초마다 procstack은 애플리케이션의 현재 실행 중인 함수를 찾고 해당 호출 경로를 순회하여 현재 실행 중인 함수에 도달하는 데 사용되는 함수 체인을 판별합니다. 호출 경로는 애플리케이션의 main() 함수로 항상 다시 순회됩니다. 이 메소드 호출 정보는 함께 구성되어 호출 브라우저에서 사용됩니다.
procstack 유틸리티는 호출 브라우저의 구성을 위해 샘플링된 각 호출 체인을 제공합니다. 해당 정보가 호출 그래프로 집계되지 않기 때문에, AIX procstack 기반 호출 브라우저는 Linux oprofile 유틸리티와 비교해 잘못된 경로의 영향을 받지 않습니다.
AIX procstack 유틸리티에 대한 자세한 정보는 IBM AIX Information Center 웹 사이트(procstack command)에서 제공합니다.
Linux 운영 체제의 경우 oprofile 유틸리티는 AIX에서 tprof와 동일한 역할을 수행하며, 하위 레벨 프로파일 데이터의 기본 소스로 사용됩니다. oprofile 유틸리티는 AIX에서 tprof와 같은 방식으로 작동합니다. 그러나 사용되는 샘플링 빈도는 매150,000 프로세서 사이클입니다. 3.5GHz 프로세서에서 이는 매43마이크로초와 동일합니다.
AIX의 tprof와 마찬가지로 Linux의 oprofile에서 얻은 데이터는 핫스팟 브라우저, 성능 소스 뷰어, 아웃라인 보기 및 핫스팟 비교 브라우저에서 사용됩니다.
Linux 운영 체제의 경우 oprofile 유틸리티도 함수 간 호출 관계를 프로파일링합니다. 이 정보는 호출 브라우저에서 각 함수의 호출 경로 정보를 표시하는 데 사용됩니다.
oprofile은 매43마이크로초의 순서로 AIX에서 procstack보다 더 자주 호출 경로 순회를 수행합니다. 그러나 이러한 더 높은 샘플링 빈도와 oprofile의 제한사항 때문에 호출 경로는 최대 깊이, 2개 호출자로 다시 순회됩니다. 또한 oprofile은 이 호출 정보를 호출 트리가 아닌 호출 그래프로 집계합니다. 트리 대신 그래프를 사용하는 경우 중요한 함축 사항은 그래프가 실제로 프로그램에 없는 경고 또는 순환을 표시할 수 있다는 점입니다. 그래프가 정보 손실을 야기하는 정보를 집계하기 때문에 이러한 특성이 나타납니다. 이 상황은 번호 세트에서 평균값만 보유되는 경우 특정 정보가 유실되는 방식(통계로 표시)과 유사합니다. 번호 세트의 분산과 같은 정보는 보유되지 않습니다. 호출 정보 컨텍스트에서 노드(함수/메소드)가 호출 트리에서 두 번 이상 나타나는 경우 호출 그래프는 이러한 다중 노드를 단일 노드로 병합하여 특정 정보가 손실됩니다.
이러한 특성은 사용자가 Linux oprofile 기반 호출 브라우저에서 이러한 잠재적인 잘못된 경로에 주의해야 한다는 점을 함축합니다. AIX procstack 기반 호출 브라우저는 정보를 집계하지 않으므로 이러한 잠재적인 잘못된 경로의 영향을 받지 않습니다.
Linux oprofile 유틸리티에 대한 자세한 정보는 oprofile 웹사이트에서 제공합니다.
ps 유틸리티는 애플리케이션 프로파일링 중에 시스템에서 실행 중인 프로세스에 대한 정보를 제공하도록 AIX 및 Linux 운영 체제에서 모두 사용됩니다. 이 정보는 애플리케이션이 다중 처리 애플리케이션이거나 Unix 쉘 스크립트에서 실행되는 경우 애플리케이션에 속하는 프로세스를 발견하는 데 사용됩니다. 또한 각 프로세스에 대한 기본 정보(예: 해당 이름과 인수)와 상위 프로세스를 제공합니다. 이 정보는 핫스팟 브라우저에서 프로세스 정보를 표시하는 데 사용됩니다.
AIX ps 유틸리티에 대한 자세한 정보는 IBM AIX Information Center 웹 사이트(ps command)에서 제공합니다.
IBM 디버그 엔진의 컴포넌트를 AIX 및 Linux 운영 체제에서 모두 사용하여 애플리케이션의 2진에서 디버거 정보를 추출합니다. 예를 들어 이는 소스 파일 및 라인에 실행 파일 코드의 위치를 맵핑하는 데 사용됩니다. 이 맵핑 정보는 성능 소스 뷰어 및 아웃라인 보기에서 애플리케이션 코드의 소스 코드 블록 또는 소스 라인 옆에 백분율과 "틱" 값을 표시하는 데 사용됩니다.
권장사항 보기에서는 이전에 언급한 항목과 같은 다양한 소스에서 프로파일링 데이터를 사용하고 이를 함께 상관시켜 관련 패턴을 찾습니다. 데이터의 주요 소스 중 하나는 IBM XL 컴파일러의 컴파일러 변환 보고서입니다. 애플리케이션이 IBM XL C/C++ 컴파일러(XL C/C++ V11.1 이상)로 컴파일 되는 경우 컴파일러는 소스 코드에서 성공 및 실패한 최적화 시도와 같이 애플리케이션 코드의 분석에 대한 정보를 보고할 수 있습니다. 예를 들어 함수 또는 메소드 인라인 시도와 성공 및 실패가 컴파일러에서 보고됩니다. 또한 컴파일러는 각 소스 코드 파일에 대해 유효한 컴파일 플래그를 보고합니다. 이 정보는 권장사항 보기에서 권장사항을 제공하는 데 사용됩니다.
컴파일러 변환 보고서를 제공하지 않는 IBM XL 컴파일러의 이전 버전(V11.1 이전)에서 이러한 종류의 정보는 대신 컴파일러의 표준 빌드 출력에서 추출됩니다. 결과적으로 이러한 종류의 정보를 캡처하려면 사용자가 애플리케이션을 "정리" 및 "빌드"해야 합니다. 이러한 방식으로 얻은 정보는 XL 컴파일러 변환 보고서만큼 많지는 않으므로 권장사항 보기에 제공되는 권장사항 종류가 감소합니다.
컴파일러 변환 보고서는 아직 GCC 컴파일러에서 제공되지 않습니다. 권장사항 보기에서 사용하기 위해 컴파일러에서 정보를 확보하도록 이러한 종류의 정보가 컴파일러의 표준 빌드 출력에서 추출됩니다. 결과적으로 이러한 종류의 정보를 캡처하려면 사용자가 애플리케이션을 "정리" 및 "빌드"해야 합니다. 권장사항 보기에 대한 제한사항은 변환 보고서를 제공하지 않는 이전 XL 컴파일러의 제한사항과 유사합니다.