Relação entre IOPS de disco e sar tps

13

Estou tentando estimar os requisitos de IOPS do meu aplicativo em execução no CentOS 6.2 de 32 bits. Comecei a fazer algumas medições em uma máquina com discos SATA e estou bastante confuso sobre a diferença entre IOPS e tps medidos por sar.

De acordo com a wikipedia, o disco SATA deve executar 75-100 IOPS. O utilitário ioping parece confirmar isso para o teste de acesso aleatório:

# ./ioping -R /dev/sda
--- /dev/sda (device 931.0 Gb) ioping statistics ---
279 requests completed in 3.0 s, 92 iops, 371.3 kb/s
min/avg/max/mdev = 2.7 ms / 10.8 ms / 130.8 ms / 7.9 ms

Mas os valores de tps produzidos pelo sar são muito mais altos (/ dev / sda):

# iostat 1
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
       0.17    0.00    2.02   14.86    0.00   82.96

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             559.00         0.00    142600.00          0     142600
dm-0          18433.00         0.00    147464.00          0     147464
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0

Realmente não se importa se essa carga é seqüencial (dd com vários tamanhos de bloco) ou acesso aleatório (ioping), o valor ainda é o mesmo. Eu pensei que tps é realmente IOPS e eu esperaria que ele caísse com pedaços maiores transferidos.

Então, o que exatamente significa o valor tps? E como isso se relaciona com IOPS?

pistola
fonte
2
Acredito que você esteja vendo IOPS mais alto no valor do TPS por causa do cache do disco.
ceejayoz
1
Ok, eu tentei um arquivo de 10GB através do dd com bloco de 256kB para realmente preencher o cache e depois de ~ 90 segundos o tps cai para ~ 200, então talvez você esteja certo. Mas ainda 80 e 200 são uma grande diferença ... É possível que as IOPS de leitura e gravação sejam diferentes? E existe alguma maneira de descobrir as IOPS necessárias a partir desse valor?
amigos estão dizendo sobre pystole
1
Você pode descrever por que está buscando IOPS? ler e escrever são um par de sapatos bem diferente que é jogado no mesmo pote aqui.
Nils
O motivo é que preciso descrever os requisitos mínimos de HW. Eu tenho um servidor que recebe dados pela rede (podemos assumir taxa de bits constante aqui) e grava os dados recebidos no disco. Os dados são gravados em arquivos sequencialmente, mas pode haver centenas (por exemplo, 800) deles em paralelo. Eu descobri que quando o número de clientes chega a algum ponto, eu começo a obter grandes iowaits. A taxa de transferência real do disco que posso atingir é de cerca de 25 MB / s, o que é bastante baixo, menos clientes com taxa de bits mais alta podem fazer 35 MB / s, sequencial puro cerca de 130 MB / s. Então eu acho que IOPS é o que importa aqui ...
pystole

Respostas:

6

As transações são comandos IO únicos (bloco de busca / bloco de gravação) que são gravados no disco RAW (no seu exemplo dm-0). O linux-kernel tenta ordenar esses comandos em uma sequência melhor ou tenta compactá-los em comandos mais eficientes (como: obter dois blocos ao mesmo tempo em vez de obter um bloco e obter outro bloco logo após este). Essas são as transações enviadas para o controlador de disco (tps para sda).

Os bons controladores têm uma lógica própria que reduz ainda mais o número real de transações.

Uma transação pode ser o comando SCSI "escreva 2 GB no crontoller 1 alvo 2 lun 3 a partir do setor 22). Como você pode ver, isso não pode ser correlacionado diretamente com os números de taxa de transferência.

O que você procura é a taxa de gravação sustentada. Você tem alguns fatores limitantes aqui:

  • conexão do cliente: se a rede for Gigabit, você nunca terá mais de 100 MB / s de entrada
  • controlador de disco: se for um controlador de 3 Gb, você nunca terá mais de 300 MB / s de taxa de transferência
  • disk: pesquise o valor dos fabricantes para obter desempenho sustentado de gravação
  • Sistema de arquivos: há um pouco de sobrecarga, já que o sistema operacional precisa processar dados - teste-o em um disco RAM ...

Meu palpite para o seu sistema é: obter um bom controlador de invasão de hardware capaz de executar o ataque 10 ou 5 e obter pelo menos 6 discos rápidos (15k).

Para uso profissional, use SAS em vez de SATA.

Nils
fonte
Ok, você está certo O IOPS não faz sentido para gravações, pois há muitos caches, reordenações e mesclagens envolvidas. Fechando ... Obrigado.
amigos estão dizendo sobre pystole
5

Lembre-se também de que o TPSvalor representa leituras e gravações. Você pode usar a -xopção para exibição estendida, onde leituras e gravações são separadas (r / s = IOPS de leitura, w / s = IOPS de gravação):

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
vda               0.07    24.65    0.30   18.95    30.65   330.22    18.74     0.07    3.61   0.98   1.89
HTF
fonte
Sim você está certo. Mas no meu caso, há quase 100% de gravações, as leituras são quase nenhuma.
precisa