CPU idle 상태 추적 도구(Dark insight)

리눅스 Perf나 인텔의 VTune 같은 기존의 프로파일링 도구들은 주기적으로 각 CPU의 명령어를 샘플링하여 CPU 사이클 관점에서 분석한다. 이 방법은 CPU를 많이 사용하는 코드를 찾아내는데 효율적이지만 실행시간의 0.1% 동안 실행되는 작은 순차적 부분은 식별하기 어렵다. 이런 순차적 부분은 잠금(Lock)이나 배리어(Barrier)와 같은 동기화 요소에 의해 조정되는데, 뮤텍스(Mutex)나 세마포어(Semaphore)와 같은 블록킹 동기화 요소를 사용할 때, 태스크는 블록(Block)이 되므로 더욱 알기 힘들어진다. 이렇게 샘플링 기반의 프로파일 도구들은 경합이 발생한 곳에서 유용한 정보를 가져오지 못한다. CPU idle 상태 추적 도구인 Dark Insight는 확장성의 병목점을 찾기 위해서 시스템의 유휴상태(idle) 상태를 프로파일링 한다. 도구의 소스코드는 깃허브 Dark Insight에 공개한다. 관련 영상은 idle 프로파일러에 있다.