Nesta página, descrevemos como ajustar a leitura antecipada do NFS em clientes Linux que montam NetApp Volumes. A leitura antecipada permite que o kernel pré-busque blocos de arquivos antes que um aplicativo os solicite, o que melhora a capacidade de processamento de leitura sequencial. A leitura antecipada não substitui as opções de montagem ou o ajuste de simultaneidade. Configure essas opções primeiro. Para mais informações, consulte Otimizar clientes NFS do Linux.
Antes de começar
Conclua os seguintes pré-requisitos antes de ajustar a leitura antecipada do NFS:
Se você planeja ajustar a tabela de slots ou os slots de sessão, primeiro conclua a simultaneidade do NFS do Linux.
Monte o volume com as opções de montagem do NFS do Linux adequadas, incluindo
rsize. Para mais informações, consulte Opções de montagem do NFS do Linux.Ajuste a leitura antecipada depois de montar o volume.
Visão geral da leitura antecipada
Quando um aplicativo lê um arquivo sequencialmente, o cliente NFS do Linux pode solicitar dados adicionais além da leitura atual. Isso oculta a latência de rede e aumenta a capacidade de processamento para cargas de trabalho sequenciais, como reprodução de registros, streaming de mídia, cópia em massa e algumas verificações de análise.
A leitura antecipada é configurada por ponto de montagem. Ele é menos eficaz para cargas de trabalho de leitura aleatória do que para cargas de trabalho de leitura sequencial.
Padrões e rsize
Muitas distribuições do Linux definem o pré-leitura como aproximadamente 15 vezes rsize. Algumas distribuições usam uma pré-leitura fixa de 128 KiB, independente de rsize, o que pode reduzir o desempenho de leitura sequencial após um upgrade. Verifique o valor atual no sistema de arquivos montado antes de mudar.
Ver leitura antecipada de uma montagem
Cada ponto de montagem do NFS tem um dispositivo de transferência por blocos de suporte correspondente em
/sys/class/bdi/. Para encontrar o identificador do dispositivo de transferência por blocos de suporte (BDI) e conferir o valor read_ahead_kb atual, siga estas etapas:
Localize a montagem em
/proc/self/mountinfoe anote o identificador de BDI no terceiro campo.Leia o valor em kilobytes:
cat /sys/class/bdi/BDEV/read_ahead_kb
Escolher um valor de leitura antecipada
Use as diretrizes a seguir para selecionar um valor de leitura antecipada adequado para sua carga de trabalho:
Se você não precisar de desempenho máximo, mantenha o padrão da distribuição e não ajuste a leitura antecipada.
Comece com 15 vezes
rsize(em KiB) se sua distribuição não definir mais esse valor automaticamente.Para
rsize=1048576(1 MiB), 15 vezesrsizeé aproximadamente 15.360 KiB (15 MiB).Aumente ou diminua o valor em etapas e meça o desempenho usando seu aplicativo e
nfsiostat. Teste valores maiores que 15.360 KiB antes do uso em produção.
A leitura antecipada interage com o cache de página. As cargas de trabalho que ignoram o cache (O_DIRECT) não se beneficiam da leitura antecipada como as leituras sequenciais em cache.
Persistir leitura antecipada entre reinicializações
As mudanças dinâmicas são aplicadas até que você desmonte ou reinicie. Para manter essas mudanças em montagens NFS, crie uma regra udev.
Crie
/etc/udev/rules.d/99-nfs-readahead.rulese ajuste o valor deread_ahead_kbconforme necessário:SUBSYSTEM=="bdi", ACTION=="add", PROGRAM="/usr/bin/awk -v bdi=$kernel 'BEGIN{ret=1} {if ($4 == bdi) {ret=0}} END{exit ret}' /proc/fs/nfsfs/volumes", ATTR{read_ahead_kb}="15360"Use um caminho absoluto para
awkno seu sistema no atributoPROGRAM=.Atualize
udev:sudo udevadm control --reload
Remonte os volumes NFS ou reinicialize para acionar as regras de novos dispositivos BDI.
Primeiro, teste as regras udev em um host que não seja de produção. Regras incorretas podem afetar dispositivos de bloco não NFS se a expressão de correspondência estiver errada.
Orientações para carga de trabalho
Considere as seguintes orientações com base no tipo de carga de trabalho ao ajustar a leitura antecipada:
Leituras aleatórias (OLTP, E/S aleatória pequena): mantenha o pré-carregamento padrão.
Leituras sequenciais (mídia, cópia em massa e computação de alto desempenho): aumente para 15 vezes
rsizee meça.Misto: ajuste somente se o perfil mostrar um gargalo de leitura sequencial.
Baixo
rsize(64 KiB) com uma leitura antecipada padrão de 128 KiB: considere aumentar a leitura antecipada para 960 KiB ou mais.
Combine o ajuste de leitura antecipada com as configurações apropriadas de rsize, nconnect e simultaneidade.