【发布时间】:2013-06-04 16:19:41
【问题描述】:
我正在使用 QEMU 和 GDB 开发一个操作系统(作为一种爱好),但我现在面临一些性能问题。因此,我想知道应该优化哪些功能。
所以基本上,我的需求主要是知道:
- 我的内核在哪些函数上花费的时间最多。
- 函数被调用多少次
你知道我该怎么做吗?我也会接受使用 Bochs 的解决方案。
【问题讨论】:
标签: performance profiling qemu osdev
我正在使用 QEMU 和 GDB 开发一个操作系统(作为一种爱好),但我现在面临一些性能问题。因此,我想知道应该优化哪些功能。
所以基本上,我的需求主要是知道:
你知道我该怎么做吗?我也会接受使用 Bochs 的解决方案。
【问题讨论】:
标签: performance profiling qemu osdev
据我所知,没有可用于 QEMU 分析的基于 Web 的文档,但如果根本无法进行分析,我会感到非常惊讶。如果 QEMU 使用kvm 虚拟化(而不是模拟),那么可能还有一些专门用于kvm 的分析工具。
但是,由于 QEMU 提供了对 GDB 的访问,您仍然可以使用它! poor man's profiler 定期使用 GDB 的 backtrace 来确定所有线程在做什么,这非常有帮助。这将提供有关阻塞线程和未阻塞线程的数据,但是由于您似乎不知道您的性能问题是否是由于阻塞引起的,所以这应该比没有更有用。如果您感觉特别有决心,您可以使用这些数据来创建更有用的可视化,例如 Brendan Gregg's flame graphs。
最糟糕的(但通常是最简单的)技术总是会在代码中挑选一些可能成为瓶颈的随机函数,并输出每个调用需要多长时间。当然不优雅,但在没有其他可用的情况下非常有用。
【讨论】: