Friday 11 November 2016

Тестирование SSD, HGST HUSMH8020BSS204.

## Какой SSD выбрать под ZIL?

Какой SSD выбрать под ZIL?

Как мне кажется, одна из основных проблем при создании NAS на базе ZFS - какой SSD использовать под SLOG? Немного погуглив, все в один голос твердят, необходимо использовать ZeusRAM, но текущие реалии таковы, что данные диски сняты с производства и найти их можно только на ebay и подобных сайтах. Использование PCIE Flash невозможно ввиду того, что его нельзя расшарить между двумя серверами, следовательно нельзя собрать HA кластер.

На сегодняшний день мне видятся привлекательными следующие диски:

  • HGST HUSMH8010BSS204 / HUSMH8020BSS204
  • TOSHIBA PX04SHB160

Ввиду того, что в интернете имеется достаточно скудная информация о latency данных дисков, хочу поделиться с Вами результатом тестирования HUSMH8020BSS204.

Конфигурация оборудования

Тестирование SSD диска проводилось на сервер:

  • Vendor: SuperMicro
  • Product: X10DRi-LN4+
  • CPU: 2 x (R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
  • Mem: 524175 Megabytes Speed: 2133 MHz
  • SAS: LSI SAS 9300-16e
  • JBOS: SC216BE2C-R741JBOD

Конфигурация ОС

Тестирование проводилось с использованием ОС OmniOS релиз r151014. Операционная система имеет следующие настройки:

root@zns1-n2 ~ # egrep "^set" /etc/system
set ibft_noprobe=1
set noexec_user_stack=1
set noexec_user_stack_log=1
set idle_cpu_no_deep_c=1
set ip:ip_squeue_fanout=1
set pcplusmp:apic_panic_on_nmi=1
set apix:apic_panic_on_nmi=1
set dump_plat_mincpu=0
set dump_bzip2_level=1
set dump_metrics_on=1
set sata:sata_auto_online=1
set hires_tick=1
set zfs:zfs_arc_max = 450971566080
set rlim_fd_max = 131072
set rlim_fd_cur = 65536
set nfs:nfs3_max_threads = 32
set nfs:nfs4_max_threads = 32
set rpcmod:clnt_max_conns = 8
set sd:sd_io_time=10
root@zns1-n2 ~ # cat /kernel/drv/sd.conf
name="sd" class="scsi" target=0 lun=0;
name="sd" class="scsi" target=1 lun=0;
name="sd" class="scsi" target=2 lun=0;
name="sd" class="scsi" target=3 lun=0;
name="sd" class="scsi" target=4 lun=0;
name="sd" class="scsi" target=5 lun=0;
name="sd" class="scsi" target=6 lun=0;
name="sd" class="scsi" target=7 lun=0;
name="sd" class="scsi" target=8 lun=0;
name="sd" class="scsi" target=9 lun=0;
name="sd" class="scsi" target=10 lun=0;
name="sd" class="scsi" target=11 lun=0;
name="sd" class="scsi" target=12 lun=0;
name="sd" class="scsi" target=13 lun=0;
name="sd" class="scsi" target=14 lun=0;
name="sd" class="scsi" target=15 lun=0;
name="sd" class="scsi-self-identifying";

sd-config-list=
    "", "retries-timeout:1,retries-busy:1,retries-reset:1,retries-victim:2",
    "HGST    HUSMH8010BSS204", "power-condition:false,physical-block-size:4096",
    "HGST    HUSMH8020BSS204", "power-condition:false,physical-block-size:4096",
    "HGST    HUSMH8040BSS204", "power-condition:false,physical-block-size:4096",
    "HGST    HUSMH8080BSS204", "power-condition:false,physical-block-size:4096",
    "HGST    HUSMM1616ASS204", "power-condition:false,physical-block-size:4096",
    "HGST    HUSMM1680ASS204", "power-condition:false,physical-block-size:4096",
    "HGST    HUSMM1640ASS204", "power-condition:false,physical-block-size:4096",
    "HGST    HUSMM1620ASS204", "power-condition:false,physical-block-size:4096",
    "TOSHIBA PX04SHB160", "power-condition:false,physical-block-size:4096",
    "TOSHIBA PX04SHB080", "power-condition:false,physical-block-size:4096",
    "TOSHIBA PX04SHB040", "power-condition:false,physical-block-size:4096",
    "TOSHIBA PX04SHB020", "power-condition:false,physical-block-size:4096";

ddi-devid-registrant=1;
root@zns1-n2 ~ # egrep -v "^$|^#" /kernel/drv/scsi_vhci.conf

name="scsi_vhci" class="root";
load-balance="round-robin";
auto-failback="enable";
ddi-forceload =
        "misc/scsi_vhci/scsi_vhci_f_asym_sun",
        "misc/scsi_vhci/scsi_vhci_f_asym_lsi",
        "misc/scsi_vhci/scsi_vhci_f_asym_emc",
        "misc/scsi_vhci/scsi_vhci_f_sym_emc",
        "misc/scsi_vhci/scsi_vhci_f_sym_hds",
        "misc/scsi_vhci/scsi_vhci_f_sym",
        "misc/scsi_vhci/scsi_vhci_f_tpgs";
scsi-vhci-failover-override =
        "HGST    HUSMH8010BSS204",      "f_sym",
        "HGST    HUSMH8020BSS204",      "f_sym",
        "HGST    HUSMH8040BSS204",      "f_sym",
        "HGST    HUSMH8080BSS204",      "f_sym",
        "HGST    HUSMM1616ASS204",      "f_sym",
        "HGST    HUSMM1680ASS204",      "f_sym",
        "HGST    HUSMM1640ASS204",      "f_sym",
        "HGST    HUSMM1620ASS204",      "f_sym",
        "TOSHIBA PX04SHB160",           "f_sym",
        "TOSHIBA PX04SHB080",           "f_sym",
        "TOSHIBA PX04SHB040",           "f_sym",
        "TOSHIBA PX04SHB020",           "f_sym";

Инструмент тестирования - VDBENCH 5.04.06

Тестируемый диск

HGST HUSMH8020BSS204

По заверению производителя имеет следующие характеристики:

  • Read throughput (max MB/s, sequential 64K) - 1100
  • Write throughput (max MB/s, sequential 64K) - 765
  • Read IOPS (max IOPS, random 4K) - 130,000
  • Write IOPS (max IOPS, random 4k) - 110,000

Профили тестирования и результаты

Полный отчет vdbench и профили нагрузки можно найти здесь. Если сравнить показатели последовательного чтения/записи с заявленными производителем, то они оказались дастаточно близки к тому, что заявляет производитель. Вот пример:

Read throughput (max MB/s, sequential 64K)

13:09:27.001 Starting RD=rd1; I/O rate: Uncontrolled MAX; elapsed=700 warmup=20; For loops: xfersize=64k

Nov 11, 2016  interval        i/o   MB/sec   bytes   read     resp     read    write     resp     resp queue  cpu%  cpu%
13:21:27.009  avg_3-72   16198.73  1012.42   65536 100.00    0.490    0.490    0.000    5.080    0.107   7.9   1.7   1.4

Read Latency (sequential 64K)

13:09:27.000 Starting RD=rd1; I/O rate: Uncontrolled MAX; elapsed=700 warmup=20; For loops: xfersize=64k

Only reads done for this workload:
  min(ms) <     max(ms)        count       %%    cum%%  '+': Individual%; '+-': Cumulative%

    0.000 <       0.020            0   0.0000   0.0000  
    0.020 <       0.040            0   0.0000   0.0000  
    0.040 <       0.060            0   0.0000   0.0000  
    0.060 <       0.080            0   0.0000   0.0000  
    0.080 <       0.100            0   0.0000   0.0000  
    0.100 <       0.200            0   0.0000   0.0000  
    0.200 <       0.400    1,676,027  14.3762  14.3762  +++++++
    0.400 <       0.600    8,498,194  72.8937  87.2699  ++++++++++++++++++++++++++++++++++++-------
    0.600 <       0.800    1,338,586  11.4818  98.7517  +++++-------------------------------------------
    0.800 <       1.000      127,247   1.0915  99.8432  -------------------------------------------------
    1.000 <       2.000       15,003   0.1287  99.9719  -------------------------------------------------
    2.000 <       4.000        3,276   0.0281 100.0000  -------------------------------------------------
    4.000 <       6.000            4   0.0000 100.0000  -------------------------------------------------
    6.000 <       8.000            0   0.0000 100.0000  --------------------------------------------------
    8.000 <      10.000            0   0.0000 100.0000  --------------------------------------------------
   10.000 <      20.000            0   0.0000 100.0000  --------------------------------------------------
   20.000 <      40.000            0   0.0000 100.0000  --------------------------------------------------
   40.000 <      60.000            0   0.0000 100.0000  --------------------------------------------------
   60.000 <      80.000            0   0.0000 100.0000  --------------------------------------------------
   80.000 <     100.000            0   0.0000 100.0000  --------------------------------------------------
  100.000 <     200.000            0   0.0000 100.0000  --------------------------------------------------
  200.000 <     400.000            0   0.0000 100.0000  --------------------------------------------------
  400.000 <     600.000            0   0.0000 100.0000  --------------------------------------------------
  600.000 <     800.000            0   0.0000 100.0000  --------------------------------------------------
  800.000 <    1000.000            0   0.0000 100.0000  --------------------------------------------------
 1000.000 <    2000.000            0   0.0000 100.0000  --------------------------------------------------
 2000.000 <         max            0   0.0000 100.0000  --------------------------------------------------

Write throughput (max MB/s, sequential 64K)

19:37:14.000 Starting RD=rd1; I/O rate: Uncontrolled MAX; elapsed=700 warmup=20; For loops: xfersize=64k

Nov 11, 2016  interval        i/o   MB/sec   bytes   read     resp     read    write     resp     resp queue  cpu%  cpu%
19:49:14.010  avg_3-72   10538.96   658.69   65536   0.00    0.734    0.000    0.734    8.833    0.374   7.7   1.8   1.0

Write Latency (sequential 64K)

19:37:14.000 Starting RD=rd1; I/O rate: Uncontrolled MAX; elapsed=700 warmup=20; For loops: xfersize=64k

Only writes done for this workload:
  min(ms) <     max(ms)        count       %%    cum%%  '+': Individual%; '+-': Cumulative%

    0.000 <       0.020            0   0.0000   0.0000  
    0.020 <       0.040            0   0.0000   0.0000  
    0.040 <       0.060            0   0.0000   0.0000  
    0.060 <       0.080            0   0.0000   0.0000  
    0.080 <       0.100            0   0.0000   0.0000  
    0.100 <       0.200           88   0.0012   0.0012  
    0.200 <       0.400       55,576   0.7330   0.7341  
    0.400 <       0.600    3,762,288  49.6192  50.3533  ++++++++++++++++++++++++
    0.600 <       0.800    1,747,374  23.0454  73.3987  +++++++++++-------------------------
    0.800 <       1.000      738,326   9.7375  83.1362  ++++------------------------------------
    1.000 <       2.000    1,228,690  16.2047  99.3408  ++++++++-----------------------------------------
    2.000 <       4.000       42,490   0.5604  99.9012  -------------------------------------------------
    4.000 <       6.000        3,843   0.0507  99.9519  -------------------------------------------------
    6.000 <       8.000        3,632   0.0479  99.9998  -------------------------------------------------
    8.000 <      10.000           16   0.0002 100.0000  -------------------------------------------------
   10.000 <      20.000            0   0.0000 100.0000  --------------------------------------------------
   20.000 <      40.000            0   0.0000 100.0000  --------------------------------------------------
   40.000 <      60.000            0   0.0000 100.0000  --------------------------------------------------
   60.000 <      80.000            0   0.0000 100.0000  --------------------------------------------------
   80.000 <     100.000            0   0.0000 100.0000  --------------------------------------------------
  100.000 <     200.000            0   0.0000 100.0000  --------------------------------------------------
  200.000 <     400.000            0   0.0000 100.0000  --------------------------------------------------
  400.000 <     600.000            0   0.0000 100.0000  --------------------------------------------------
  600.000 <     800.000            0   0.0000 100.0000  --------------------------------------------------
  800.000 <    1000.000            0   0.0000 100.0000  --------------------------------------------------
 1000.000 <    2000.000            0   0.0000 100.0000  --------------------------------------------------
 2000.000 <         max            0   0.0000 100.0000  --------------------------------------------------

ZFS

Меня в первую очередь интересует использование этого устройства под ZIL, данный диск показывает достаточно хороший latency при I/O блоками до 32кбайт, далее же latency увеличивается и при размере I/O == 128k 86% записей фиксируется на ssd в пределах 1 милисекунды. В данный момент на zfs у нас два типа нагрузки, это кластер виртуализации из 800-та машин и файловый сервер для бэкапов. Проанализировав средний размер I/O, которым идет запись в SLOG на текущей системе, а также, учитывая то, что при операциях типа storage vmotion размер I/O составляет примерно 256кб, что в свою очередь будет увеличивать latency (см. тесты с xfeesize 128kb - 256kb), имеет смысл использовать конфигурацию, в которой на каждый две полки с 24 HHD 10krpm sas, будет приходиться по 2 SSD диска в RAID1 под ZIL.

Скрипт построения гистограммы I/O на блочное устройство.

#!/usr/sbin/dtrace -s

io:::start /args[1]->dev_pathname == $$1 && args[0]->b_flags & B_WRITE/ {
       @[args[1]->dev_pathname] = quantize(args[0]->b_bcount);
    }
    tick-30s {
       exit(0)
    }

Backup SLOG I/O Distribution

# ./iosize_sd.d /devices/scsi_vhci/disk@g5000cca04e27f5a4:a
dtrace: script './iosize_sd.d' matched 8 probes
 CPU     ID                    FUNCTION:NAME
  33 178951                        :tick-30s

  /devices/scsi_vhci/disk@g5000cca04e27f5a4:a       
           value  ------------- Distribution ------------- count    
            2048 |                                         0        
            4096 |                                         14       
            8192 |@@@@@@@                                  394      
           16384 |                                         4        
           32768 |                                         0        
           65536 |                                         4        
          131072 |@@@@@@@@@                                478      
          262144 |@@@@@@@@@@@@@@@@@@@@@@@@                 1300     
          524288 |                                         4        
         1048576 |                                         0        

VMWare SLOG I/O Distribution

# ./iosize_sd.d /devices/scsi_vhci/disk@g5000cca04e27f490:a
dtrace: script './iosize_sd.d' matched 8 probes
 CPU     ID                    FUNCTION:NAME
  53 178379                        :tick-30s

  /devices/scsi_vhci/disk@g5000cca04e27f490:a       
           value  ------------- Distribution ------------- count    
            2048 |                                         0        
            4096 |@@                                       3989     
            8192 |@@@@@@@@@@@@@@@@@@                       37923    
           16384 |@@@@@@@@@@@@@@@@@                        36245    
           32768 |@@                                       4046     
           65536 |@                                        2419     
          131072 |                                         74       
          262144 |                                         19       
          524288 |                                         1        
         1048576 |                                         0        

1 comment:

  1. Привет. А конфиги для vdbench остались?

    ReplyDelete