民用SSD 关闭 写cache后的 糟糕性能表现

昨天刚到手的一块SSD,建兴 ZETA 256GB的硬盘。
smartctl查看到的信息如下:
=== START OF INFORMATION SECTION ===
Device Model:     LITEON LCH-256V2S
Serial Number:    002448118079
LU WWN Device Id: 5 002303 10035169e
Firmware Version: FC8020A
User Capacity:    256,060,514,304 bytes [256 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-2 (minor revision not indicated)
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Sun Dec 20 21:52:23 2015 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
AAM feature is:   Unavailable
APM feature is:   Unavailable
Rd look-ahead is: Enabled
Write cache is:   Enabled
ATA Security is:  Disabled, frozen [SEC2]
Write SCT (Get) XXX Error Recovery Control Command failed: scsi error aborted command
Wt Cache Reorder: N/A


在打开写缓存时,pg_test_fsync测试到的fsync写性能如下:
postgres@digoal-> pg_test_fsync 
5 seconds per test
O_DIRECT supported on this platform for open_datasync and open_sync.

Compare file sync methods using one 8kB write:
(in wal_sync_method preference order, except fdatasync is Linux's default)
        open_datasync                     14640.971 ops/sec      68 usecs/op
        fdatasync                         13786.079 ops/sec      73 usecs/op
        fsync                              9384.938 ops/sec     107 usecs/op
        fsync_writethrough                            n/a
        open_sync                          9606.181 ops/sec     104 usecs/op

Compare file sync methods using two 8kB writes:
(in wal_sync_method preference order, except fdatasync is Linux's default)
        open_datasync                      8157.733 ops/sec     123 usecs/op
        fdatasync                         10784.381 ops/sec      93 usecs/op
        fsync                              7117.690 ops/sec     140 usecs/op
        fsync_writethrough                            n/a
        open_sync                          4913.559 ops/sec     204 usecs/op

Compare open_sync with different write sizes:
(This is designed to compare the cost of writing 16kB in different write
open_sync sizes.)
         1 * 16kB open_sync write          7361.125 ops/sec     136 usecs/op
         2 *  8kB open_sync writes         5274.986 ops/sec     190 usecs/op
         4 *  4kB open_sync writes         3099.050 ops/sec     323 usecs/op
         8 *  2kB open_sync writes         2048.264 ops/sec     488 usecs/op
        16 *  1kB open_sync writes         1225.877 ops/sec     816 usecs/op

Test if fsync on non-write file descriptor is honored:
(If the times are similar, fsync() can sync data written on a different
descriptor.)
        write, fsync, close                9403.945 ops/sec     106 usecs/op
        write, close, fsync                9847.864 ops/sec     102 usecs/op

Non-sync'ed 8kB writes:
        write                            337716.595 ops/sec       3 usecs/op

看起来非常漂亮的性能指标。居然比我以前用的PCI-E接口的ocz还要好,有点不敢相信。

当我把硬盘的写缓存关闭后,再次测试,真实性能暴露。
[root@digoal parameters]# hdparm -W 0 /dev/sda

/dev/sda:
 setting drive write-caching to 0 (off)
 write-caching =  0 (off)


性能结果让人咂舌:
postgres@digoal-> pg_test_fsync 
5 seconds per test
O_DIRECT supported on this platform for open_datasync and open_sync.

Compare file sync methods using one 8kB write:
(in wal_sync_method preference order, except fdatasync is Linux's default)
        open_datasync                       527.295 ops/sec    1896 usecs/op
        fdatasync                           519.180 ops/sec    1926 usecs/op
        fsync                               168.596 ops/sec    5931 usecs/op
        fsync_writethrough                            n/a
        open_sync                           169.740 ops/sec    5891 usecs/op

Compare file sync methods using two 8kB writes:
(in wal_sync_method preference order, except fdatasync is Linux's default)
        open_datasync                       261.551 ops/sec    3823 usecs/op
        fdatasync                           517.381 ops/sec    1933 usecs/op
        fsync                               168.195 ops/sec    5945 usecs/op
        fsync_writethrough                            n/a
        open_sync                            84.394 ops/sec   11849 usecs/op

Compare open_sync with different write sizes:
(This is designed to compare the cost of writing 16kB in different write
open_sync sizes.)
         1 * 16kB open_sync write           168.287 ops/sec    5942 usecs/op
         2 *  8kB open_sync writes           84.500 ops/sec   11834 usecs/op
         4 *  4kB open_sync writes           42.232 ops/sec   23678 usecs/op
         8 *  2kB open_sync writes           20.911 ops/sec   47823 usecs/op
        16 *  1kB open_sync writes           10.288 ops/sec   97204 usecs/op

Test if fsync on non-write file descriptor is honored:
(If the times are similar, fsync() can sync data written on a different
descriptor.)
        write, fsync, close                 170.290 ops/sec    5872 usecs/op
        write, close, fsync                 171.121 ops/sec    5844 usecs/op

Non-sync'ed 8kB writes:
        write                            332315.202 ops/sec       3 usecs/op


用dd加direct,sync测试持续写入,在开启了写缓存的时候,性能还是很不错的,连续写入8GB数据。
但是在写入过程中,使用smartctl -x /dev/sda查看硬盘的信息时,又hang了。iowait飙升到100,问题可能还和NCQ有关,见上一篇文章。
如果这是一个普遍现象,企业用的话,还是要企业级的产品。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值