Explicação:
Nós temos um servidor:
- Modelo: HP ProLiant DL160 G6
- SSD de 4 x 240 GB (RAID-10)
- 72GB DDR3 RAM
- 2 x L5639
- Controladora RAID HP P410 (256MB, V6.40, versão Rom: 8.40.41.00)
As unidades SSD são 4 novas Intel 530 de 2,5 "com velocidade de leitura de 540MB / s e velocidade de gravação de 490MB / s
- CentOS 6
- Os sistemas de arquivos são ext4
mas este é o resultado do teste para velocidade de leitura no raid 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
e isso é para velocidade de gravação:
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
esperávamos velocidade de leitura de 1 GB com o RAID 10, mas 270 MB nem sequer é a velocidade de um único disco!
Questões:
- Por que é tão lento?
- É por causa do controlador RAID?
Atualização 1 - Mesma velocidade de leitura / gravação:
Depois de alterar algumas configurações, como mencionado nas respostas, tenho o resultado abaixo:
(Alguém sabe por que mostra 4 GB em vez de 400 MB como velocidade de leitura ?!)
EDIT: parece que o comando estava errado e deveríamos ter usado -s144g para essa quantidade de memória ram, é por isso que mostra 4 GB (como sugerido nos comentários de 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
mas o hdparm -t /dev/sda
comando antigo ainda mostra:
Tempo limite de leituras em disco buffer: 810 MB em 3,00 segundos = 269,85 MB / s
Atualização 2 (pacote de utilitários ajustados) - A velocidade de leitura agora é de 600 MB / s:
Finalmente, com alguma esperança, desativamos o cache do controlador RAID e fizemos outras coisas anteriormente sem sorte, mas, como recarregamos o servidor e instalamos o sistema operacional novamente, esquecemos de instalar "tuned-utils", conforme sugerido na resposta do ewwhite (Obrigado ewwhite para este pacote incrível que você sugeriu)
Depois de instalar tuned-utils
e escolher o enterprise-storage
perfil, a velocidade de leitura agora é de ~ 600MB / s +, mas a velocidade de gravação ainda é muito lenta (~ 160MB) (:
Aqui está o resultado do iozone -t1 -i0 -i1 -i2 -r1m -s144g
comando:
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
Mesmo com o hdparm -t /dev/sda
comando, temos:
Tempo limite de leituras no disco buffer: 1802 MB em 3,00 segundos = 600,37 MB / s
Alguma sugestão para a velocidade de gravação muito lenta?
Atualização 3 - Algumas informações solicitadas nos comentários:
A velocidade de gravação ainda é muito baixa (~ 150 MB / s, que nem sequer é 1/3 de um único disco)
Saída para df -h
e 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
. :(