我想对 QEMU 每秒的客户指令进行基准测试,以将其与其他模拟器进行比较。
如何获取访客指令数?我对用户模式和完整系统模式都感兴趣。
我现在唯一的解决方案是使用简单跟踪exec_tb或-d in_asm:如何使用 QEMU 的简单跟踪后端来记录所有指令?然后从那里计算指令。但这可能会由于输出操作而大大降低模拟性能,因此我可能必须运行测试程序两次,一次有跟踪,另一次没有跟踪,并希望两次执行是相似的(应该是,特别是对于单线程用户模式模拟)。
我看到了这个-icount选项,从名字上听起来很有希望,但是当我将它传递给 QEMU 4.0.0 时,我没有看到任何事情发生。它应该在某处打印指令计数吗?以下补丁似乎未合并,建议不要:https://lists.gnu.org/archive/html/qemu-devel/2015-08/msg01275.html
为了跟进 Peter 的回答,我最近遇到了一种情况,我想获取在 QEMU 下运行的程序的指令计数(我正在使用 v4.2.0,这是第一个可用插件的版本)。
示例插件之一insn.c完全符合您的要求,并返回插件退出时执行的指令的计数。
(我假设您已经知道如何运行 QEMU,所以我将把它简化为重要的标志)
qemu-system-arm ... -plugin qemu-install-dir/build/tests/plugin/libinsn.so,arg=inline -d plugin
Run Code Online (Sandbox Code Playgroud)
第一部分加载插件并向其传递一个“内联”参数。下一部分启用插件的打印。-D filename您可以通过添加到命令行调用将插件输出重定向到不同的文件。
当我寻找可能的方法来分析在 QEMU 下运行的程序时,这是我的搜索中唯一有希望的结果之一。本着为将来的其他搜索创建良好记录的精神,这里有一些我为此编写的代码的链接。
免责声明:上面的代码是我写的。
| 归档时间: |
|
| 查看次数: |
3188 次 |
| 最近记录: |