Szybkość odczytu / zapisu SSD (Intel 530) bardzo niska z RAID 10

11

Wyjaśnienie:

Mamy serwer:

  • Model: HP ProLiant DL160 G6
  • 4 dyski SSD 240 GB (RAID-10)
  • 72 GB pamięci RAM DDR3
  • 2 x L5639
  • Kontroler HP P410 RAID (256 MB, V6.40, wersja Rom: 8.40.41.00)

Dyski SSD to 4 zupełnie nowe 2,5-calowe procesory Intel 530 o prędkości odczytu 540 MB / s i prędkości zapisu 490 MB / s

  • CentOS 6
  • Systemy plików to ext4

ale jest to wynik testu prędkości odczytu w rajdzie 10:

hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads:  824 MB in  3.00 seconds = 274.50 MB/sec
[root@localhost ~]# hdparm -t /dev/mapper/vg_localhost-lv_root

/dev/mapper/vg_localhost-lv_root:
 Timing buffered disk reads:  800 MB in  3.01 seconds = 266.19 MB/sec

i dotyczy prędkości zapisu:

dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 4.91077 s, 109 MB/s

liczyliśmy na prędkość odczytu 1 GB z raidem 10, ale 270 MB nie jest nawet prędkością pojedynczego dysku!

Pytania:

  1. Dlaczego jest taki wolny?
  2. Czy to z powodu kontrolera RAID?

Aktualizacja 1 - Ta sama prędkość odczytu / zapisu:

Po zmianie niektórych ustawień, jak wspomniano w odpowiedziach, mam wynik poniżej:

(Czy ktoś wie, dlaczego pokazuje 4 GB zamiast 400 MB jako prędkość odczytu ?!)

EDYCJA: wygląda na to, że polecenie było niepoprawne i powinniśmy użyć -s144g dla tej ilości pamięci RAM, dlatego pokazuje 4 GB (jak sugerują komentarze ewwhite)

[root@192 ~]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.408 $
                Compiled for 64 bit mode.
                Build: linux

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  135331.80 KB/sec
        Children see throughput for  1 rewriters        =  124085.66 KB/sec
        Children see throughput for  1 readers          = 4732046.50 KB/sec
        Children see throughput for 1 re-readers        = 4741508.00 KB/sec
        Children see throughput for 1 random readers    = 4590884.50 KB/sec
        Children see throughput for 1 random writers    =  124082.41 KB/sec

ale stare hdparm -t /dev/sdapolecenie nadal pokazuje:

Odczyt dysku buforowanego czasowo: 810 MB w 3,00 sekundy = 269,85 MB / s

Aktualizacja 2 (pakiet tuned-utils) - Prędkość odczytu wynosi teraz 600 MB / s:

Nareszcie mamy nadzieję, że wyłączyliśmy pamięć podręczną z kontrolera RAID i zrobiliśmy kilka innych rzeczy wcześniej bez powodzenia, ale ponieważ ponownie załadowaliśmy serwer i ponownie zainstalowaliśmy system operacyjny, zapomnieliśmy zainstalować „tuned-utils” zgodnie z sugestią ewwhite (dziękuję ewwhite za ten niesamowity pakiet, który zasugerowałeś)

