O que significa o nomerge no sistema Linux?

2

Podemos ver alguns parâmetros emitindo "iostat -x -d", o rrqm / s e wrqm / s representam a mesclagem para solicitação de E / S por segundo. E há um parâmetro do kernel controlando a mesclagem de E / S:

/ sys / class / block / nome do dispositivo / fila / nomerges

De acordo com o documento do Kernel:

Isso permite que o usuário desative a lógica de pesquisa envolvida com o I / O mesclando solicitações na camada de bloco. Por padrão (0) todas as mesclagens são ativado. Quando definido como 1, somente as mesclagens simples de uma única tentativa serão tentadas. Quando definido para 2 sem algoritmos de mesclagem será tentado (incluindo um hit ou mais pesquisas complexas de árvore / hash).

O significado de 0 e 2 é fácil de entender, mas quando se trata de 1 com "one-hit", eu pesquisei ao redor, mas nenhuma definição semântica específica em relação a ele. Então, por favor, ajude a explicar o que exatamente é o significado de 1 para nomerges. Obrigado.

    
por Jepsenwan 29.07.2017 / 09:11

1 resposta

2

0 faz tanto uma verificação simples para solicitações adjacentes quanto uma pesquisa em uma estrutura de dados, 1 faz apenas a verificação simples e 2 não faz fusão. Dê uma olhada na implementação, block / elevator.c em elv_merge ().

Você precisa testar sua pesada carga de trabalho de E / S aleatória para saber se ela se beneficiará da desativação da mesclagem. A mesclagem da opção 2 mostrou taxa de transferência por tempo de CPU melhorou uma fração de um percentual com 2 versus 1: bloco: Adicionado em mais estrita nenhuma mesclagem semântica para E / S de bloco

Até mesmo a opção 0 é bastante barata e muitas solicitações são adjacentes. Você provavelmente não precisa mudar isso.

    
por 29.07.2017 / 15:49