Qual é o tamanho de uma operação de IO (IO) no AWS EBS?

5

Minha pesquisa sugere que tanto o tamanho do bloco padrão quanto o máximo (limitações do kernel) para sistemas de arquivos modernos (ext4, xfs) são 4KB. No entanto, o AWS permite operações de E / S tão grandes quanto 256 KB e diz

For 32 KB or smaller I/O operations, you should see the amount of IOPS that you have provisioned, provided that you are driving enough I/O to keep the drives busy. For smaller I/O operations, you may even see an IOPS value that is higher than what you have provisioned (when measured on the client side), and this is because the client may be coalescing multiple smaller I/O operations into a smaller number of large chunks.

Onde o Linux expõe e / ou permite a configuração de "tamanho de bloco de dispositivo?" Ao fazer uma varredura completa da tabela no postgres (8KB blocksize), onde você pode ver e / ou configurar o tamanho de "IO Operations" os problemas do sistema operacional?

    
por user4258 16.11.2014 / 22:56

1 resposta

3

O tamanho de uma operação de E / S depende de muitas coisas. Calcular a média da sua inscrição não é necessariamente uma má ideia.

A definição da Amazon sobre eles implica que o hardware deles suporta blocos de 256 KB. Uma única operação de E / S é a leitura ou gravação de um bloco. Um acesso "desalinhado" ao hardware em que uma operação abrange dois blocos resultará em duas operações de E / S, mesmo se os tamanhos dos blocos de software e hardware forem correspondentes. É por isso que é tão útil para o desempenho de E / S usar um sistema de arquivos do tamanho de um bloco de hardware, embora isso possa reduzir a eficiência do armazenamento, já que um bloco de sistema de arquivos é o quantum de alocação.

Os tamanhos dos blocos nos sistemas de arquivos são amplamente ditados pelo tamanho da página da memória, já que as leituras vão para as páginas da memória. Normalmente, as páginas de memória são 4kB no x86 Linux; embora o kernel possa mapear páginas maiores, não há um tamanho intermediário entre uma página normal de 4kB e uma enorme página de 4MB. Então, você não pode realmente ajustar isso em sistemas e hardware modernos.

No entanto, o sistema de arquivos pode tentar tornar todas as leituras e gravações em vários blocos sequenciais, evitando a fragmentação. O EXT4 faz isso alocando arquivos esparsamente no disco em vez de alocar o próximo bloco livre quando um bloco é solicitado; outros sistemas de arquivos também possuem estratégias para isso. O kernel (sistema de arquivos e drivers de disco) pode agregar uma única operação de leitura abrangendo vários blocos em uma única operação de leitura quando esses blocos são fisicamente consecutivos e não cruzam um limite de bloco físico.

O driver de disco descobre o tamanho do disco automaticamente; você não pode ajustá-lo. Você pode lê-lo com blockdev --getpbsz /dev/xvda ou o que você tem.

    
por 17.11.2014 / 00:34