不得不说的性能优化(上)



 

我们通常用时钟频率和其它的一些衡量指标来衡量计算机的性能。几年前,我们会用MIPS(Million Instructions Per Second,即单字长定点指令平均执行速度),以及后来为了科学工作而开始使用的KFLOPS或MFLOPS(Floating Point Operations Per Second,即每秒进行的千浮点操作或百万浮点操作数)。随着时间的推移,MIPS衡量标准开始出问题,当一个用MIPS衡量时速度显示非常快的系统,改用另一个不同的更为现实的基准检测时,却发现性能很差。

最早采用MIPS衡量的系统是迪吉多(DEC)公司的DEC PDP 11/70处理器,当时唯一的16位计算机。当MIP开始失去其衡量地位,VAX(Virtual Address eXtension即虚拟地址扩展)系统有时候会用在VUPS中(或者说VAX性能单元)。在PDP11/780的基础上,发展出了1 VAX性能单元(VUP)。

多种证据证明,随着时间推移和处理器的不断发展,每MHz的运行速度下执行的MIPS数将不断增加,因为体系结构和芯片设计的不断完善(这里符合摩尔定理)。

混淆视听的MIPS

如果我们把MIPS作为性能的衡量标准会怎么样?首先,我们很难确定操作系统或其它子系统正在执行多少条指令,以及其正在进行多少有用的计算。假设MIPS是对性能的有效衡量方式,那么如何解释在两个机器的体系结构不同时,一个每秒执行两百万条指令的机器完成一定工作量所用的时间不一定是每秒执行一百万条指令的机器的两倍。

对此,我们对一些IBM处理器的MIPS进行了测试,结果如下。

MIPS

表格中,这些CPU列表是按照MIPS排名的,你知道这些是哪几款IBM的CPU吗?

答案是,所有这七个排名其实都是1981年发布的IBM 3081D处理器。那为什么最后的MIPS不一样呢?是因为每一项的指令集不一样。MIP较高的情况是采用了快速的寄存器到寄存器的指令集,而MIP较低的结果是因为采用了复杂的指令集或重型诊断指令集。如果孤立地单单以MIPS来衡量处理器的性能,很容易迷惑人,造成错误的判断。

所以MIPS可能只能对同类处理器在不同配置的情况下衡量其性能好坏,但除此之外的很多情况下,都不能准确衡量性能好坏。但卖硬件的销售人员往往会钻空子,以此来忽悠人。

解读IOPS

程序性能是由是否能够获得足够的IT资源而决定,例如CPU、内存、存储器以及其他设备。有关存储的指标有:

·存储容量

·输入/输出能力(I/O性能)

·响应时间、空间、制冷、成本、利润率(ROI)和其他商业因素

我们主要关注的是I/O能力,这不能简单地认为是“我的系统每秒进行读写(I/O)操作的次数”。首先,让我们看一些有关输入输出的概念。

记录:程序的记录一般指的是逻辑记录,是数据在用户或应用程序员面前呈现的方式,即用户对数据的标示方式。例如,客户的姓名或地址。通常,一个逻辑记录由多个物理记录组成,一般都是对一个物理块进行检索,例如2048字节。虽然有时,一个物理记录会包含多个逻辑记录。

磁盘访问:一个输入输出操作包含了多个活动,这决定了完成数据处理的速度快慢,如I/O时间公式所示。

11507_terry-critchley-bw

错误的认识1

有些认识在互联网广为流传,但其实是完全错误的,需要我们格外注意。以下为错误的认识:如果一个I/O操作(查找、搜索、阅读)需要x毫秒,那么磁臂可以支持每秒1000/x的I/O操作。当然,如果你不介意无穷大的响应时间,并且认为磁盘是100%利用的话,是可以实现的。

对此,我们可以尝试计算一下,比如在这种情况下,结果显示平均只能支持约40%的I/O操作数。

错误的认识2

即使我们假定上述的讲法是正确的,那么支持X个I/O操作数的存储子系统将会比支持0.8X个I/O操作数的存储子系统性能表现更好。这种说法是不正确的,因为输入输出要满足程序对数据的请求还需要取决其它因素,其中,很多因素都是由程序设计员设定的。

1.物理数据和碎片的定位,前者不受程序员控制,后者才是。在必要时,物理数据能够被碎片化。

2.程序类型(email, query, OLTP等)和存取模式(随机、顺序、密集读写)。

3.物理块及其它物理结构,比如旋转速度(高达15,0000转/分钟)。

4.内存高速缓存和磁盘高速缓存的使用,可以减少一些I/O操作。

5.数据库布局设计。

6.RAID等级和其它访问模式的应用。

7.逻辑记录访问模式。

8.关键词和检索的优化,避免使用长同义词链组成同一个记录。我们曾碰到过一个客户的问题(虽然最后解决了),他的服务器反应速度非常糟糕,我们后来意识到,他检索3字节的关键词,检索时产生了很多同义词(即,相同的记录位置记录了不同的记录,导致通过链搜索到正确的数据花费了很长时间)。

9.其它因素和存储子系统参数。

总而言之,快速的I/O操作性能往往被糟糕的设计拖后腿。如果程序设计师能考虑到上面提到所有因素并进行最优设计,那么一个XIOPS的系统一定能超过一个支持0.8XIOPS的系统。

 

英文原文链接:

http://www.datacenterdynamics.com/servers-storage/performance-myths-and-legends-part-i/94881.blog