Po zainstalowaniu tuned-utilsi wybraniu enterprise-storageprofilu prędkość odczytu wynosi teraz ~ 600 MB / s +, ale prędkość zapisu jest nadal bardzo niska (~ 160 MB) (:

Oto wynik iozone -t1 -i0 -i1 -i2 -r1m -s144gpolecenia:

    Children see throughput for  1 initial writers  =  165331.80 KB/sec
    Children see throughput for  1 rewriters        =  115734.91 KB/sec
    Children see throughput for  1 readers          =  719323.81 KB/sec
    Children see throughput for 1 re-readers        =  732008.56 KB/sec
    Children see throughput for 1 random readers    =  549284.69 KB/sec
    Children see throughput for 1 random writers    =  116389.76 KB/sec

Nawet z hdparm -t /dev/sdarozkazem mamy:

Odczyt dysku buforowanego czasowo: 1802 MB w 3,00 sekundy = 600,37 MB / s

Wszelkie sugestie dotyczące bardzo niskiej prędkości zapisu?

Aktualizacja 3 - niektóre informacje wymagane w komentarzach:

Prędkość zapisu jest nadal bardzo niska (~ 150 MB / s, co nie stanowi nawet 1/3 pojedynczego dysku)

Dane wyjściowe dla df -hi fdisk -l:

[root@192 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       441G  3.2G  415G   1% /
tmpfs            36G     0   36G   0% /dev/shm


[root@192 ~]# fdisk -l
Disk /dev/sda: 480.0 GB, 480047620096 bytes
255 heads, 63 sectors/track, 58362 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00040c3c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       58363   468795392   83  Linux
Ara
źródło
W tym teście prawdopodobnie powinieneś określić podwójną ilość pamięci RAM zainstalowanej na serwerze.
ewwhite
Czy możesz powiedzieć nam wersję oprogramowania układowego kontrolera Smart Array P410?
ewwhite
@ bardzo dziękuję za komentarz, wersja oprogramowania to p410 (256 MB, V6.40), a wersja rom to 8.40.41.00, czy moje polecenie iozone było nieprawidłowe? jeśli tak, czy mógłbyś powiedzieć mi właściwe polecenie do testowania? ponieważ wszystko, co próbuję, otrzymuję prędkość odczytu w GB
Ara
Coś tu jest bardzo nie tak. Dostajesz tylko ~ 122 MB / s zapisów. Liczby 4 GB / s, które widzisz, są operacjami z pamięci podręcznej, więc łańcuch poleceń powinien wyglądać tak iozone -t1 -i0 -i1 -i2 -r1m -s144g. :(
ewwhite
@ewwhite Dziękuję bardzo, szybkość odczytu jest teraz bardzo dobra (szczegółowo jak w aktualizacji 2 w moim pytaniu), ale szybkość zapisu jest bardzo rozczarowująca, czy masz na to jakieś sugestie?
Ara

Odpowiedzi:

16

Podczas gdy druga odpowiedź tutaj zawiera pewne punkty, twoje konkretne problemy są spowodowane ograniczeniami platformy i konfiguracją systemu operacyjnego:

  • Przepustowość jesteś ograniczony przez zastosowanie konsumenckie SATA SSD na tablicę P410 kontrolera RAID HP Smart . Dyski SATA działają na tych kontrolerach z prędkością 3,0 Gb / s (3G) zamiast 6,0 Gb / s (6 G). Jest to bariera, która wpływa na szybkość odczytu dysków SSD Intel; 300 MB / s lub mniej na dysk.

  • Kontroler Smart Array P410 ma określone wymagania i najlepsze praktyki w przypadku korzystania z dysków SSD. Krótko mówiąc, kontroler jest w stanie obsłużyć 50 000 IOPS, wyłączyć akcelerator macierzy dla wolumenu SSD, a wydajność osiąga maksimum na ~ 6 dyskach.

  • Wydajność dysku nie zawsze zależy od szybkości sekwencyjnego odczytu / zapisu. Spróbuj przeprowadzić testy porównawcze za pomocą odpowiedniego narzędzia, takiego jak iozone lub bonnie ++ . Nadal zyskujesz losowe korzyści we / wy wielu napędów.

  • Na poziomie systemu operacyjnego zainstaluj pakiet tuned-utils i ustaw profil, enterprise-performanceaby usunąć bariery zapisu z systemów plików i ustaw odpowiednią windę we / wy dla konfiguracji. Jest to również omówione w innych pytaniach tutaj .

  • Wygląda na to, że używasz LVM. To również może mieć wpływ ...

Oto raport dotyczący strefy ozonu dla G7 ProLiant z czterema konsumenckimi dyskami SSD SATA 6G (zmniejszonymi do prędkości 3G) na tym samym kontrolerze RAID HP Smart Array P410.

Powinieneś zobaczyć ~ 470 MB / s zapisów i 650 MB / s + odczytów.

[root@mdmarra /data/tmp]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.394 $
                Compiled for 64 bit mode.
                Build: linux 

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  478209.81 KB/sec
        Children see throughput for  1 rewriters        =  478200.84 KB/sec
        Children see throughput for  1 readers          =  677397.69 KB/sec
        Children see throughput for 1 re-readers        =  679523.88 KB/sec
        Children see throughput for 1 random readers    =  437344.78 KB/sec
        Children see throughput for 1 random writers    =  486254.41 KB/sec
ewwhite
źródło
Dziękuję bardzo, model ma nazwę „DL160 G6”, tak, w grę wchodzi płyta montażowa :( Byłbym nawet zadowolony z 600 MB tutaj, ale 270 MB jest naprawdę powolne, jak myślisz, co powinienem zrobić, czy rajd oprogramowania pomaga?
Ara
2
Okej, z DL160 G6 powinieneś mieć dwa kable prowadzące od kontrolera RAID do płyty montażowej napędu ... 8 gniazd. Twój problem dotyczy przepustowości dysku, metodologii testowania i ustawień serwera. Wypróbuj inne sugestie wymienione w mojej odpowiedzi.
ewwhite
Interesujący kawałek o tym, że P410 robi tylko 3G na SATA i konkretne najlepsze praktyki. Mod up. (LVM nie powinien jednak być poważnym ciosem pod względem negatywnego wpływu na wydajność, odnotowano również tutaj: unix.stackexchange.com/questions/7122/... )
Roman
1
@Ara Dla ProLiant nie ma kontrolera SATA 6G. O to chodzi. Twoje dyski SSD będą działać z prędkością 3G na tej platformie, chyba że korzystasz z dysków SSD SAS .
ewwhite
1
@Ara Software RAID wymagałoby połączenia z innym kontrolerem, takim jak SAS HBA (np. LSI 9211-8i) ... to pozwoliłoby ci zobaczyć pełną przepustowość dysków, ale istnieją inne aspekty wydajności SSD poza czystym sekwencyjna przepustowość odczytu / zapisu.
ewwhite
12

Och kochanie, od czego zacząć?

Jest tak wiele zaangażowanych i potrzebujesz dobrego zrozumienia wszystkiego. Samo wrzucenie kilku dysków do kontrolera RAID nie przyniesie oczekiwanych rezultatów.

Na to nie można łatwo odpowiedzieć. Ale przynajmniej oto lista rzeczy, na które musisz spojrzeć:

  • Czy kontroler ma nawet wymaganą przepustowość? (-> Dane techniczne)
  • Czy kontroler ma nawet wystarczającą przepustowość do hosta (nawet w wersji 1.0, ponieważ ma x8)
  • Czy chipset systemu ma wystarczającą przepustowość (CPU-Controller)? (nieznany)
  • Jaką strategię pisania poleciłeś Administratorowi? ( to najprawdopodobniej cię ugryzło )
  • Czy wszystko jest wyrównane (partycja zaczyna się, wartości niskie, wartości PV)?
  • Czy rozmiary bloków są zharmonizowane? (Rozmiar paska RAID, rozmiar bloku, bloki FS, ...)
  • Czy system plików jest zoptymalizowany pod kątem konfiguracji RAID? (Poziom i rozmiar bloku)

Ponieważ przepustowość w stosunku do całej macierzy RAID (pomijając FS) jest znacznie niższa niż w przypadku pojedynczego dysku, prawdopodobnie źle skonfigurowałeś strategię zapisu; Kontroler prawdopodobnie czeka, aż wszystkie dyski potwierdzą zapis (i chyba, że ​​masz pamięć RAM na kontrolerze baterii, może to leżeć w twoim najlepszym interesie).

rzymski
źródło
jest to naprawdę trudniejsze niż myślałem, pomyślałem, że to tak proste, jak uaktualnienie pamięci RAM kontrolera RAID do 512 MB! , dziękuję Roman, pozwól mi sprawdzić niektóre z tych, co przed chwilą powiedziałeś, mając nadzieję na znalezienie przyczyny
Ara,
Większość z powyższych jest prawidłowymi strategiami rozwiązywania problemów dla przypadków skrajnych, ale nie dotyczą one szczegółów konfiguracji oryginalnego plakatu. Kontroler tutaj ma wymaganą przepustowość i przepustowość, procesor jest w porządku, kontroler RAID domyślnie ma stosunek bufora R / W wynoszący 25:75 R / W (powinien być całkowicie wyłączony w przypadku korzystania z SSD), CentOS6 poprawnie wyrównuje partycje i istnieje zbyt duża potencjalna abstrakcja, aby uzyskać rozmiary bloku „zharmonizowane”. Trzy omawiane kwestie to: dławiki 6G są dławione z prędkością 3G, bariery zapisu systemu plików są prawdopodobnie włączone, a winda We / Wy jest domyślnym CFQ.
ewwhite
1
Model serwera niestety nie został zanotowany w momencie mojej odpowiedzi. Dobrze wiedzieć o dławieniu. Myślę, że bariery i CFQ nie kosztowały dużo w tym konkretnym „benchmarku”, ale mimo to cenne informacje.
Rzym.
@Roman Przykro mi, że nie wspomniałem wcześniej o modelu, naprawdę doceniam twoją pomoc, staram się uzyskać zarówno twoje, jak i ewwhite, aby osiągnąć 500-600 MB, myślę, że to najwyższa prędkość, jaką mogę osiągnąć przy tym limicie 3G
Ara
1
Żaden problem. Upewnij się, że podążasz za linkami w odpowiedziach ewwhite, ponieważ są szczególne rzeczy związane z P410 w połączeniu z dyskami SSD. Upewnij się również, że równomiernie rozprowadzasz cztery dyski między dwoma połączeniami z płyty montażowej do kontrolera.
Rzym.