Como obter um desempenho NFS decente para cargas de trabalho como o git?


8

Eu gerencio uma vagrantconfiguração para nossos desenvolvedores que executam o OSX para gerenciar os sistemas VirtualBox para desenvolvimento.

Para suportar inotifydentro da máquina linux, evitamos o método usual de compartilhar diretórios com o VirtualBox: em vez disso, a máquina Virtualbox expõe um compartilhamento NFS, montado no OSX.

Git (e ferramentas relacionadas, como sourcetree) são executados no OSX, no diretório compartilhado. O desempenho disso é extremamente ruim: geralmente leva até 5 segundos para ser executado git status. A clonagem de um pequeno repositório na unidade NFS montada pode levar alguns minutos (5 a 10 segundos em uma unidade local).

Obviamente, o desempenho do NFS será pior do que gravar diretamente em um SSD local, mas o NFS está rodando em uma interface de rede virtual privada com o Virtualbox.

Eu corri alguns benchmarks. O primeiro:

dd if=/dev/zero of=test bs=16 count=16384

Cada resultado é baseado em 100 amostras.

# local drive
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
0.990   1.000   1.020   1.021   1.030   1.130

# on the shared NFS drive
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
6.000   6.278   6.390   6.482   6.570   7.630

# inside the VirtualBox instance
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
0.3600  0.4800  0.5150  0.5552  0.5400  1.4500

A segunda referência:

ioping -c 500

local avg: 6 microseconds
local IOPS: 65.5 k

NFS Latency avg: 703 microseconds
NFS OPS: 1.4 k

Claramente, alguma latência é inevitável, mas isso é ruim o suficiente para tornar algumas tarefas simples bastante dolorosas.

O proprietário do volume está executando o Ubuntu 12.10 (Quantal), com configurações padrão. O sistema que monta o volume está executando o OSX Mavericks.

No momento, a principal conexão nfsd está sendo executada em UDP, o que parece ideal em uma conexão virtual. Não tenho certeza se statsde lockdestão executando sobre TCP e UDP.

Tentei montar com a asyncbandeira, e com rwsizereforço, e fez pouca diferença.

Que oportunidades existem para melhorar seriamente o desempenho do NFS nesse ambiente?


Tal como está, o problema não foi resolvido, mas o reduzimos substancialmente (melhorias de até 15x) usando uma interface de rede Virtualbox diferente: em Am79C973vez de virtio. A lição aqui é ter analisado mais de perto o que os sistemas estavam fazendo: até certo ponto, o gargalo parece ser o desempenho da rede virtual.
— Cera3 /

Eu tenho um problema semelhante. A execução git statusda máquina convidada leva cerca de 5 segundos. Na máquina host que é OSX, é silencioso rapidamente. Minha configuração é o diretório NFS mais recente, vagabundo, compartilhado. Como você mudou a interface, tentei fazê-lo, mas ainda não percebi isso. Além disso, isso se tornou mais perceptível após alguma atualização. Eu não tive esse problema no começo
— Ali

Respostas:



5

Este artigo contém algumas dicas úteis para ajustar o desempenho do NFS.

Particularmente o uso de nfsstat -rcpara verificar quantas tentativas de retransmissão estavam acontecendo. Se houver muitas tentativas, isso significa que o nfsddaemon ficou sem threads para atender às solicitações dos clientes e você precisará aumentar o número de threads disponíveis.

Além disso, assegure-se de que sua instância do VirtualBox não seja provisionada com pouca espessura; O armazenamento thin provisioned no VirtualBox é um impacto significativo no desempenho quando ocorrem gravações.


Obrigado pela sua resposta. A coisa dinâmica versus volume fixo é interessante - fiz algumas leituras que indicavam que a diferença de desempenho era um mito, mas se sua experiência for de ajuda, pode ser uma tentativa.
— Cera

Depende muito do armazenamento físico subjacente ... uma partição vazia com grande quantidade de espaço livre? O impacto no desempenho pode ser menos perceptível. Uma partição com muitos objetos já? O VBox terá que esperar enquanto o sistema operacional "procura" blocos de espaço vazio para atender à solicitação de crescimento.
— pepoluan

@pepoluan - foi isso com uma unidade magnética, ou SSD?
— Analytik

@analytik unidade magnética. Com o SSD, acho que a fragmentação nunca será um problema, e você pode ir com segurança com o armazenamento provisionado thin. Caramba, mesmo se houver um impacto no desempenho, considerando que os US $ / GB de SSD ainda são muito maiores do que os da unidade magnética, ficarei com pouca provisão.
— pepoluan

0

Outra resposta já menciona a verificação das estatísticas do NFS.

Pode valer a pena tentar configurações diferentes (virtuais) de nic para o VirtualBox vm - diferentes chipsets e modos virtuais (modo ponte em vez de nat).

Além disso, se o NFSv4 foi usado, pode valer a pena tentar o NFSv3. Essas versões são muito diferentes e isso pode fazer uma diferença significativa no desempenho.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.