J'ai des performances très incohérentes avec NFS entre deux machines sifflantes, et je n'arrive pas à le résoudre.
Installer:
Machine 1 'vidéo1': Dual 5506 avec 12 Go de RAM, XFS sur 8x3TB RAID6 exporté en tant que 'vidéo1' depuis '/ mnt / stockage'
Machine 2 'stockage1': Phenom X2 @ 3.2Ghtz avec 8 Go de RAM, ZFS sur 5x2 To exporté en tant que 'stockage1' depuis / mnt / storage1-stockage
Performances d'écriture 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
Performances de lecture locale:
Les deux sont connectés au même commutateur HP Gigabit, et iperf offre une solidité à toute épreuve de 940 Mbps.
Mon problème est que lorsque j'écris sur l'export video1 depuis storage1, les performances sont partout. Il semble que pour les premiers (5-7) concerts de transfert de fichiers (j'espère déplacer les fichiers AVCHD ou MJPEG de 30 à 120 Go le plus rapidement possible), les performances vont de 900 Mbps à 150-180 Mbps, autant de fois que lent comme 30mbps. Si je redémarre le serveur du noyau NFS, les performances reprennent pour quelques concerts supplémentaires.
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
Quand les choses vont vite, nfsiostat sur le client donne des RTT moyens de quelques ms, mais il tire jusqu'à plus de 1,5 secondes RTT dès que les performances chutent. De plus, la profondeur de la file d'attente du processeur passe à plus de 8 pendant l'écriture.
Maintenant, lors de la lecture à partir de la même exportation, j'obtiens de beaux 890Mbps donner ou prendre quelques mbps pour toute la lecture.
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 même chose se produit dans l'autre sens avec storage1 comme serveur NFS. La file d'attente du processeur augmente, les vitesses chutent et je m'arrache les cheveux.
J'ai essayé d'augmenter le nombre de démons NFS à 64, et il crache toujours après quelques concerts.
la source
Réponses:
Vous n'incluez pas vos options de montage ou d'exportation, donc il y a un certain nombre de choses avec NFS qui pourraient avoir un impact sur les performances. Je recommanderais d'essayer les options suivantes pour des performances et une fiabilité NFS maximales (en fonction de mes expériences):
Options de montage:
tcp,hard,intr,nfsvers=3,rsize=32768,wsize=32768
Options d'exportation:
async
la source
nfsvers=3
n'était pas nécessaire.nfsvers=3
peu importe. Les montages NFS Linux utilisaient par défaut la version 2 de NFS, sauf si vous avez spécifié la version 3. Dans ces cas, il était très utile de définir explicitement la version. Dans les versions modernes, le montage négociera, en commençant par la v4, puis en essayant la v3, puis en revenant à la v2.