一些厂商经常拿出文件系统的基准信息和测试数据,以达到宣传他们自身产品的优良。但是,厂商并不是第三方机构,存在着一定的偏向性,对于用户来说,如何看清文件系统基准的猫腻,就能够更好的了解文件系统基准,从而不被厂商所忽悠。用户也应该更加关注SPEC基准,因为它的设计目的就是使得厂商无法篡改数据结果。
文件系统存在一个很大的问题就是,它是SPEC基准的对立面,目前并没有一个成型的、受到厂商一致认同的标准文件系统基准。我曾经是一位基准制订者,并且是一位具有革新精神的基准制订者,所以我很了解厂商可能使用的技俩。现在让我们详细谈谈这个问题,希望这能让你变成一位更加精明的用户。
什么是真正的基准?
这是一个我们应该总在问自己的问题:什么是真正的基准?这是我自己的定义:一项真正的基准必须能够代表你真实的工作负载,以在你所考虑的系统上运行的相同方式运行,并且与该工作负载运行在系统上的相同时间段内。以下是一些关键点:
·它不是你今天运行在那个系统上的工作负载,而是你要运行在新系统上的工作负载
·为了具有完全的代表性,该工作负载应该以在你系统上运行的相同方式运行
内存利用率是文件系统基准的一个重要部分。如果你不是运行像数据库这样的真实应用,而是使用IOZONE这样的基准测试,那么I/O请求可能会被整合成为更少、更大的请求,如果没有真实应用运行的话这是不可能实现的。这将会使内存I/O看上去比在实际条件下的状况更好。
另一个大问题是碎片整理。我所见过几乎所有文件系统都会因为碎片整理——通常是对数据和文件系统元数据的碎片整理——而性能降低,我所知的所有基准都没有把文件系统的碎片整理考虑在内。厂商总是宣称他们的文件系统如何不会受到碎片整理的影响,但是我不相信,而且在实际环境中我也从未看到过能够印证他们说法的现象。大概只有在一种情况下碎片整理不是一个问题,那就是如果你购买了一款系统,然后生产了一些文件,并且从来不对这些文件作任何修改或者不增加任何存储。我从来没有见多这种类型的混合内容环境,而且我估计其他人也没见过这种情况。
这只是其中的两个例子,实际上还有更多,例如底层存储和互连。就我所知,没有人做的是真正的文件系统基准,因为他们没有包括文件系统碎片整理,也没有实际使用内存空间、带宽和CPU的应用。