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.