本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/smb3-over-rdma-performance/ Windows Server 2012 (之前的名字就是 Windows Server 8)即将到来,近日看到原来 Windows Server 8 中新增的 SMB 2.2 文件共享协议也有了新的官方名称:SMB 3.0,看看这个介绍说明: http://blogs.technet.com/b/windowsserver/archive/2012/04/19/smb-2-2-is-now-smb-3-0.aspx SMB 3.0 相对于 Windows Server 2003 以及以前的操作系统中的 SMB 1.0 协议增加了很多新的特性: 精简 SMB 1.0 中繁多的命令,减少 ACK 提高效率; 支持流水线机制,可以在上一个 SMB 命令未完成之前发新的命令; 支持符号链接,支持更大的文件块大小提高大块文件读写的性能; 更好的 oplock 机制; 更像真正的文件系统,原来不能安装在 SMB 共享中的程序(例如:SQL Server)也可以使用了; 支持通过 RDMA(Remote Direct Memory Access) 远程直接访问数据提高在 Infiniband 等环境下的性能; 多通道支持,通过多网络通道提高性能,而且支持错误容忍和集群。 刚好旁边有两张 Mellanox 的 Infiniband 卡,顺便就来看看 SMB 3.0 over RDMA 的实际读写性能怎么样咯。由于 SMB 3.0 只有 Windows Server 8 或者 Windows Server 2012 才支持,因此用 Windows Server 8 的测试 ISO 安装并拷贝了一份系统(服务器和客户端都必须支持 SMB 3.0)。 测试环境: 服务器: Intel S5500BC 服务器主板; Intel Xeon E5506 CPU * 1; Kingston DDR3 1066 4G 服务器内存 * 1; Mellanox MHQH29B ConnectX®-2 系列 32Gbps Infiniband 卡(PCI-E x 8 插槽); Adaptec RAID 51645 PCIe SAS RAID卡; WD WD10EVDS 1TB SATA 监控硬盘 * 16; Windows Server 8 Beta Datacenter Build 8250 64位中文版; IPoIP 网卡 IP 地址:192.168.3.196(MTU:4092) 客户端: TYAN S7002 服务器主板; Intel Xeon E5506 CPU * 1; Kingston DDR3 1066 2G 服务器内存 * 1; Mellanox MHQH19B ConnectX®-2 系列 32Gbps Infiniband 卡(PCI-E x 16 插槽); Windows Server 8 Beta Datacenter Build 8250 64位中文版; IPoIP 网卡 IP 地址:192.168.3.172(MTU:4092) 其它环境: 由于没有 Infiniband 交换机,故测试时服务器和客户端的 Infiniband 卡通过 Mellanox MCC4Q30C-003 QSFP 线缆直连,而且客户端的 Infiniband 卡只有一个接口,所以也只测试了单口的性能,没有测试 SMB 3.0 多通道下的性能。 测试软件: IBM Tivoli SANergy(测试大块文件连续读写); Iometer(测试大块文件并发读写); NetPIPE(测试 IPoIB (IP over Infiniband) 的纯粹网络性能); Mellanox 驱动程序中的 IB Tools(启动 SM 并测试纯粹 Infiniband 性能) 测试步骤及结果: 1、在服务器和客户端分别安装 Mellanox Infiniband 卡最新的驱动程序: 虽然 Windows Server 8 中已经自动 Mellanox Infiniband 的驱动,但为了更新 firmware 并能使用上软件 SM(没 Infiniband 交换机滴说 -_-#),必须更新官方的驱动,到下面的网址下载新驱动: http://www.mellanox.com/content/pages.php?pg=products_dyn&product_family=129&menu_section=34 安装 Mellanox OFED for Windows Server 2012,建议安装时按照下面的提示更新卡的 firmware 以免带来不必要的问题: 安装完成之后重启服务器和客户端,你会发现 “网络连接” 里已经有了 Mellanox 的 IPoIB 网卡,但是是 “未连接” 的状态,因为 Infiniband 网络里还没有配置 SM(Subnet Manager)。 先来简单了解下 Infiniband 的 Subnet Manager: Infiniband(IB) 网络中需要使用 Subnet Manager(SM)来初始化 IB 硬件并允许其在 IB 架构中通信。每个 IB 子网必须有至少一个 SM,并且每个 SM 在 IB 架构中要有清楚的 ID。IB 架构就包含已经定义好的子网。IB 交换机和 IB 卡一样有自己的 GUID,主机适配卡(HCA)的端口被称为 port GUID,当一个 HCA 或者它的端口需要与子网中的另一个进行通信就需要分配网络地址,这些网络地址被称为 LID,而 IB 中的 SM 就负责为子网中的成员分配 LID,LID 只是对子网而言的,而 GUID 则是对整个 IB 架构中所有子网相同的。 IB 交换机一般就可以充当 SM 的角色,对于我这没有 IB 交换机的环境,幸好咱们还是有穷人的方法的,使用免费的 OpenSM 软件可以让两个机器中的任意一台做软件 SM。 […]
Tag: Performance
Windows Server 8 ReFS 测试初探
本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/windows-server-8-refs-basic-test/ 微软最新的 Windows Server 8(现在已改名为 Windows Server 2012,坑爹的命名,汗下)中支持了微软引入的新文件系统 ReFS 用于替换存在了 N 年了的 NTFS 文件系统。大家可能依稀还记得当前 Longhorn(其实就是后来的 Vista 操作系统的开发代号) 操作系统发布时传闻要引入的新文件系统 WinFS 被阉割的消息,到了 2012 年终于推出了新文件系统 ReFS。 ReFS 全名为 Resilient File System(弹性文件系统),按照微软官方的说明,ReFS 相对 NTFS 主要的改进有: 1、改进磁盘上的数据结构,ReFS 也跟着主流文件系统的脚步使用 B+ 树来存储元数据和实际数据了,文件大小、卷大小等的限制也还是 64 位,元数据和实际数据被以类似关系数据库形式的表组织起来,文件名和路径长度的限制也扩大为 32KB 的 Unicode 字符串; 2、元数据增加校验和,增强数据的验证和自动更正处理,支持 COW 实现可靠磁盘数据更新; 3、扩大卷大小、文件大小、文件夹大小; 4、数据条带提高性能,并支持错误容忍; 5、可以在不同的计算机间共享存储池以增强容错性和负载平衡; 6、也是非常重要的,对 NTFS API 及使用方式上的很大程度上的兼容,包括 ACL、符号链接、挂载点、oplock 等,但也有一些 NTFS 的特性例如 文件压缩、硬链接、用户磁盘配额 等没有被支持。 有关 ReFS 的详细原理及说明请参考这个 MSDN 的 blog: http://blogs.msdn.com/b/b8/archive/2012/01/16/building-the-next-generation-file-system-for-windows-refs.aspx 需要注意的是 Windows 7 及之前的系统都不支持 ReFS,而且 Windows 8 似乎也只有服务器版本才支持。借着前几天下载安装的 Windows Server 8 测试版本系统笔者就先简单测试下 ReFS 相对 NTFS 的性能,由于我这实际应用时以顺序读写为主,先做顺序读写性能对比。 测试环境: Intel S5500BC 服务器主板; Intel Xeon 5506 CPU * 1; Kingston DDR3 1066 4G 服务器内存 * 1; Adaptec RAID 51645 PCIe SAS RAID卡; WD WD10EVDS 1TB SATA 监控硬盘 * 16; Windows Server 8 Beta Datacenter Build 8250 64位中文版; Iometer 1.1.0-rc1 Windows 64位版本 16 个 1TB 的 SATA 盘建 RAID0,RAID0 的块值为 256KB,并启用 read 和 write cache。然后在 Windows Server 8 中的磁盘阵列设备上分别建 2TB 大小的简单卷,格式化为 NTFS 和 ReFS,分别测试其连续读写性能。 在磁盘管理里新建分区格式化时就可以看到 ReFS 的选项: 测试结果: 测试项目 ReFS(MB/s) NTFS(MB/s) 64KB 连续写 192.85 225.02 64KB 连续读 230.79 227.82 256KB 连续写 388.94 417.79 256KB 连续读 495.48 548.49 1MB 连续写 690.77 738.42 1MB 连续读 965.39 821.82 4MB 连续写 860.45 858.28 4MB 连续读 1129.54 1092.30 从测试结果可以看到,ReFS 相对 NTFS 来说在小一些的块值的连续读写上并没有什么优势,而在 RAID0 的整个 stripe 条带大小(256KB * 16 = 4MB)的读写性能上则确实比 NTFS 有一点改进。 另外说下 ReFS 暂时的不足之处: 1、Windows 8 虽然已经支持 ReFS,但并没有 NTFS 和 ReFS 之间转换的工具,你如果需要从 NTFS 切换到 ReFS,暂时只能手工中转拷贝了; 2、不支持从 ReFS 引导启动系统; 3、可移动磁盘或者 U 盘之类的设备不能使用 ReFS; 4、不支持文件压缩和用户磁盘配额,虽然这两个用的可能不是非常多,但还是有点不可想象; 5、NTFS 中原来支持的扩展属性 ReFS 也不再支持,有一些软件会依赖这个,感觉会有些不便。 总之现在看起来微软新引入的 ReFS 并没有像 ZFS 那样的新文件系统(支持 RAID-Z、原生快照、128位文件系统等特性)那样吸引人,如果要吸引用户转移到 ReFS 感觉还是任重道远,不知道 Windows Server 2012 最终版本中的 ReFS 到底有何改善。 本文章中介绍的只是测试了连续读写的性能,ReFS 重点支持的容错等功能下次有机会时再来测试,文中有任何问题欢迎指正咯。 ^_^