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
. :(Respostas:
Enquanto a outra resposta aqui menciona alguns pontos, seus problemas específicos são causados por limitações da plataforma e configuração do sistema operacional:
Você tem uma taxa de transferência limitada pelo uso de SSDs SATA de consumidor em um controlador RAID HP Smart Array P410 . Os discos SATA são executados a 3.0Gbps (3G) nesses controladores, em vez de 6.0Gbps (6G). Portanto, essa é uma barreira que afeta a velocidade de leitura dos seus SSDs Intel; 300 MB / s ou menos por unidade.
O controlador Smart Array P410 possui requisitos e práticas recomendadas específicas quando usado com SSDs. Em resumo, o controlador é capaz de 50.000 IOPS, desativa o acelerador do array para o seu volume SSD e o desempenho atinge o máximo em ~ 6 unidades.
O desempenho do disco nem sempre é sobre velocidade sequencial de leitura / gravação. Tente fazer benchmarking com uma ferramenta adequada, como iozone ou bonnie ++ . Você ainda obtém os benefícios aleatórios de E / S de suas várias unidades.
No nível do sistema operacional, instale o pacote tuned-utils e configure o perfil
enterprise-performance
para remover barreiras de gravação de seus sistemas de arquivos e defina o elevador de E / S correto para sua configuração. Isso também é abordado em outras questões aqui .Parece que você está usando LVM. Isso pode ter um impacto também ...
Aqui está um relatório da iozone para um G7 ProLiant executando com quatro SSDs de 6G SATA de consumidor (com redução de velocidade para velocidades 3G) no mesmo controlador RAID HP Smart Array P410.
Você deve ver ~ 470MB / se gravações e 650MB / s + leituras.
fonte
Oh querida, por onde começar?
Há muita coisa envolvida e você precisa de um bom entendimento de tudo. Jogar vários discos contra um controlador RAID não produzirá os resultados que você está procurando.
Isso não pode ser facilmente respondido. Mas pelo menos, aqui está uma lista de coisas que você deve examinar:
Como a taxa de transferência de todo o RAID (desconsiderando o FS) é significativamente menor do que um único disco, é provável que você tenha configurado sua estratégia de gravação incorretamente; o controlador provavelmente está aguardando todos os discos confirmarem a gravação (e, a menos que você tenha a memória RAM na bateria do controlador, isso pode ser do seu interesse).
fonte