我正在使用QEMU和GDB开发一个操作系统(作为一种爱好),但我现在面临一些性能问题.因此,我想知道应该优化哪些功能. 所以基本上,我的需求主要是知道: 我的内核花费的时间最多. 调用函
所以基本上,我的需求主要是知道:
>我的内核花费的时间最多.
>调用函数的次数
你知道我怎么做的吗?我也会接受使用Bochs的解决方案.
据我所知,没有基于网络的文档可用于QEMU分析,但如果完全无法进行分析,我会感到非常惊讶.如果QEMU使用kvm虚拟化(与模拟相反),可能还有一些专门针对kvm的分析工具.但是,由于QEMU提供了对GDB的访问,您仍然可以使用它! poor man’s profiler定期使用GDB的回溯来确定你的所有线程正在做什么,这可能非常有用.这将提供有关被阻塞线程以及未阻塞线程的数据,但由于您似乎不知道您的性能问题是否是由于阻塞造成的,因此这应该比没有任何东西更有用.如果您感觉特别坚定,可以使用此数据创建更有用的可视化,例如Brendan Gregg’s flame graphs.
最糟糕的(但通常最简单的)技术总是在代码中挑选一些可能是瓶颈的随机函数,并输出每次调用所需的时间.虽然不够优雅,但在没有别的东西可用时非常有用.