2013-06-08 5 views
4

저는 QEMU와 GDB를 사용하여 취미로 OS를 개발하고 있습니다.하지만 성능 문제가 있습니다. 따라서 어떤 기능을 최적화해야하는지 알고 싶습니다.QEMU로 프로파일 링하는 방법은 무엇입니까?

그래서 기본적으로, 내 요구는 알고 주로 :

  • 하는 내 커널이 가장 많은 시간을 소비 작동합니다.
  • 몇 번 기능

이라고 당신은 내가 어떻게 할 수 있습니다 알고 있습니까? 나는 Bochs를 사용하는 해결책도 받아 들일 것이다.

답변

5

필자가 볼 수있는 한, QEMU 프로파일 링에 사용할 수있는 웹 기반 문서는 없습니다. 프로파일 링을 전혀 할 방법이 없다면 매우 놀랍습니다. QEMU가 kvm 가상화를 사용하는 경우 (시뮬레이션과 반대) kvm에 대해 사용할 수있는 프로파일 링 도구가있을 수 있습니다.

그러나 QEMU는 GDB에 대한 액세스를 제공하므로 여전히 사용할 수 있습니다! poor man's profiler은 GDB의 backtrace을 주기적으로 사용하여 모든 스레드가 수행중인 작업을 파악하므로 매우 유용합니다. 이렇게하면 블로킹 된 스레드와 블로킹되지 않은 스레드에 대한 데이터를 얻을 수 있지만 성능 문제가 블로킹으로 인한 것인지 아닌지 알 수 없으므로 아무 것도없는 것보다 훨씬 유용합니다. 특별히 결정된 느낌이 들었다면이 데이터를 사용하여 Brendan Gregg's flame graphs과 같은보다 유용한 시각화를 만들 수 있습니다.

최악의 경우 (일반적으로 가장 쉬운) 기법은 코드에서 병목 현상을 일으킬 수있는 임의의 함수를 선택하고 각 호출이 소요되는 시간을 출력합니다. 우아하지는 않지만 사용 가능한 것이 없을 때 유용합니다.