problemas de desempenho do NFS no Debian

8

Estou tendo um desempenho muito inconsistente com o NFS entre duas máquinas de chiado, e não consigo encontrá-lo.

Configuração:

Máquina 1 'video1': Dual 5506 com ram de 12 GB, XFS com 8x3TB RAID6 exportado como 'video1' de '/ mnt / storage'

Máquina 2 'storage1': Phenom X2 @ 3.2Ghtz com ram 8GB, ZFS em 5x2TB exportado como 'storage1' de / mnt / storage1-storage

Desempenho de gravação local:

mackek2@video1:/mnt/storage/testing$ dd if=/dev/zero of=localwrite10GB bs=5000k count=2000
2000+0 records in
2000+0 records out
10240000000 bytes (10 GB) copied, 16.7657 s, 611 MB/s

Desempenho de leitura local:

Ambos estão conectados ao mesmo switch Gigabit da HP, e o iperf oferece 940mbps sólidos para os dois lados.

Meu problema é que, quando escrevo para o video1 export do storage1, o desempenho está em todo lugar. Parece que para os primeiros (5-7) gigs de transferência de arquivos (eu estou esperando para mover 30-120GB AVCHD ou MJPEG arquivos o mais rápido possível), o desempenho vai de 900mbps, para 150-180mbps, então vezes lento como 30mbps. Se eu reiniciar o servidor de kernel NFS, o desempenho retornará para mais alguns shows.

mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=remoteWrite10GB count=2000 bs=5000K
2000+0 records in
2000+0 records out
10240000000 bytes (10 GB) copied, 223.794 s, 45.8 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=remoteWrite10GBTest2 count=2000 bs=5000K
2000+0 records in
2000+0 records out
10240000000 bytes (10 GB) copied, 198.462 s, 51.6 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=bigfile776 count=7000 bs=2000K
7000+0 records in
7000+0 records out
14336000000 bytes (14 GB) copied, 683.78 s, 21.0 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=remoteWrite15GB count=3000 bs=5000K
3000+0 records in
3000+0 records out
15360000000 bytes (15 GB) copied, 521.834 s, 29.4 MB/s

Quando as coisas estão indo rápido, o nfsiostat no cliente fornece RTTs médios de alguns ms, mas ele dispara para mais de 1,5 segundo RTT assim que o desempenho cai. Além disso, a profundidade da fila de CPU aumenta para mais de 8 enquanto a gravação está acontecendo.

Agora, ao ler da mesma exportação, eu obtenho lindos 890Mbps com alguns ou mais mbps para toda a leitura.

mackek2@storage1:/mnt/video1/testing$ dd if=remoteWrite10GBTest2 of=/dev/null
20000000+0 records in
20000000+0 records out
10240000000 bytes (10 GB) copied, 89.82 s, 114 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=remoteWrite15GB of=/dev/null
30000000+0 records in
30000000+0 records out
15360000000 bytes (15 GB) copied, 138.94 s, 111 MB/s

A mesma coisa acontece ao contrário com o storage1 como o servidor NFS. A fila da CPU salta, a velocidade cai para a porcaria e eu puxo meu cabelo para fora.

Eu tentei aumentar o número de daemons NFS para até 64, e ele ainda aparece depois de alguns shows.

    
por Kyle M 23.07.2012 / 19:41

1 resposta

3

Você não inclui suas opções de montagem ou exportação; portanto, há várias coisas com o NFS que podem afetar o desempenho. Eu recomendaria tentar as seguintes opções para o máximo desempenho e confiabilidade do NFS (com base em minhas experiências):

  • Opções de montagem: tcp,hard,intr,nfsvers=3,rsize=32768,wsize=32768

  • Opções de exportação: async

por 28.08.2012 / 19:01