我最近对一些文件系统标杆信息和公布的测试结果感到生气。厂商们利用这些标杆来吹嘘他们自己的文件系统可与X品牌媲美,但是这些文件系统标杆不能像SPEC(标准性能评估中心)标杆那样看待,因为SPEC的设计可以防止厂商们歪曲其结果。
文 件系统标杆的一个大问题就是它们正好和SPEC标杆相反:厂商之间还没有达成任何一个标准的文件系统标杆。我曾经做过标杆工作,而现在我认为自己思想已经 发生转变,因此我知道厂商们在标杆上玩的花样。下面我们将看看这些花招,希望你能够通过这些信息成为一个更加见多识广的消费者。
什么是真实的标杆?
我们每个人都应该扪心自问:什么是真实的标杆?这里是我的定义:一个真实的标杆能够代表你的实际工作负荷,其标杆测试过程就运行在真实的系统以及真实工作负荷所发生的时间段。注意下面一些要点:
这里的工作负荷不是指你今天运行在系统上的工作负荷,而是指你将要在新系统上运行的工作负荷。
为了能够完全反映真实情况,该工作负荷的运行方式应该和在你系统上的运行方式一致。
内 存使用情况是文件系统标杆测试的重要一部分。如果你不是运行像数据库这样的真实的应用程序,而是使用像IOZONE这样的标杆测试,那么I/O请求有可能 被合并成数量更少、规模更大的请求,而如果你是运行真实的应用程序的话,有可能不会出现这样的I/O请求情况。这样,内存I/O测试结果有可能看起来比真 实世界的实际结果更好。
碎片是另一个大问题。我所看到的每个文件系统都曾因为碎片问题而出现性能下降。这些碎片多发生在数据和文件系统元数 据上。但是,我从来没有看到过任何一个标杆测试一下文件系统的碎片。厂商每次都声称它们的文件系统不会因为碎片而性能下滑,但是我从来不信,我也没有在真 实世界中看到过厂商们所描述的情况。只有在一种情况下碎片才不会成为问题:购买一个系统,创建一批文件,然后再也不修改任何文件或增加任何存储。我可从来 没看到过这种类型的固定内容环境,我也怀疑其他人是否这样用文件系统。
我这里只是举了两个例子,实际上还有更多需要考虑的因素,比如底层存储和互联方案。就我所见,没有人曾经做过真实的文件系统标杆测试。他们没有考虑文件系统碎片,而且也经常不使用真实内存空间、带宽和CPU下的真实应用程序。
标杆测试花招
这里是一些常见的文件系统标杆测试花招。
内存使用
这 里我花更多笔墨描述一下内存带宽和内存空间。在PCIe 2.0出现后,每个总线现在都可以支持至多5GB/秒的内存带宽。从内存带宽来说,英特尔Xeon处理器5100系列拥有1333MHz的前端总线,而且 FBDIMM(全缓冲内存模组)拥有21.3GB/秒的带宽。因此,一个PCIe 2.0总线可以使用设备内存总带宽的23%左右,而两个PCIe 2.0总线可以使用46%的内存带宽。如果你是运行真实的应用程序而不是标杆测试,而且你和其他应用程序正在进行I/O操作,那么你的应用程序肯定会使用 带宽,因此一个不使用带宽的文件系统标杆测试肯定不符合真实世界工作负荷的情况。
多数文件系统会根据应用程序负载使用不同大小的内存。如果 不使用相同或相近的内存量,你就无法判断文件系统在进行内存缓冲的时候对你的I/O请求做了些什么。我最近看到一个厂商所发表的一些测试结果显示它们的文 件系统拥有惊人的性能。如果你仔细阅读它们的硬件规格和标杆测试结果,你会发现数据库在测试过程中有足够的内存量与其相匹配。因此,这种情况下,I/O只 是一个后台过程,其作用只是同步这些文件,而通过高速缓存,可能还可以异步地进行。这个厂商所采用的对比是:另一个文件系统使用直接的I/O来即时地将数 据写入存储,其请求大小和标杆测试的请求大小相同。很明显,这不是一个公平的比较,而且由于该厂商的文件系统在测试过程中没有支持直接I/O,因此该厂商 的标杆测试结果尤其值得怀疑。
存储子系统
除了将光纤通道驱动器或SAS驱动器作为标杆一方,并将SATA 驱动器作为比较的另一方这样显失公平的做法外,厂商们还有其他做法。一些文件系统对超过一定大小的数据进行直接的I/O读写。假设该厂商是公平的,即在测 试中使用大小超过内存的文件以及像数据库那样的大型的I/O请求,然后进行磁盘读写,但是这里假设该厂商的文件系统是专门针对小型块分配和读写操作的,而 且不支持直接I/O。为了让其他文件系统显得糟糕,可以使用RAID-1(独立磁盘冗余阵列),而不是RAID-5或RAID-6。如果块分配很小,而且 大型请求被分解成小型请求,那么使用RAID-1有助于拉平其他文件系统在这类测试中的性能表现,让它们显示不出应有的优势。
可调文件系统
一 些文件系统有缺省调整集,可以根据特定的I/O请求大小和线程数量进行调节。我曾看到一些厂商通过调整集让其他文件系统看起来表现比较差。当然,一些文件 系统有数百个可调选项,因此要寻找一个合适的比较对象比较难,但是许多厂商在其他文件系统的缺省调整集上使用比较差的选择,这样可以就可以歪曲比较结果。 我曾经看到过一个厂商在标杆测试中,调整它自己的文件系统但是不调整其他文件系统,或故意在另一个文件系统上选择比较差的设置。
I/O测试
多 数厂商在I/O标杆测试中不运行真实的应用程序。虽然有一些厂商使用真实的应用程序,但是其I/O标杆和应用程序也有可能是具有迷惑性的。一些特定的应用 程序有专门的文件系统调整选项内置在应用程序中,你必须知道一些数据库、文件系统标杆和其他应用程序内置有针对特定文件系统的调整集。IOZONE是一个 常见的标杆,该标杆在遇到VxFS文件系统和HP-UX操作系统的时候会有一些性能变化。这并不是说IOZONE是不好的测试,但是从这个例子中你应该了 解到在任何I/O测试中(无论是数据库还是其他标杆)都必须关注潜在的问题。
FUD因素
市场营销部门的目的是为了传播FUD(恐惧、不确定和怀疑),以影响你的决策。我最近看到的一些文件系统标杆就是如此,很多标杆实际上无法帮助你确认这些文件系统在实际环境下的情况。希望你能仔细阅读这些标杆,并记住这些标杆的问题和你自己的要求。