Por que escrever parece ter prioridade sobre Ler no sistema de arquivos? (ou vice-versa)

1

Estou verificando se o escalonador de E / S do sistema de arquivos linux prioriza a operação de gravação sobre a operação de leitura. A versão linux é 3.10.0-327.el7.x86_64

Eu realizei os seguintes experimentos nos quais as operações de gravação e leitura devem ocorrer simultaneamente.

disk_dir=/mnt/ssd
nohup fio --name=${disk_dir}/seqread --ioengine=sync --iodepth=1 --rw=read --bs=4096k --direct=0 --size=10240M --numjobs=1 --runtime=600 --group_reporting &
nohup fio --name=${disk_dir}/seqwrite --ioengine=sync --iodepth=1 --rw=write --bs=4096k --direct=0 --size=10240M --numjobs=1 --runtime=600 --group_reporting &

Medi o uso de largura de banda de E / S de disco por dstat e descobri que as operações de leitura e gravação não ocorrem simultaneamente.

         Disk
     Read   Write
... |3072k  241M|  13k 4211B|   0     0 |3737  2062
... |3072k  258M|  13k 4308B|   0     0 |3532  2676
... |3584k  260M|  16k 4793B|   0     0 |3404  2057
... |3072k  261M|  13k 4211B|   0     0 |3438  2565
...
... (After Write operations all finished)
... 
... | 449M   40k|  13k 4211B|   0     0 |4752  5130
... | 449M   42k|  13k 4308B|   0     0 |4973  5861
... | 428M    0 |  16k 4793B|   0     0 |4630  4990
... | 382M    0 |  13k 4211B|   0     0 |4306  5206

A operação de Leitura ou Gravação aguarda a conclusão de outra!

Os resultados com os diferentes agendadores no Linux foram os mesmos.

noop, deadline: They prioritize Write.
cfq: It prioritizes Read.

Estou faltando alguma coisa? O experimento está errado? Alguém pode me dar uma idéia sobre isso?

Obrigado

    
por syko 12.08.2016 / 21:52

1 resposta

1

Os agendadores de E / S são muito mais complexos que você parece supor. Por exemplo, escolher cfq é apenas o topo do iceberg - existem vários parâmetros de ajuste, veja link

Observe também que, como você não está usando o dispositivo de bloco diretamente, mas sobre algum sistema de arquivos, a opção de fs (e seu tuning params) será um fator também.

Portanto, cuidado, seu ajuste pode piorar muito no final.

Mas, para este exemplo específico, você poderia tentar deadline com write_starved para ajustá-lo para ser menos orientado à gravação.

link

    
por 14.08.2016 / 00:39