【专题讨论】针对特定程序,如何对intel cpu进行选型。(利用Vtune工具)

mountaineer_hz 2010-12-24 02:46:26
缘起:
最近在做产品的降成本工作,原先的程序是跑在E4300上的。现在对软件进行优化后,希望可以选择一款更便宜的CPU以降低整机成本。于是就涉及到一个问题“对于特定的程序,如何确定一个系统,这个系统的性能对这个程序是正好够用的。”其实我们在对产品进行升级时,也会碰到这个问题。程序的功能增加了,性能要求提升了,但就究竟选择哪一款CPU、内存、主板,才是刚好满足性能要求,且价格最低的呢?

条件:
1、给定一个程序,运行在Intel cpu上,操作系统为linux。不考虑程序优化的问题,假设此程序已经在项目允许的时间内进行过了优化,不能再给时间进行优化了。
2、此给定程序只要求每秒种处理的速度,即,每秒钟要干的活是确定的,硬件计算速度再快,也多干不了;但如果慢了,后边再快也补不上前边丢失的。比如:实时图像处理程序。
3、为了保证系统的在突发情况下的稳定性,可以给定程序的性能要求上再打出20%的余量。
问题:
如何找到一个硬件系统(包括:Intel CPU、主板、内存、显卡等),使这个系统的性能刚好能满足给定程序的性能要求,且价格是最低的。

我先说说自己现在的思路,希望能抛砖引玉,各位牛人不要见笑啊。
1、先搭建一个能满足给定程序性能要求的系统。

2、在这个系统上用Vtune对给定程序测如下指标:
a)CPU_CLK_UNHALTED.CORE / 程序运行秒数
b)RS_UOPS_DISPATCHED:C=1 / 程序运行秒数
c)RS_UOPS_DISPATCHED:C=1:I=1 / 程序运行秒数

3、分析采集的数据:
对a分析,CPU在给定程序上每秒钟花了多少cycle。我们可以知道CPU在运行给定程序上花了多少,剩下的时间刨去操作系统的时间,就是空闲的时间。我们的目的就是要让这部分时间尽量的小。这部分的值决定了我们可以多大范围的降低CPU的各项配置(主频、核数、超线程、总线频率等)。
对b分析,CPU在给定程序上每秒种花了多少cycle运行指令。由于我们不优化程序,所以这些cycle是必须满足的。再选别的CPU,也必须至少可以提供这些cycle的计算量。这部分值,给CPU划了一条下限、低于这个的就不要考虑啦。
对c分析,CPU在给定程序上每秒种花了多少cycle等待。这些等待来源很多:1、各层的cache miss;2、读取总线的延迟;3、分支预测失败;4、浮点、除法指令等。来源很多,但如果我们不改变程序的话,其中一些就不会改变。总结下来,跟选型相关的stall时间是:1、各层的cache miss;2、读取总线的延迟;(其实我在这块也不太确定对不对,各位高手指正)。cache miss的,自然是cache越大这个数越小;读取总线的延迟,主要就是访问内存的时间了,自然就和FSB速度、内存频率、位宽、通道数、内存的CL等相关。(如果是QPI的话,是不是就主要是内存的CL了呢?)当我们选的新CPU降低了cache或总线频率或内存频率时,这个stall的值就会上升,提前算出这个stall值,就可以预估这颗CPU是不是真的够跑给定程序。

4、疑问:
这里的一个疑问是:当我改变一个CPU时,我可以算出主频改变对程序运行的影响,也可以大概算出总线频率、内存频率改变对程序stall的影响。但就是算不出cache大小改变对程序stall的影响。
现在能想到的办法就是这个:遍历测试程序在2、3、4、6M cache系统下每秒钟cache miss的次数。跟据这个次数确定CPU改变后对性能的影响。不过这个方法至少要找4块不同cache大小,还都能运行给定程序的CPU,代价还是不小的。不知道高人们有没有什么更好的方法来估算“cache大小改变后对程序的stall的影响”

5、总结一下策略
a) 初选:根据上面的分析,在现有的CPU中,我们可以大体筛掉很大一部分不符合要求的CPU。
b) 对剩下的CPU,通过计算,大致确定其性能浪费的时间。可能会得到几款CPU均符合浪费时间最少的原则。
c) 计算几款CPU的整机成本,包括主板、内存、显卡等。
d) 选择整机成本最小的CPU在实际测一下,确定该系统浪费的性能。
e) 若性能满足且浪费时间很少,则确定使用该CPU,否则,从b)步骤开始重新迭代。

以上就是小弟对intel cpu选型的一些想法啦,希望各位高手多多排砖,争取把这个问题讨论透彻,以后的选型就可以“又好又快”啦~~~

...全文
59 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