kgdb00

kgdb00

V2EX 第 538615 号会员,加入于 2021-03-20 15:13:53 +08:00
今日活跃度排名 4970
根据 kgdb00 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
kgdb00 最近回复了
6 天前
回复了 MrCsharp 创建的主题 深圳 我是新时代四败青年
至少你上过大学,而我就只有初中学历
@nlzy 感谢回复,我也是大半夜不睡觉,编译器优化是故意关掉的,开了 O3 优化差距一样大。你这一大堆解释我得等有空了再验证吸收一下,另外这代码是取自 sysbench ,我也不管它有啥意义,只是想搞明白性能为啥有差别。
@mayli 我觉得不是某个指令慢导致的,你可以看一下我在 12 楼的回复。
@choury 你为什么会认为我在两台机器上测的不是同一个二进制文件?
3700X:
[Imgur]( )

5600X:

[Imgur]( )
@choury @icyalala 我觉得应该跟浮点数性能没关系,我把 if (c % l == 0) 这一行去掉,3700x 的 ipc 还反超了 5600x 。

而且我用 perf annotate 分析 ,if (c % l == 0) 这一行的汇编指令有一条 mov %rdx,%rax 在 3700X 上占了 81%的时间,在 5600x 上也占了 54%的时间。

有没有什么办法让 perf record 的输出能在另一台机上分析?我发现拷贝 perf.data 到另一台机就不能 annotate 了,所以也没法共享给各位分析。
@kgdb00 #8 v 站的回复不能用 markdown 格式化
@icyalala
在 3700x 上运行"perf stat ./cpu-test"结果如下:

```
[email protected]:~/test# perf stat ./cpu-test

Performance counter stats for './cpu-test':

313.31 msec task-clock # 0.999 CPUs utilized
0 context-switches # 0.000 /sec
0 cpu-migrations # 0.000 /sec
62 page-faults # 197.886 /sec
1,334,724,216 cycles # 4.260 GHz
4,152,400 stalled-cycles-frontend # 0.31% frontend cycles idle
1,084,407,060 stalled-cycles-backend # 81.25% backend cycles idle
1,112,064,247 instructions # 0.83 insn per cycle
# 0.98 stalled cycles per insn
280,732,961 branches # 896.020 M/sec
479,493 branch-misses # 0.17% of all branches

0.313649907 seconds time elapsed

0.313436000 seconds user
0.000000000 seconds sys
```

5600x 上结果如下:

```
[email protected]:~/test$ perf stat ./cpu-test

Performance counter stats for './cpu-test':

109.50 msec task-clock:u # 0.997 CPUs utilized
0 context-switches:u # 0.000 /sec
0 cpu-migrations:u # 0.000 /sec
57 page-faults:u # 520.552 /sec
497,192,700 cycles:u # 4.541 GHz
1,236,868 stalled-cycles-frontend:u # 0.25% frontend cycles idle
3,047 stalled-cycles-backend:u # 0.00% backend cycles idle
1,109,781,743 instructions:u # 2.23 insn per cycle
# 0.00 stalled cycles per insn
280,305,908 branches:u # 2.560 G/sec
420,708 branch-misses:u # 0.15% of all branches

0.109816486 seconds time elapsed

0.108714000 seconds user
0.000997000 seconds sys
```
@booboo 感谢回复,编译出的程序是一样的,都是在 fedora 35 系统上,而且用 fedora 35 的 sysbench 也是这样的差距。刚才不小心用小号回复了。
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1218 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms · UTC 19:07 · PVG 03:07 · LAX 12:07 · JFK 15:07
Developed with CodeLauncher
♥ Do have faith in what you're doing.