我从一家托管公司租用了两台专用服务器。规格如下:
server1:
HP ProLiant DL165 G7
2x AMD Opteron 6164 HE 12-Core
40 GB RAM
HP Smart Array P410 RAID controller
2x Samsung 830 256 GB SSD
server2:
HP ProLiant DL120 G7
Intel Xeon E3-1270
16 GB RAM
HP Smart Array P410 RAID controller
2x Samsung 830 128 GB SSD
两个服务器上的设置相同:
- Debian 6.0。
- 沒有交换。
- 文件系统使用 ext3,没有特殊的挂载选项(只有 rw),而且我非常确定分区已正确对齐。
- 使用 noop 调度程序。
- RAID 1。
- RAID 控制器有 BBU。
- RAID 控制器中已启用驱动器写入缓存。
- 两个 RAID 控制器上的读/写缓存比率分别为 25%/75%。
我目前正在尝试弄清楚如何从顺序读取/写入开始充分利用这些服务器中的磁盘。以下是我目前看到的速度:
Writes:
server1:~# dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 5.05089 s, 213 MB/s
server2:~# dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.09768 s, 262 MB/s
Reads:
server1:~# echo 3 > /proc/sys/vm/drop_caches
server1:~# dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.14051 s, 259 MB/s
server2:~# echo 3 > /proc/sys/vm/drop_caches
server2:~# dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 3.33901 s, 322 MB/s
首先,有人能解释一下这些服务器之间的巨大差异吗?
其次,我应该期待更多吗?当我读到关于三星 830 SSD 的文章时,我见过 写入速度超过 300 MB/s,读取速度超过 500 MB/s使用相同的基准测试方法 (dd)。但是没有涉及 RAID 控制器。RAID 的损失这么高吗,还是配置问题?
更新:
我使用 iozone 而不是 dd 进行了一些测试,得到的结果更有意义。两台服务器之间没有太大区别(server1 现在稍快一些),而且我的速度非常接近这些驱动器的额定速度。所以我想我不应该使用 dd。吸取教训!
我将使用 noop,并将 nr_requests 和 read_ahead_kb 设置为默认值(128 和 128)。将 read_ahead_kb 设置得更高似乎会严重损害 server2 上的随机读取性能。希望在我将服务器投入生产一段时间后,当我对使用模式有了更清晰的了解后,有时间重新审视这个问题。
答案1
这里有很多内容需要讲。
如果您想要更高的性能(按影响从大到小的顺序排列):
- 添加另一对磁盘并扩展至 RAID 1+0。这将提供最大的好处。
- 调整文件系统(
noatime
日志模式、删除写屏障等)和/或迁移到更高性能的文件系统,例如西弗斯甚至是 ext4。 - 返回截止期限电梯。在实际工作量下,其性能将优于您的noop 调度器。
- 升级您的HP Smart Array P410 控制器(以及服务器,以及)
- 考虑一些更高级的调音技巧。
- 改进基准测试技术。
dd
不是衡量 I/O 性能的合适方法。尝试专门构建的应用程序,例如碘,邦尼++等等,并根据您想要的读/写模式进行调整。 - 对于纯粹的顺序读/写,常规 SAS 驱动器也不是一个糟糕的选择……
至于兼容性,我经常将非 HP 磁盘与 HP RAID 控制器和服务器一起使用。有时,事情不起作用,但如果您的 SSD 已连接,报告适当温度并且没有在 HP 阵列配置实用程序中显示任何错误,所以一切正常。
你是在服务器上使用 HP 管理代理,不是吗?
编辑:
我在我的一个系统上运行了同样的程序,该系统具有相同的控制器,四SATA SSD、调整的 XFS、截止期限电梯等。
[root@Kitteh /data/tmp]# dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 3.1985 s, 336 MB/s
[root@Kitteh /data/tmp]# echo 3 > /proc/sys/vm/drop_caches
[root@Kitteh /data/tmp]# ll
total 1048576
-rw-r--r-- 1 root root 1073741824 Sep 24 14:01 tempfile
[root@Kitteh /data/tmp]# dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 1.60432 s, 669 MB/s
答案2
使用非 HP 驱动器和 HP SmartArray 控制器时,您不应期望它有任何特殊的性能,甚至不能期望它能正常工作。HP 已明确表示,如果他们的 SA 控制器恰好与非 HP 驱动器一起工作,那完全是无意的,并且不受支持。如果您想让这些驱动器发挥良好的性能,请购买支持它们的 HBA(LSI 和 Adaptec 实际上是 HP SA 控制器的制造商,它们往往是极好的选择)。
答案3
首先,Adaptec 不生产 Smartarray,但在某些情况下,HP 在其 Smararray 中使用了 Adaptec 的 SCSI 芯片组。
其次,阅读此文,其中包含有关使用 SSD 进行智能阵列调整的重要信息。