Relação entre IOPS de disco e sar tps

11

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 pelo sar.

De acordo com o 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

Na verdade, não importa se essa carga é sequencial (dd com vários tamanhos de bloco) ou acesso aleatório (ioping), o valor ainda é o mesmo. Eu achava que tps na verdade é IOPS e eu esperaria que ele diminuísse com trechos maiores transferidos.

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

    
por pystole 01.12.2013 / 20:56

2 respostas

5

Transações são comandos IO simples (bloco de busca / 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 de uma vez ao invés de obter um bloco e obter outro bloco logo após este). Estas são as transações que saem 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 para crontoller 1 target 2 lun 3 a partir do setor 22). Como você pode ver, isso não pode ser colocado em correlação direta com os números de throughput.

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

  • conexão com o cliente: se a rede for Gigabit, você nunca terá mais de 100 MB / s de entrada
  • disk-controller: Se este for um controlador de 3 Gb, você nunca terá mais de 300 MB / s de taxa de transferência
  • disco: pesquise o valor dos fabricantes para um desempenho de gravação sustentado
  • Sistema de arquivos: Há uma pequena sobrecarga, pois o SO precisa processar dados - teste isso em um disco RAM ...

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

Para uso profissional, use o SAS em vez de SATA.

    
por 02.12.2013 / 13:38
3

Lembre-se também de que TPS value representa leituras e gravações, você pode usar a opção -x para exibição estendida em que leituras e gravações são separadas (r / s = ler IOPS, w / s = gravar IOPS):

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
    
por 02.12.2013 / 08:30