Le prestazioni di NFS si guastano su Debian


9

Sto avendo prestazioni molto incoerenti con NFS tra due macchine sibilanti e non riesco a inchiodarle.

Impostare:

Macchina 1 "video1": doppio 5506 w / 12 GB di RAM, XFS su RAID6 8x3 TB esportato come "video1" da "/ mnt / storage"

Macchina 2 'storage1': Phenom X2 @ 3.2Ghtz con ram da 8 GB, ZFS su 5x2 TB esportato come 'storage1' da / mnt / storage1-storage

Performance di scrittura locale:

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

Performance di lettura locale:

Entrambi sono collegati allo stesso switch gigabit HP e iperf offre una solida roccia da 940 Mbps in entrambi i modi.

Il mio problema è che quando scrivo al video1 esportazione dallo storage1, le prestazioni sono ovunque. Sembra per i primi (5-7) concerti di trasferimento file (spero di spostare i file AVCHD o MJPEG da 30-120 GB il più rapidamente possibile), le prestazioni vanno da 900 Mbps, fino a 150-180 Mbps, quindi lento come 30 Mbps. Se riavvio il server del kernel NFS, le prestazioni aumentano per qualche altro concerto.

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 le cose vanno veloci, nfsiostat sul client fornisce RTT medi di pochi ms, ma scatta fino a oltre 1,5 secondi RTT non appena le prestazioni diminuiscono. Inoltre, la profondità della coda della CPU salta fino a oltre 8 durante la scrittura.

Ora, leggendo dalla stessa esportazione, ottengo bellissimi 890 Mbps che do o prendo qualche mbps per l'intera lettura.

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

La stessa cosa accade al contrario con storage1 come server NFS. La coda della CPU salta in su, la velocità scende a schifo e mi tiro fuori i capelli.

Ho provato ad aumentare il numero di demoni NFS fino a 64, e sputa ancora dopo alcuni concerti.


... l'opzione asincrona sull'esportazione l'ha risolta. Ora per vedere se riesco a ottenere qualche mbps in più con i frame jumbo.
Kyle M,

1
Pubblica questo come risposta e accettalo quando puoi in modo che gli altri sappiano che il problema è stato risolto.
mgorven

Risposte:


4

Non includi le opzioni di montaggio o esportazione, quindi con NFS ci sono diverse cose che potrebbero influire sulle prestazioni. Consiglio di provare le seguenti opzioni per ottenere le massime prestazioni e affidabilità NFS (in base alle mie esperienze):

  • Opzioni di montaggio: tcp,hard,intr,nfsvers=3,rsize=32768,wsize=32768

  • Opzioni di esportazione: async


Solo una nota, anche le opzioni di montaggio sopra sono anche quelle consigliate da Oracle per eseguire Oracle su NFS.
Christopher Cashell,

sono stato in grado di migliorare significativamente anche le prestazioni con il suggerimento sopra, tuttavia nfsvers=3non era necessario.
anarcat,

@anarcat - Per le versioni moderne, hai ragione, nfsvers=3non importa così tanto. I montaggi Linux NFS erano utilizzati per impostazione predefinita su NFS versione 2, a meno che non sia stata specificata la versione 3. In quei casi, è stato molto utile impostare esplicitamente la versione. Nelle versioni moderne, mount verrà negoziato, iniziando con la v4, quindi provando la v3, per poi tornare alla v2.
Christopher Cashell,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.