性能的本质IPC之动手验证
前言 最近在实践学习plantegg大佬的程序员案例,对IPC的实验进行一下记录,以备查验 术语说明 IPC 本文的主角,全名为 Instructions per cycle(clock), 表示每个时钟周期可执行的指令数,常用来做为评判处理器性能的指标 NOP no operation, 在指令集中表示一个指令不改变所执行程序的 register,status flag,也就是不要进行上下文的切换,CPU的上下文切换是有时间开销的 实验代码下载 git clone https://github.com/plantegg/programmer_case 实验机器信息 实验只可在物理机下进行 实验验证 测试nop指令 编译测试代码 gcc ./nop.c -o nop 执行测试 perf stat ./nop 现象 IPC跑到3.79 问题 我记得第一次执行IPC好像跑到了4(未改变代码),当时忘记截图了,后续测试的都到不了4了 IPC与perf执行时间长短有关吗? 好像是无关的,保证cpu 100%后就可以停止进行查看 IPC怎么接近4? 改代码增加nop指令的数量,加到将近700个,IPC达到3.97 测试pause指令 编译测试代码 gcc ./pause.c -o pause 执行测试 perf stat ./pause 现象 IPC只跑到了0.11 测试nop指令跑两份各自绑定到同一物理核 如何判断HT?通过查看/proc/cpuinfo信息, 如果physical id和core id都一样的话,说明这两个core实际是一个物理core,其中一个是HT 执行测试 taskset -c 0 perf stat ./nop taskset -c 24 perf stat ./nop 现象 ...