저는 QEMU와 GDB를 사용하여 취미로 OS를 개발하고 있습니다.하지만 성능 문제가 있습니다. 따라서 어떤 기능을 최적화해야하는지 알고 싶습니다.QEMU로 프로파일 링하는 방법은 무엇입니까?
그래서 기본적으로, 내 요구는 알고 주로 :
- 하는 내 커널이 가장 많은 시간을 소비 작동합니다. 몇 번 기능
- 는
이라고 당신은 내가 어떻게 할 수 있습니다 알고 있습니까? 나는 Bochs를 사용하는 해결책도 받아 들일 것이다.
저는 QEMU와 GDB를 사용하여 취미로 OS를 개발하고 있습니다.하지만 성능 문제가 있습니다. 따라서 어떤 기능을 최적화해야하는지 알고 싶습니다.QEMU로 프로파일 링하는 방법은 무엇입니까?
그래서 기본적으로, 내 요구는 알고 주로 :
이라고 당신은 내가 어떻게 할 수 있습니다 알고 있습니까? 나는 Bochs를 사용하는 해결책도 받아 들일 것이다.
필자가 볼 수있는 한, QEMU 프로파일 링에 사용할 수있는 웹 기반 문서는 없습니다. 프로파일 링을 전혀 할 방법이 없다면 매우 놀랍습니다. QEMU가 kvm
가상화를 사용하는 경우 (시뮬레이션과 반대) kvm
에 대해 사용할 수있는 프로파일 링 도구가있을 수 있습니다.
그러나 QEMU는 GDB에 대한 액세스를 제공하므로 여전히 사용할 수 있습니다! poor man's profiler은 GDB의 backtrace
을 주기적으로 사용하여 모든 스레드가 수행중인 작업을 파악하므로 매우 유용합니다. 이렇게하면 블로킹 된 스레드와 블로킹되지 않은 스레드에 대한 데이터를 얻을 수 있지만 성능 문제가 블로킹으로 인한 것인지 아닌지 알 수 없으므로 아무 것도없는 것보다 훨씬 유용합니다. 특별히 결정된 느낌이 들었다면이 데이터를 사용하여 Brendan Gregg's flame graphs과 같은보다 유용한 시각화를 만들 수 있습니다.
최악의 경우 (일반적으로 가장 쉬운) 기법은 코드에서 병목 현상을 일으킬 수있는 임의의 함수를 선택하고 각 호출이 소요되는 시간을 출력합니다. 우아하지는 않지만 사용 가능한 것이 없을 때 유용합니다.