Storage via NFS

Hallo Peter,

Du musst herausfinden wo genau dein Engpass liegt, denn selbst bei 50GBit Infiniband auf eine Disk wirst du nur ca. 140 FSYNC/s bekommen. Das hat nicht unbedingt miteinander zu tun. Was hast du denn für ein Storage hinten dran? Kannst du via iSCSI exportieren und dort auch probieren?
 
Hallo lnxBil,

Das Storage ist eine NetApp. Bin aber nicht der Admin von dem Teil. Ist ein ziemlich dickes Teil.
Kurze Information zu unseren Systemen.
Aktuell nutzen wir ein Cluster mit HP DL360 Servern, jedoch habe ich hier nur eine 1MBit Storageanbindung.
Mehr als 6 VM pro Node führen zu IO Problemen.
Jetzt migrieren wir auf BL460C Gen 9 Blades.
Ich habe mir erhofft minumum 20 VM's auf einem Blade unterzukriegen.
Mir fällt halt der schlechte Fsync/s auf. pveperf auf dem lokalen Storage der Blades ergibt:

CPU BOGOMIPS: 239742.72
REGEX/SECOND: 2483941
HD SIZE: 27.37 GB (/dev/dm-0)
BUFFERED READS: 281.83 MB/sec
AVERAGE SEEK TIME: 4.47 ms
FSYNCS/SECOND: 7307.03

Ich habe schon allerlei Optimierungen für NFS aus diesem Forum probiert, aber ohne Erfolg.
Mit iSCSI muss ich mal anschauen.


Peter
 
Hallo Peter,

du meinst hoffentlich 1 GBit Storageanbindung, aber ja 6 VMs pro Knoten is schon sehr, sehr wenig. Wir haben aktuell ca. 25-30 pro Knoten (DL380G6) und die Auslastung ist sehr gering (also noch viel Platz nach oben). Wir verwenden aber kein NFS, sondern FC (also block storage). Daher die Frage nach iSCSI, denn dazu könnte ich Performancewerte liefern. Der FSYNC-Wert ist aber nur eine Art Richtwert und sagt nicht wirklich etwas über die tatsächliche Geschwindigkeit aus. Besser bist du mit einem fio-Test dran, der dir feinere Aussagen liefert.

Ich habe z.B. auf einem etwas älteren System (2009) mit 6x Enterprise SSD "nur"

Code:
BUFFERED READS:    268.38 MB/sec
AVERAGE SEEK TIME: 0.16 ms
FSYNCS/SECOND:     3437.80

Wobei fio über 60.000 IOPS misst, was sich auch subjektiv bestätigen lässt. Es ist alles sehr, sehr schnell. So wie man es von einem RAID10 von SSDs erwarten würde.
 
Sorry, natürlich GBit.
Die Blades haben leider kein FC und das Budget ist erschöpft.
Trotzdem klingen 30 pro DL380G6 wirklich gut.

fio sieht auf meinem Share so aus:

root@sv-c-vdz2:/mnt/pve/nfs_nosnap# fio --rw=write --name=test --size=10M --direct=1
test: (g=0): rw=write, bs=4K-4K/4K-4K/4K-4K, ioengine=sync, iodepth=1
fio-2.1.11
Starting 1 process
test: Laying out IO file(s) (1 file(s) / 10MB)
Jobs: 1 (f=1)
test: (groupid=0, jobs=1): err= 0: pid=4037: Mon Jul 11 12:38:30 2016
write: io=10240KB, bw=9932.2KB/s, iops=2483, runt= 1031msec
clat (usec): min=151, max=6759, avg=400.98, stdev=277.88
lat (usec): min=151, max=6759, avg=401.16, stdev=277.89
clat percentiles (usec):
| 1.00th=[ 175], 5.00th=[ 187], 10.00th=[ 195], 20.00th=[ 211],
| 30.00th=[ 229], 40.00th=[ 253], 50.00th=[ 318], 60.00th=[ 398],
| 70.00th=[ 482], 80.00th=[ 580], 90.00th=[ 708], 95.00th=[ 804],
| 99.00th=[ 1096], 99.50th=[ 1208], 99.90th=[ 4192], 99.95th=[ 4448],
| 99.99th=[ 6752]
bw (KB /s): min= 9640, max=10240, per=100.00%, avg=9940.00, stdev=424.26
lat (usec) : 250=39.41%, 500=32.97%, 750=19.96%, 1000=5.82%
lat (msec) : 2=1.68%, 4=0.04%, 10=0.12%
cpu : usr=0.00%, sys=4.66%, ctx=5121, majf=0, minf=7
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=2560/d=0, short=r=0/w=0/d=0
latency : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
WRITE: io=10240KB, aggrb=9932KB/s, minb=9932KB/s, maxb=9932KB/s, mint=1031msec, maxt=1031msec

Peter
 
Auf einem anderen Blade mit MTU 1500 sieht es komischer Weise besser aus:

root@sv-c-vdz1:/mnt/pve/nfs_nosnap# fio --rw=write --name=test1 --size=10M --direct=1
test1: (g=0): rw=write, bs=4K-4K/4K-4K/4K-4K, ioengine=sync, iodepth=1
fio-2.1.11
Starting 1 process
test1: Laying out IO file(s) (1 file(s) / 10MB)

