리눅스 6.15 업데이트는 퍼프(perf) 도구에 지연 프로파일링 지원을 추가하여 큰 향상을 가져왔습니다. 이 기능은 CPU 시간보다 실제 경과 시간(wall-clock time)에 중점을 두고 있습니다. 개발자들은 이 새로운 기능을 통해 컨텍스트 스위치(context switch)를 추적하고 샘플의 가중치를 조정하여 코드의 어떤 부분이 실행 지연에 가장 큰 영향을 미치는지를 식별할 수 있습니다.
지연 프로파일링은 특정 순간에 병렬 실행의 수에 따라 샘플 값을 조정하여, 프로파일링 데이터에서 직렬 실행의 비율을 효과적으로 증가시킵니다. 현재 이 기능은 프로세스 프로파일링에만 제한되어 있으며, 시스템 전체 프로파일링은 아직 지원되지 않습니다. 사용자는 --latency 옵션을 사용하여 이 기능을 활성화할 수 있습니다.
이 글에서는 멀티스레드 또는 멀티코어 환경에서의 실제 경과 시간과 CPU 시간의 차이를 강조합니다. 전통적인 프로파일링 도구는 CPU 시간에 중점을 두지만, 새로운 지연 프로파일링은 빌드 지연, 서버 요청 지연, 머신 러닝 훈련 또는 추론과 같이 실제 경과 시간을 최적화하는 것이 중요한 시나리오를 다룹니다.
구현 과정에서는 기록 중에 컨텍스트 스위치 데이터를 수집하고 CPU에서 실행 중인 스레드 수를 계산하여 병렬성 수준을 결정합니다. 각 샘플의 가중치는 이 병렬성 수준으로 나누어져, 실제 경과 시간을 보다 정확하게 나타낼 수 있도록 합니다.
이 업데이트는 CPU 프로파일링과 실제 경과 프로파일링의 차이를 이해하는 것이 중요하다는 점을 강조합니다. 잘못된 프로파일을 사용하면 오해의 소지가 있는 결과를 초래할 수 있습니다. 기본값은 CPU 프로파일이지만, 사용자는 적절할 경우 새로운 지연 프로파일링 모드를 탐색해 보도록 권장됩니다.
* 이 글은
phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은
이곳에서 확인하실 수 있습니다.