我怎样才能使这个设置更快?

嘿StackOverlow社区,

我目前正在使用一些存储一堆XML文件的软件。 所有文件都在25k字节以下。 软件制造商表示基于多个并发的微小读取。 从驱动器读取的速度越快,其执行效果就越好。

之后,大量的性能testing他们似乎在说实话。 但是,在投掷这个钱之前,我想尽可能地testing一下。 服务器似乎没有超过35%的CPU使用率或高峰记忆明智。

服务器设置如下

  • Windows Server 2003 Standard
  • 四核2.6 Ghz
  • 4GB内存
  • 2硬件RAID卡
  • RAID10中的8个15k SCSI驱动器(硬件RAID)

我想如果我改变设置在RAID0使用2英特尔X-25 M我会得到更好的性能。 备份不是问题。 我们有一个到另一台服务器的实时复制和一个异地夜间备份,这也是磁带。 我目前在另一台服务器上尝试了一个英特尔X-25,看起来很有前景。

所以我的问题如下 –

  1. 我应该期望从2 SSD驱动器设置比8 SCSI驱动器性能更好的性能?
  2. 我应该采取哪些特殊的SSD设置步骤? (块大小等?)
  3. 目前在Windows Server 2003中testing? 这是否阻碍了呢? 我应该迁移到Windows Server 2008吗? (Linux等无效选项)
  4. 任何调整,我应该做的操作系统?
  5. 不同/更好的基准软件?

任何人都体验或testing类似的请让我知道。

一些基准信息使用( CrystalDiskMark )5通过50Mb

SSD盒子

types - 读取Mb / s  - 写入Mb / s  
 Seq  -  225  -  50.84  
 512K  -  152.7  -  53.73  
 4K  -  18.85  -  35.35  

SCSI盒

types - 读取Mb / s  - 写入Mb / s  
 Seq  -  549.8  -  352.2  
 512K  -  538.3  -  342.2  
 4K  -  89.30  -  65.19

TL; DR – RAID0或RAID10中的2个SSD驱动器是否比RAID10中的8个15k SCSI驱动器更快?

谢谢阅读。

考虑到你正在努力的performance水平,那么你应该记住一些事情。

以前的build议是,将数据集格式化为NTFS簇大小> 25k的驱动器是一个好的select,对于您的用例来说,32k似乎是一个不错的select。 这样做的目的是确保您避免必须尽可能处理碎片,并降低与读取单个文件相关的文件系统开销。

另外我build议看看你的RAID条带大小。 如果您的数据集的性质导致(主要)顺序IO,那么更大的条带大小更有利,如果它是随机的,那么较小的条带大小将会更聪明,只是不要使它小于文件系统簇大小。 鉴于你想要做什么的描述,我会说你的IOconfiguration文件是大多是随机的,所以64k的条带大小将是好的,但它可能是值得尝试的。

什么是非常重要的是要确保分区是alignment的 – 你会想要在你的系统上使用Diskpart.exe,通常设置一个alignment偏移量为64k的技巧,具有标准的集群和RAID条带大小,但是在Vista \ Windows7 \ W2K8,因为它将确保alignment,即使更大的条带和簇大小。 在这里有一篇关于SQL服务器性能的非常好的文章,它解释了为什么高性能驱动器\数组很重要。 这个简短的版本就是alignment不佳的分区会使IO性能降低15-30%。

对于SSD来说,也适用相同的一般规则,但是读取\写入的基本行为是完全不同的。 而不是在最基本的水平处理SSD的512byte磁盘扇区,使用更大的块。 读取往往是在4k和128k之间的固定页面大小,写入涉及缓冲和大的擦除块大小(在兆字节范围内)。 对你来说最重要的事情(读取IO很重要)是你想要设置你的RAID条带大小为你select的磁盘types的读取页面大小的倍数(我认为Intel X-25全部使用128k读取块),你想设置你的alignment偏移量,以确保它比那个更大。 例如,如果SSD具有128k的读取页面大小,则64k分区偏移的标准build议将是不好的select。 由于SSD写入的不对称性,优化SSD RAIDarrays以实现写入性能并不容易,但这是一个完整的故事,涉及大量的caching。

在OCZForum上有一篇关于优化SSD RAID的好文章,它的目标是发烧友的设置,但是对于那些试图从现成的工具包中推出他们自己的SSD RAID的人来说,我们可以看到一般信息。

最后,如果读取的IO模式主要是连续的,那么8个15k的驱动器(理论上)可以在800meg / sec的场地中击中某处,如果不是更多的话。 两个固态硬盘,甚至英特尔X-25E,只会达到一半。 我猜测你的读取IO模式对于随机IO有足够的偏见来抵消这种情况,但在正确的情况下,你的8个15K SCSI驱动器比两个SSD要快很多。 这是由你的testingcertificate的。 看看这些数字,但我会说,一些分区alignment和条带大小的工作将有所帮助。

如果XML文件都小于25k,请考虑格式化您的驱动器块大小> 25k 。 逻辑是一个整个文件将适合一个单一的块,因此你将不会得到分散在单个文件。 一个读/写操作将覆盖整个文件。

这可能会非常糟糕,并为您的O / S驱动器浪费空间,所以我会确保您没有在与您的操作系统安装在同一分区上执行此操作。 保留默认的块大小(可能是4k NTFS,因为你使用的是Windows)

这是一个更长期的性能改善,因为我怀疑你的全新安装会有很多碎片,所以你可能没有注意到随着时间的推移性能下降 – 取决于你的设置。

我想你应该认真考虑将这些XML文件加载到RAM中。 由于你在Windows上,有很多工具可以从你的实际内存中创build一个RAM驱动器,只要记住,当你重新启动的时候,这一切都会变得麻烦 ,所以你还需要在磁盘上安装这些文件。 购买更多的内存将是相当便宜,虽然取决于您目前的使用情况,我认为你会没事的只使用4GB的。

我首先build议禁用上次访问时间更新文件/目录与您的设置。 有了这么多的文件,会有明显的影响。

如果只有并发读取是一个问题,您可以尝试将这8个磁盘设置为仅RAID-1(而不是RAID-10),因为这将允许从任何驱动器读取任何文件,在读取时该文件将空闲。 你将会失去容量(只有1个驱动器的价值可用,而不是100GB以下的数据),写入速度也会变慢(任何写入操作都必须完成)。

将最大可能数量的RAM添加到服务器并将操作系统迁移到64位(以避免PAE )也将会很好,因为它有更大的文件caching。