test1: (groupid=0, jobs=1): err= 0: pid=40532: Mon Jul 11 12:42:11 2016
write: io=10240KB, bw=16437KB/s, iops=4109, runt= 623msec
clat (usec): min=147, max=2472, avg=241.95, stdev=121.69
lat (usec): min=147, max=2473, avg=242.08, stdev=121.70
clat percentiles (usec):
| 1.00th=[ 159], 5.00th=[ 165], 10.00th=[ 171], 20.00th=[ 177],
| 30.00th=[ 181], 40.00th=[ 189], 50.00th=[ 199], 60.00th=[ 215],
| 70.00th=[ 237], 80.00th=[ 294], 90.00th=[ 374], 95.00th=[ 454],
| 99.00th=[ 684], 99.50th=[ 796], 99.90th=[ 1288], 99.95th=[ 2128],
| 99.99th=[ 2480]
bw (KB /s): min=17176, max=17176, per=100.00%, avg=17176.00, stdev= 0.00
lat (usec) : 250=74.73%, 500=21.76%, 750=2.93%, 1000=0.35%
lat (msec) : 2=0.16%, 4=0.08%
cpu : usr=1.93%, sys=2.57%, ctx=5001, majf=0, minf=6
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=2560/d=0, short=r=0/w=0/d=0
latency : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
WRITE: io=10240KB, aggrb=16436KB/s, minb=16436KB/s, maxb=16436KB/s, mint=623msec, maxt=623msec

Wie rufst du fio auf= mit --direct=1 oder ohne?

Peter
 
Ja, direct=1 sollte immer an sein. Man kann dann noch mit der Queue-Tiefe rumspielen. Eine Zugriffszeit von fast immer schneller als 0.5msec ist doch eigentlich super.

Ich würde auch einen zeitbasierten Test mit randomisiertem Lesen/Schreiben (50:50) machen:

Code:
root@proxmox4 /tmp > fio --rw=randrw --name=test1 --filename=test --size=100M --direct=1 --runtime=30 --time_based --blocksize=8K --numjobs=64 --group_reporting
test1: (g=0): rw=randrw, bs=8K-8K/8K-8K, ioengine=sync, iodepth=1
...
test1: (g=0): rw=randrw, bs=8K-8K/8K-8K, ioengine=sync, iodepth=1
2.0.8
Starting 64 processes
Jobs: 64 (f=64): [mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm] [100.0% done] [66077K/66653K /s] [8259 /8331  iops] [eta 00m:00s]
test1: (groupid=0, jobs=64): err= 0: pid=6340
  read : io=1948.3MB, bw=66490KB/s, iops=8311 , runt= 30005msec
    clat (usec): min=102 , max=14600 , avg=3949.98, stdev=3065.45
     lat (usec): min=102 , max=14601 , avg=3950.26, stdev=3065.45
    clat percentiles (usec):
     |  1.00th=[  153],  5.00th=[  171], 10.00th=[  181], 20.00th=[  195],
     | 30.00th=[  213], 40.00th=[ 1896], 50.00th=[ 5856], 60.00th=[ 6176],
     | 70.00th=[ 6368], 80.00th=[ 6624], 90.00th=[ 6944], 95.00th=[ 7264],
     | 99.00th=[ 7904], 99.50th=[ 8256], 99.90th=[ 9024], 99.95th=[ 9408],
     | 99.99th=[12480]
    bw (KB/s)  : min=  744, max= 1378, per=1.56%, avg=1039.70, stdev=90.93
  write: io=1949.0MB, bw=66515KB/s, iops=8314 , runt= 30005msec
    clat (usec): min=67 , max=9457 , avg=3738.49, stdev=3056.37
     lat (usec): min=67 , max=9458 , avg=3739.34, stdev=3056.44
    clat percentiles (usec):
     |  1.00th=[   73],  5.00th=[   78], 10.00th=[   83], 20.00th=[   93],
     | 30.00th=[  106], 40.00th=[  129], 50.00th=[ 5728], 60.00th=[ 5984],
     | 70.00th=[ 6240], 80.00th=[ 6496], 90.00th=[ 6752], 95.00th=[ 7008],
     | 99.00th=[ 7392], 99.50th=[ 7520], 99.90th=[ 7840], 99.95th=[ 7904],
     | 99.99th=[ 8256]
    bw (KB/s)  : min=  588, max= 1584, per=1.56%, avg=1040.01, stdev=137.47
    lat (usec) : 100=12.55%, 250=25.94%, 500=0.67%, 750=0.31%, 1000=0.28%
    lat (msec) : 2=0.73%, 4=0.10%, 10=59.40%, 20=0.01%
  cpu          : usr=0.21%, sys=1.33%, ctx=985047, majf=0, minf=1705
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=249379/w=249472/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
   READ: io=1948.3MB, aggrb=66489KB/s, minb=66489KB/s, maxb=66489KB/s, mint=30005msec, maxt=30005msec
  WRITE: io=1949.0MB, aggrb=66514KB/s, minb=66514KB/s, maxb=66514KB/s, mint=30005msec, maxt=30005msec

Disk stats (read/write):
    dm-0: ios=248442/248609, merge=0/0, ticks=61131/17517, in_queue=78841, util=92.66%, aggrios=249528/254397, aggrmerge=0/56, aggrticks=61579/17768, aggrin_queue=78938, aggrutil=92.38%
  sda: ios=249528/254397, merge=0/56, ticks=61579/17768, in_queue=78938, util=92.38%

Das ist so das härteste, was du dem Storage antun kannst :-D
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!