[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Frage zu swap in logischer Partition



Am Freitag, 17. August 2012 schrieb Burak Aktas:
> Am Freitag 17 August 2012, 16:20:21 schrieb Martin Steigerwald:
> > Auf Western Digital Green 1.5 TB selbst mal getestet. Unterschied so ca.
> > 90-100 MiB/s versus 40-50 MiB/s beim sequentiellen Lesen. fio –
> > Beispieldatei disk-zone-profile.
> 
> Ja wie du schon sagst nur bei sequentiellen Lesen wie oft wird den im swap 
> sequentiell gelesen? Da macht es mehr unterschied den swap nahe an die sys. 
> Partition zu platzieren um die Kopf Bewegungen zu verkürzten.

Auch ein Argument.

Kommt also wirklich drauf an. Wenn ich den Tiefschlaf auf Swap laufen
lasse, dann gibts da durchaus sequentielle Zugriffe. Auch beim
Rausswappen großer Speicherbereiche rechne ich mit sequentiellen Zugriffen,
zumindest solange der Swap-Bereich nicht stark fragmentiert ist.

Es käme hier also im Grunde schon drauf an auf den Workload.

> > Auf der SSD ists hingegen natürlich wirklich egal.
> Die sind ja ohne hin perfekt zum swapen. Da (zu mindestens nach einer MS 
> Studie) viel vom swap gelesen wird und wenig geschrieben wird.

Jeder Tiefschlaf-Vorgang auf diesem ThinkPad T520 mit 8 GiB RAM sind
etwa 800000 Pages, oder ca. 3,6 GiB. Und die brettert der Kernel, so wie
es mir scheint, weitgehend sequentiell raus und wieder rein. Zumal das
Swap ja sonst so gut wie nicht zum Einsatz kommt – wozu auch bei 8 GiB RAM.

Auch wenn SSD an sich gut zum Swappen sind, würde ich aufgrund der Kosten
für SSDs doch lieber davon abraten. Denn RAM ist immer noch im Längen schneller.

Siehe unten. Das Maximum, was ich mit der Intel SSD bekomme sind ca.
260 MiB/s mit ioengine=libaio und iodepth=64. Für 4K-Random I/O etwas, aber
nicht allzuviel weniger.


(Das scheint mir recht nahe am Limit von SATA-300 zu sein.)

merkaba:/tmp> cat tmpfs.job 
[global]
size=2G
filename=schlumpf

[seqread]
rw=read

[seqwrite]
stonewall
rw=write

[randread]
stonewall
rw=randread

[randwrite]
stonewall
rw=randwrite


merkaba:/tmp> fio tmpfs.job
seqread: (g=0): rw=read, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
seqwrite: (g=1): rw=write, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
randread: (g=2): rw=randread, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
randwrite: (g=3): rw=randwrite, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
2.0.8
Starting 4 processes
Jobs: 1 (f=1): [___w] [100.0% done] [0K/882.7M /s] [0 /226K iops] [eta 00m:00s]      
seqread: (groupid=0, jobs=1): err= 0: pid=7317
  read : io=2048.0MB, bw=2864.4MB/s, iops=733269 , runt=   715msec
    clat (usec): min=0 , max=51 , avg= 0.85, stdev= 0.70
     lat (usec): min=0 , max=51 , avg= 0.90, stdev= 0.69
    clat percentiles (usec):
     |  1.00th=[    0],  5.00th=[    0], 10.00th=[    0], 20.00th=[    1],
     | 30.00th=[    1], 40.00th=[    1], 50.00th=[    1], 60.00th=[    1],
     | 70.00th=[    1], 80.00th=[    1], 90.00th=[    1], 95.00th=[    1],
     | 99.00th=[    2], 99.50th=[    2], 99.90th=[    9], 99.95th=[   17],
     | 99.99th=[   25]
    bw (MB/s)  : min= 2704, max= 2704, per=92.20%, avg=2704.20, stdev= 0.00
    lat (usec) : 2=98.96%, 4=0.87%, 10=0.08%, 20=0.07%, 50=0.02%
    lat (usec) : 100=0.01%
  cpu          : usr=28.71%, sys=70.31%, ctx=705, majf=0, minf=23
  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=524288/w=0/d=0, short=r=0/w=0/d=0
seqwrite: (groupid=1, jobs=1): err= 0: pid=7318
  write: io=2048.0MB, bw=990.83MB/s, iops=253646 , runt=  2067msec
    clat (usec): min=2 , max=82 , avg= 2.79, stdev= 1.04
     lat (usec): min=2 , max=82 , avg= 2.94, stdev= 1.04
    clat percentiles (usec):
     |  1.00th=[    2],  5.00th=[    2], 10.00th=[    2], 20.00th=[    2],
     | 30.00th=[    3], 40.00th=[    3], 50.00th=[    3], 60.00th=[    3],
     | 70.00th=[    3], 80.00th=[    3], 90.00th=[    3], 95.00th=[    3],
     | 99.00th=[    4], 99.50th=[   10], 99.90th=[   18], 99.95th=[   19],
     | 99.99th=[   27]
    bw (MB/s)  : min=  834, max= 1082, per=99.82%, avg=1012.73, stdev=119.07
    lat (usec) : 4=97.68%, 10=1.79%, 20=0.49%, 50=0.04%, 100=0.01%
  cpu          : usr=29.09%, sys=69.75%, ctx=2180, majf=0, minf=24
  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=524288/d=0, short=r=0/w=0/d=0
randread: (groupid=2, jobs=1): err= 0: pid=7323
  read : io=2048.0MB, bw=2124.5MB/s, iops=543867 , runt=   964msec
    clat (usec): min=0 , max=34 , avg= 1.12, stdev= 0.65
     lat (usec): min=0 , max=34 , avg= 1.17, stdev= 0.69
    clat percentiles (usec):
     |  1.00th=[    1],  5.00th=[    1], 10.00th=[    1], 20.00th=[    1],
     | 30.00th=[    1], 40.00th=[    1], 50.00th=[    1], 60.00th=[    1],
     | 70.00th=[    1], 80.00th=[    1], 90.00th=[    2], 95.00th=[    2],
     | 99.00th=[    2], 99.50th=[    2], 99.90th=[   13], 99.95th=[   15],
     | 99.99th=[   23]
    bw (MB/s)  : min= 1960, max= 1960, per=90.14%, avg=1960.98, stdev= 0.00
    lat (usec) : 2=89.71%, 4=10.08%, 10=0.10%, 20=0.10%, 50=0.01%
  cpu          : usr=30.63%, sys=68.43%, ctx=957, majf=0, minf=23
  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=524288/w=0/d=0, short=r=0/w=0/d=0
randwrite: (groupid=3, jobs=1): err= 0: pid=7325
  write: io=2048.0MB, bw=874907KB/s, iops=218726 , runt=  2397msec
    clat (usec): min=1 , max=122 , avg= 3.03, stdev= 0.94
     lat (usec): min=1 , max=122 , avg= 3.18, stdev= 0.97
    clat percentiles (usec):
     |  1.00th=[    2],  5.00th=[    2], 10.00th=[    2], 20.00th=[    3],
     | 30.00th=[    3], 40.00th=[    3], 50.00th=[    3], 60.00th=[    3],
     | 70.00th=[    3], 80.00th=[    3], 90.00th=[    3], 95.00th=[    4],
     | 99.00th=[    4], 99.50th=[   10], 99.90th=[   11], 99.95th=[   12],
     | 99.99th=[   27]
    bw (KB/s)  : min=735080, max=924448, per=99.52%, avg=870730.00, stdev=90701.52
    lat (usec) : 2=0.03%, 4=92.43%, 10=6.66%, 20=0.85%, 50=0.03%
    lat (usec) : 100=0.01%, 250=0.01%
  cpu          : usr=33.18%, sys=66.11%, ctx=2392, majf=0, minf=23
  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=524288/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
   READ: io=2048.0MB, aggrb=2864.4MB/s, minb=2864.4MB/s, maxb=2864.4MB/s, mint=715msec, maxt=715msec

Run status group 1 (all jobs):
  WRITE: io=2048.0MB, aggrb=990.83MB/s, minb=990.83MB/s, maxb=990.83MB/s, mint=2067msec, maxt=2067msec

Run status group 2 (all jobs):
   READ: io=2048.0MB, aggrb=2124.5MB/s, minb=2124.5MB/s, maxb=2124.5MB/s, mint=964msec, maxt=964msec

Run status group 3 (all jobs):
  WRITE: io=2048.0MB, aggrb=874906KB/s, minb=874906KB/s, maxb=874906KB/s, mint=2397msec, maxt=2397msec


Und da ist jetzt immer noch ein Dateisystem dazwischen.

Wenn Anwendungen direkt auf dem Hauptspeicher zugreifen, dürfte das noch
schneller sein.

Eine SSD würde ich bei den RAM-Preisen also eher in einer schnellen SLC oder
Intel Enterprise mit 40% Reserve als Ort für ein externes Journal für Ext4
oder XFS einsetzen.

Aber so oder so, es kommt sehr viel auf den Workload an.

-- 
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA  B82F 991B EAAC A599 84C7


Reply to: