6

我正在使用 QEMU 和 GDB 开发一个操作系统(作为一种爱好),但我现在面临一些性能问题。因此,我想知道应该优化哪些功能。

所以基本上,我的需求主要是知道:

  • 我的内核在哪些功能上花费的时间最多。
  • 函数被调用多少次

你知道我该怎么做吗?我也会接受使用 Bochs 的解决方案。

4

1 回答 1

7

据我所知,没有可用于 QEMU 分析的基于 Web 的文档,尽管如果根本无法进行分析,我会感到非常惊讶。如果 QEMU 使用kvm虚拟化(而不是模拟),那么可能还有一些专门用于kvm.

但是,由于 QEMU 提供了对 GDB 的访问,您仍然可以使用它!穷人的分析器定期使用 GDBbacktrace来确定所有线程在做什么,这非常有帮助。这将提供有关阻塞线程和未阻塞线程的数据,但由于您似乎不知道您的性能问题是否是由于阻塞引起的,所以这应该比没有更有用。如果您感觉特别有决心,您可以使用这些数据来创建更有用的可视化,例如Brendan Gregg 的火焰图

最糟糕(但通常最简单)的技术总是会在代码中挑选一些可能​​成为瓶颈的随机函数,并输出每个调用需要多长时间。当然不优雅,但在没有其他可用的情况下非常有用。

于 2013-06-16T22:20:58.660 回答