【IT168评测中心】网络文件系统是一种让计算机可以像访问本地磁盘一样访问远程计算机上文件的一种网络协议,比起FTP文件传输协议来是一种更为方便的网络共享方式。
历史上比较著名的网络文件系统有SunOS里面开始附带的NFS(Network File System),不过Windows系统自然没有采用NFS协议,而是采用了不同的方式。它就是服务器消息块(Server Message Block,SMB) 远程文件系统协议,它是Windows文件服务的基础。SMB文件系统的一个开放版本也称为通用Internet文件系统(Common Internet File System,CIFS)并为Microsoft广泛使用。
网络文件系统采用服务端/客户端模式。任何计算机都能同时担当两种角色
如同Windows通过软件可以支持NFS一样,Linux/Unix通过Samba也可以支持SMB,实际上,不少的小型NAS都是使用了Linux + Samba来提供Windows文件服务器支持的。
SMB协议运行于NetBIOS/NetBEUI/IPX以及TCP/UDP/IP上方
文件服务器在应用中非常广泛,我们IT168评测中心在测试服务器的时候都会测试这方面的性能,我们是怎么做的呢?
为了测试文件服务器的性能,我们使用了60个Windows XP Professional客户端来模拟实际的工作环境,并使用NetBench测试软件来进行整个测试过程。
NetBench v7.03测试
NetBench是针对文件服务器的性能测试软件,影响NetBench性能的主要是服务器的磁盘子系统,服务器磁盘控制器、条带大小、读写缓存、硬盘类型、组建磁盘阵列模式、内存容量、网络拓朴结构等都会对测试结果有明显的影响。我们在被测服务器上设立了文件服务器,NetBench通过网络实验室中60个客户端来模拟网络中的PC向文件服务器所发出的文件传输请求,文件服务器则将存储在磁盘上的文件数据发送给相应的客户端。在测试过程中,客户端会以每四台一组的步进依次增加并且向服务器发送文件传输请求,测试结束后控制台收集数据并绘制出服务器的数据传输变化曲线。
曲线的单位会有两个,一个是吞吐量Throughput,单位是MBit(Mbps),一个是平均响应时间Average Response Time,单位是ms(milliseconds),前者代表了测试对象在担当文件服务器时的输入输出能力,后者则是客户端进行操作时的服务器平均响应时间。
下面我们就通过一系列实际的NetBench测试来演示我们的测试过程,并会对结果进行分析,最后我们将会清楚什么因素会影响文件服务器的性能。下面是测试使用到的服务器平台:
NetBench测试平台、测试环境 | ||||
测试分组 | ||||
类别 | 7200RPM SATA阵列 | 15000RPM SAS阵列 | 15000RPM SAS阵列 with Superfetch | |
处理器子系统 | ||||
处理器 | Intel Core i7 940 | Intel Xeon E5430 x2 | Intel Xeon E5430 x2 | |
主频 | 2.93GHz | 2.66GHz | 2.66GHz | |
FSB | QPI:3200MHz | 1333MHz | 1333MHz | |
L2 Cache | 4 x 256KB L3 Cache:8MB | 12MB | 12MB | |
主板 | ||||
主板型号 | ASUS P6T Deluxe | DELL PE2900 III | DELL PE2900 III | |
北桥芯片组(MCH) | Intel X58 | Intel 5000X | Intel 5000X | |
内存 | 1GB DDR3 1066 SDRAM x6 三通道 | 2GB FBD DDR2 667 SDRAM x8 四通道 | 2GB FBD DDR2 667 SDRAM x8 四通道 | |
系统磁盘子系统 | ||||
磁盘控制器 | Intel ICH10R RAID Controller | LSI MegaRAID SAS 8408E RAID Controller | LSI MegaRAID SAS 8408E RAID Controller | |
磁盘控制器规格 | SATA 3Gbps | SAS 3Gbps | SAS 3Gbps | |
磁盘控制器设置 | RAID 0 | RAID 5 | RAID 5 | |
磁盘控制器驱动 | Intel Matrix Storage Manager 8.6.0.1032 x64 | LSI MegaRAID SAS 3.8.0.64 x64 | LSI MegaRAID SAS 3.8.0.64 x64 | |
磁盘 | Seagate Barracuda 7200.11 ST31000333AS x23 | Seagate Cheetah 15K.5 ST314655SS x3 | Seagate Cheetah 15K.5 ST314655SS x3 | |
磁盘规格 | 7200RPM 1TB SATA 3Gbps 32MB Cache | 15000RPM 146GB SAS 3Gbps 16MB Cache | 15000RPM 146GB SAS 3Gbps 16MB Cache | |
磁盘设置 | SATA 3Gbps 50GB系统分区 | SAS 3Gbps 50GB系统分区 | SAS 3Gbps 50GB系统分区 | |
网络子系统 | ||||
网卡 | Marvell 88E8056 GbE x2 Teaming | Broadcom NetXtreme II GbE x4 Teaming | Broadcom NetXtreme II GbE x4 Teaming | |
软件环境 | ||||
操作系统 | Microsoft Windows Server 2008 Enterprise x64 Edition SP1 | Microsoft Windows Server 2008 Enterprise x64 Edition SP1 | Microsoft Windows Server 2008 Enterprise x64 Edition SP1 with Superfetch |
测试使用了IT168评测中心的一台DELL PowerEdge 2900 III服务器和一台组装的Core i7 920平台,DELL平台使用了3个15000RPM的Seagate捷豹15K.5组成RAID 5平台,Core i7平台则是使用两个Seagate酷鱼7200.11组成RAID 0平台,其他的软件配置则一模一样。PowerEdge 2900 III服务器采用的主板基于Intel 5000X芯片组,带有12MB Snoop Filter缓存,它可以提升重负荷下缓存同步、进程调度方面的性能。5000X芯片组比较少见。前段时间推出的5400 Seburg芯片组带有24MB的Snoop Filter缓存。
Core i7是Nehalem架构在桌面平台上的产品品牌,关于Core i7在服务器应用上的性能表现,可以参看《性能大幅提升 Core i7 服务器应用测试》。
NetBench测试需要进行数个小时,我们先进行的是Core i7平台的NetBench测试,这个平台基于Intel ICH10R RAID控制器、两个1TB酷鱼7200.11硬盘RAID 0。
NetBench测试:Core i7 920平台+7200RPM SATA硬盘RAID 0
NetBench测试:Core i7 920平台+7200RPM SATA硬盘RAID 0
虽然文件服务器性能是基于文件级别的读取,因此测试服务器的内存子系统可以帮得上忙(缓存的作用),从《性能大幅提升 Core i7 服务器应用测试》中我们可以知道,Core i7的内存子系统性能非常强劲,不过这帮不了NetBench最终的测试表现,虽然在低客户机数量的时候性能增长很迅速,然而在越过顶峰(约900Mbps)之后,性能跌落十分明显,最后降低到约400Mbps。
从平均访问时间Average Response Time图标中我们可以分析出其原因:在16个客户端之前,ART都是很低的0.25ms(1秒=1000毫秒),而在之后随着客户的增长,ART指标急速攀升,40个客户端时达到了1.60ms,这延迟是1~16个客户端时的6.4倍!
IO性能检测:Core i7 920平台+7200RPM SATA硬盘RAID 0
虽然只看1.60ms这个值的话不会有什么感觉,不过我们要看看服务器这时候的样子:
Windows提供了一个简单的方法来显示IO的延迟,那就是资源管理器(在任务管理器的“性能”页里面可以找到直接连接),在磁盘页里面,可以看到一项“响应时间的参数”,可以看到,Core i7平台在测试NetBench的时候,一些相关任务的响应时间就达到了最高1753ms!这已经很接近两秒钟了,也就是说其他程序需要存取硬盘区块的时候,将会需要接近两秒钟才会有反应。实际上,这时候机器就像假死一样,反应极为缓慢了——因为进行这些操作时操作系统本身也需要存取数据。这种情形一般人相信也碰到过:在开共享的电脑上,同时进行游戏而被人通过网络存取大文件的时候就会深刻地感受到,这都是因为磁盘IO无法跟上操作需求的缘故。
接着我们更换了测试的平台,这次基于一台DELL PowerEdge 2900III服务器——也就是我们网络实验室的两台服务器之一。它基于双Xeon处理器,16GB的FBD DDR2 SDRAM,磁盘子系统则是通过LSI MegaRAID SAS阵列卡连接的3块希捷捷豹15K.5硬盘组成RAID 5阵列,捷豹15K.5硬盘属于希捷的15000RPM系列,转速是通常桌面级别硬盘的两倍多,具有很强的平均访问时间参数。这种配置在服务器当中不为少见。
NetBench测试:双Xeon平台+15000RPM SAS硬盘RAID 5
NetBench测试:SAS阵列 VS SATA阵列
NetBench测试:双Xeon平台+15000RPM SAS硬盘RAID 5
NetBench测试:SAS阵列 VS SATA阵列
效果十分显著,我们可以看到曲线明显的不同,随着客户机数量的增加,测试系统的吞吐量也逐渐地提升,在16个客户端的时候具有一个明显的转折点,这点和SATA阵列的时候是相似的,同时观察平均响应时间曲线,表明在16个客户端之前,两个系统的ART参数都几乎是一条直线,这意味着系统此时的压力主要在内存子系统上,而非磁盘子系统上。
显然,采用直联架构的Core i7的内存子系统明显超出Xeon太多,因此在低客户端时Core i7平台的性能反而更好,这点也在在《性能大幅提升 Core i7 服务器应用测试》里有直观的体现。
很明显,高转速SAS阵列可以维持NetBench响应时间的平缓增长,从而保证了吞吐量的平缓增长,而不至于像SATA阵列那样在高负荷下不可用(高负荷下SAS阵列的ART参数只有SATA阵列的一半)。这是由于磁盘本身的平均响应时间较低导致的,磁盘子系统在保障了性能需求的情况下,提高了系统的响应能力,这时候系统的资源管理器里面可以看到其他任务的磁盘IO请求仍然维持在较低的响应时间(数十毫秒)内。
我们知道Vista核心比XP多了一系列的Super功能,例如SuperBoost、Superfetch等,其中Superfetch是跟系统缓存有关的,它对文件服务器性能有没有影响呢?接着我们打开了测试平台的Superfetch功能。可以说,Windows Server 2008的内核和Windows Vista的内核就是一样的,因此2008也有Superfetch功能。
NetBench测试:Superfetch VS 无Superfetch
NetBench测试:Superfetch VS 无Superfetch
结果很令人惊讶:Superfetch可以令吞吐量提升,同时让平均响应时间降低。吞吐量提升的幅度达到了10~15%以上,只需要改动操作系统就能达到这样的性能提升,为什么呢?
什么是SuperFetch
Fetch,预取技术在Windows XP时代就得到了支持,该功能基于对以前的系统引导以及应用程序的启动执行的大规模磁盘 I/O进行记录,从而向内存预先加载所预期需要用到的代码和文件系统数据,从而改进了系统引导和应用程序启动的性能。Vista 凭借 SuperFetch 又向前迈进了一大步,SuperFetch 是一种通过历史信息和前瞻性内存管理来增强LRA(Least-Recently Accessed,最近最少访问)方法的内存管理方案。
过分空余的内存空间即是浪费:Superfetch缓存了近5GB的数据
Superfetch同时包含了对内存管理和对文件缓存两方面的革新。从NetBench的观点上看,主要用来提升程序引导/运行速度的内存管理器方面的更新并没有涉及到。Superfetch对NetBench性能的提升是在文件缓存方面。简单而言,Superfetch此时的策略就是:把空闲内存充分利用起来,而不是像Windows 2000/XP那样,留着大量空闲内存不用,非得等到需要时再从磁盘里加载,大大降低整体性能。
NetBench测试时Superfetch缓存了560MB的数据,这是因为NetBench测试的文件夹不大的缘故,实际的文件服务器将具有相当多的数据、文件
在客户端请求网络文件操作的时候,具有Superfetch功能的文件服务器就可以通过直接跳用缓存里面的数据,而不必再进行磁盘I/O,因此性能就得到了较明显的提升。关于Superfetch还有很多功能未介绍到,感兴趣的同学可以看这里:《64位才好用 亿能4GBx2 DDR2800内存套装》,一些更核心的内容可能会在以后相关的文章里出现。
既然Superfetch在NetBench应用中如此有用,那么我怎么没在Windows Server 2008里面见到呢?别慌,Windows Server 2008也具有这个功能,不过是默认关闭的:
Windows Server 2008:默认关闭的Superfetch服务
这个功能在2008里面是默认禁用的,在这里将其启动方式设置为“自动”就可以,此外,还需要对注册表进行一些改动——只要把下面#号包含的内容保存为一个.REG注册表文件再执行就可以了:
###################################
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters]
"EnablePrefetcher"=dword:00000003
"EnableSuperfetch"=dword:00000003
###################################
在更改服务、修改注册表之后,只需要重启一次,你的2008服务器就具有Superfetch功能了!
【IT168评测中心】在仔细的测试当中,我们可以知晓了关于影响文件服务器的多个因素,要想提升文件服务器的性能,你需要注意下面几点:
1、处理器并不是最重要的,我们的双核Xeon E5430在测试的时候只具有25%~33%的处理器占用率。当然,更大的FSB/HT/QPI总线带宽的处理器是个好选择,就像Core i7那样。
2、使用随机访问时间较低,也就是寻道性能良好以及命令排序性能良好的磁盘子系统,例如,使用高转速的SAS硬盘阵列。这可以明显地影响到高负荷下的文件服务器性能。
3、使用大容量、快速的内存子系统,在较低负荷的时候,文件服务器的工作量比较依赖于内存子系统,同时大容量的内存也是为了下一个因素:
4、使用Superfetch功能,这个特性可以明显地提升文件服务器在所有负荷下的性能,为了使用Superfetch功能,你还需要——
5、使用Windows Server 2008操作系统,虽然它的Superfetch特性是其中一个目的,不过Server 2008包含的SMB 2.0以及网络协议方面的改进,让其基础性能也得到了很大的提升。关于这点,可以参看《Server2003对决2008系列之文件服务器》。
在这些要素当中分别包含了硬件和软件的因素,通过我们评测的揭示,相信大家都可以配置出性能不凡的文件服务器。