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:
- Dlaczego jest taki wolny?
- 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/sda
polecenie 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-utils
i wybraniu enterprise-storage
profilu 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 -s144g
polecenia:
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/sda
rozkazem 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 -h
i 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
iozone -t1 -i0 -i1 -i2 -r1m -s144g
. :(Odpowiedzi:
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-performance
aby 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.
źródło
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ć:
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).
źródło