- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何计算 gem5 中基准测试开始和结束之间的 CPU 时钟周期数?
我对以下所有情况都感兴趣:
完整的系统用户空间基准测试。也许 m5
guest 工具有办法做到这一点?
裸机基准测试。当 gem5 退出时,它会自动转储统计数据,因此主要问题是如何跳过引导加载程序的周期并直接进入基准测试本身。
除了使用检测指令修改基准源之外,还有其他方法吗?如何详细编写那些仪器指令?
系统调用模拟基准。我认为 gem5 只是在运行结束时输出 stats.txt
,然后你可以 grep system.cpu.numCycles
,但我必须确认一下,目前封锁于:How to solve "FATAL: kernel too old" when running gem5 in syscall emulation SE mode?
我想用这个来学习:
最佳答案
m5
工具
一个很好的近似是运行,理想情况下是从作为 /init
程序的 shell 脚本运行:
m5 resetstats
run-benchmark
m5 dumpstats
然后在主机上:
grep -E '^system.cpu.numCycles ' m5out/stats.txt
给出类似的东西:
system.cpu.numCycles 33942872680 # number of cpu cycles simulated
请注意,如果您使用不同的 CPU 从 m5 检查点
重播,例如:
--restore-with-cpu=HPI --caches
然后您需要 grep 以获取不同的标识符:
grep -E '^system.switch_cpus.numCycles ' m5out/stats.txt
resetstats
将累积统计数据归零,dumpstats
转储在基准测试期间收集的数据。
这并不完美,因为 m5 dumpstats
的 exec 系统调用完成和基准测试开始之间有一些时间,但如果基准测试足够,这应该无关紧要。
http://arm.ecs.soton.ac.uk/wp-content/uploads/2016/10/gem5_tutorial.pdf还提出了一些启发式方法:
#!/bin/sh
# Wait for system to calm down
sleep 10
# Take a checkpoint in 100000 ns
m5 checkpoint 100000
# Reset the stats
m5 resetstats
run-benchmark
# Exit the simulation
m5 exit
m5 exit
也有效,因为 GEM5 在完成时会转储统计信息。
仪表说明
有时这些似乎是不可避免的,您必须使用这些指令稍微修改输入源代码,以便:
您当然可以从 gem5 m5
工具代码中推断出这些指令,但是 here are some very easy to re-use one line copy pastes for arm and aarch64 ,例如对于 aarch64:
/* resetstats */
__asm__ __volatile__ ("mov x0, #0; mov x1, #0; .inst 0XFF000110 | (0x40 << 16);" : : : "x0", "x1")
/* dumpstats */
__asm__ __volatile__ ("mov x0, #0; mov x1, #0; .inst 0xFF000110 | (0x41 << 16);" : : : "x0", "x1")
m5
工具在底层使用相同的机制,但通过将指令直接添加到源代码中,我们避免了系统调用,因此更加精确和具有代表性(以更多手动工作为代价).
但是,为了确保编译器不会围绕您的 ROI 对程序集重新排序,您可能需要使用以下位置提到的技术:Enforcing statement order in C++
地址监控
另一种可以使用的技术是监视感兴趣的地址,而不是向源添加魔术指令。
例如,如果您知道基准测试以 PIC == 0x400
开头,则应该可以在命中该地址时执行某些操作。
要查找感兴趣的地址,您必须使用例如 readelf
或 gdb
或 tracing ,如果在 Linux 上运行完整系统,请确保关闭 ASLR。
这项技术是侵入性最小的技术,但设置更难,老实说我还没有做过。一天,一天。
关于gem5 - 如何计算 gem5 基准测试开始和结束之间的 CPU 时钟周期数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48944587/
我正在阅读一些基准测试技巧,并在此站点上发现了一条提示“重新启动 MySQL 服务器以消除任何不需要的缓存因素”:http://blog.monitor.us/2012/09/the-gold-sta
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我在linux上测量cpu时间和排序算法的时间。我使用getrusage来测量cpu时间,并使用clock_gettime CLOCK_MONOTONIC来获取墙时间。尽管我注意到cpu时间大于墙上时
我可以阅读很多关于 OpenCL 的文章,它似乎是最有前途的(唯一的?)多架构库。 OpenCL应该是第一个并行架构编程标准,它最终会被大部分程序员采用。这很好,但是从 native 编程库迁移到 O
我想在不使用外部依赖项的情况下对一些 Lua 进行基准测试。我目前正在使用 os.clock: local function dummy() end local start = os.clock()
我对此很好奇。 我想检查哪个函数更快,所以我编写了一些代码并执行了很多次。 public static void main(String[] args) { long ts;
有没有办法在项目的开发阶段对 SQL 查询进行基准测试? 有问题的表中只有几个示例行,但我想在行数达到数千、数百万、数十亿、数万亿、数亿等等之前对一些查询进行基准测试 用数千行样本数据填充表格是唯一的
我正在尝试测量使用 rdtsc 执行函数“check()”所需的时间,如下所示: a = rdtsc(); check(pw); b = rdtsc(); return (b-a); 但是,我收到的时
我想在我的 Hadoop 集群上执行基准测试和性能测试。我知道 hadoop-mapreduce*test*.jar 和 hadoop-mapreduce-examples*.jar 有很多用于基准测
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
这个现在非常常见的算法问题是在白板考试期间由监考人员提出的。我的工作是观察、倾听和客观判断给出的答案,但我无法控制这个问题,也无法与回答者互动。 给了五分钟的时间分析问题,考生可以写项目符号,伪代码(
我把代码从 http://www.bonto.ch/blog/2011/12/08/json-libraries-for-ios-comparison-updated/并在我的本地机器上进行了测试。
我正在尝试使用 MySQL 基准测试来测试一些查询。但是,我遇到了一个错误。 SELECT benchmark (10000, (select title from user)); 作为返回,我得到了
我很好奇这个。 我想检查哪个函数更快,所以我创建了一些代码并执行了很多次。 public static void main(String[] args) { long ts;
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
我经常想比较同一函数的多个实现的运行时性能。对于个人输入,标准是一个很好的工具。 但是有什么简单的方法可以在不同的输入大小上绘制代码的性能,例如看算法复杂度? 理想情况下,我向库传递一个类型为 Ben
我有一系列旨在完成相同功能的功能。相同的输入产生相同的输出,但是执行这些输出所需的时间因功能而异。我想确定哪个是“最快”的,我想对自己的测量结果具有“统计学意义”有一定的信心。 细读Wikipedia
我想编写一个加载基准测试,它以编译时已知的步幅跨过给定的内存区域,并在该区域的末尾(2 的幂)使用尽可能少的非加载指令进行包装有可能。 例如,给定步长 4099,rdi 中的迭代计数以及 rsi 中指
我有多个组件与 RabbitMQ 相连。有些是生产者和消费者。我需要对我的系统进行基准测试/负载测试。我需要确保消费者每秒可以处理 N 条消息。我在互联网上做了一些搜索,但还没有真正找到任何东西。有没
是否有任何基准或研究来比较这两个 IDE --稳定性-- 开发人员生产力 - 特征 - 表现-- 等等 最佳答案 我是 Eclipse 用户(不是自愿的)。不确定稳定性,但性能方面 NetBeans
我是一名优秀的程序员,十分优秀!