# fio calls Sources https://www.thomas-krenn.com/de/wiki/Fio_Grundlagen#Welche_Blockgr.C3.B6.C3.9Fe_soll_eingesetzt_werden.3F https://git.kernel.dk/?p=fio.git;a=blob;f=HOWTO;h=025443be406669ece150b28858c67ed9cb2f56d9;hb=HEAD ## Sequential read/write, thread count can be varied //Basic structure `sudo fio --name FIO-BANDWIDTH --filename=/mnt/md0/mp_test_dir/test --rw={read|randread|write|randwrite} --size={10|100|1000}m --ioengine={sync|libaio} --blocksize=128k --iodepth={1,2,4,8,16,24,32,48,64} --direct=1 --numjobs={1,2,4,8,16,24,32,48,64} --runtime=60 --group_reporting --time_based --thread --refill_buffers` // 1GB sequential file read using libaio(), 64 threads, --refill_buffers to avoid SSD compression effects, --direct to avoid using page cache and therefore RAM, --thread to avoid forking jobs but instead creating threads `sudo fio --name FIO-BANDWIDTH --filename=/mnt/md0/mp_test_dir/test --rw=read --size=1000m --ioengine=libaio --blocksize=128k --iodepth=64 --direct=1 --numjobs=64 --runtime=60 --group_reporting --time_based --thread --refill_buffers` // 1GB sequential file read using read(), 1 thread, --refill_buffers to avoid SSD compression effects, --direct to avoid using page cache and therefore RAM `sudo fio --name FIO-BANDWIDTH --filename=/mnt/md0/mp_test_dir/test --rw=read --size=1000m --ioengine=sync --blocksize=128k --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting --time_based --refill_buffers` // 1GB sequential file write using libaio(), 64 threads, --refill_buffers to avoid SSD compression effects, --direct to avoid using page cache and therefore RAM, --thread to avoid forking jobs but instead creating threads `sudo fio --name FIO-BANDWIDTH --filename=/mnt/md0/mp_test_dir/test --rw=write --size=1000m --ioengine=libaio --blocksize=128k --iodepth=64 --direct=1 --numjobs=64 --runtime=60 --group_reporting --time_based --thread --refill_buffers` // 1GB sequential file read using write(), 1 thread, --refill_buffers to avoid SSD compression effects, --direct to avoid using page cache and therefore RAM `sudo fio --name FIO-BANDWIDTH --filename=/mnt/md0/mp_test_dir/test --rw=write --size=1000m --ioengine=sync --blocksize=128k --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting --time_based --refill_buffers` ## Random read/write, thread count can be varied // 1GB random file read using libaio(), 64 threads, --refill_buffers to avoid SSD compression effects, --direct to avoid using page cache and therefore RAM, --thread to avoid forking jobs but instead creating threads `sudo fio --name FIO-BANDWIDTH --filename=/mnt/md0/mp_test_dir/test --rw=randread --size=1000m --ioengine=libaio --blocksize=128k --iodepth=64 --direct=1 --numjobs=64 --runtime=60 --group_reporting --time_based --thread --refill_buffers` // 1GB random file read using read(), 1 thread, --refill_buffers to avoid SSD compression effects, --direct to avoid using page cache and therefore RAM `sudo fio --name FIO-BANDWIDTH --filename=/mnt/md0/mp_test_dir/test --rw=randread --size=1000m --ioengine=sync --blocksize=128k --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting --time_based --refill_buffers` // 1GB random file write using libaio(), 64 threads, --refill_buffers to avoid SSD compression effects, --direct to avoid using page cache and therefore RAM, --thread to avoid forking jobs but instead creating threads `sudo fio --name FIO-BANDWIDTH --filename=/mnt/md0/mp_test_dir/test --rw=randwrite --size=1000m --ioengine=libaio --blocksize=128k --iodepth=64 --direct=1 --numjobs=64 --runtime=60 --group_reporting --time_based --thread --refill_buffers` // 1GB random file read using write(), 1 thread, --refill_buffers to avoid SSD compression effects, --direct to avoid using page cache and therefore RAM `sudo fio --name FIO-BANDWIDTH --filename=/mnt/md0/mp_test_dir/test --rw=randwrite --size=1000m --ioengine=sync --blocksize=128k --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting --time_based --refill_buffers` ## name,iterations,real_time,cpu_time,time_unit,bytes_per_second,items_per_second,label,error_occurred,error_message "FileIOMicroReadBenchmarkFixture/FIO_READ_DRAM/1000/64/real_time",1,0,0,ns,1.413e+11,,,, "FileIOMicroReadBenchmarkFixture/FIO_READ_SEQUENTIAL_THREADED_SSD/1000/64/real_time",1,0,0,ns,1.25e+10,,,, "FileIOMicroReadBenchmarkFixture/FIO_READ_SEQUENTIAL_THREADED_LOW_LATENCY_SSD/1000/64/real_time",1,0,0,ns,2.4e+9,,,, Meeting Notes Exercise - problem an datenstruktur: müssten gesamten chunk zugreifen, um einen wert zu holen - laden von daten sollte spaltenorientiert sein - sozusagen: wir brauchen nur diesen eintrag und wollen nicht komplett laden - column muss auf mmap schon vorhanden sein - sanity check - warum umap tricky - umap mal mit weniger threads - umap ein filler und ein evictor Follow up übung: wie sähe es mit dictionary segments aus? Zwischenpräsi - benchmark was gemacht - überlegung für vereinfachte segmente - wollen das gleernte auf hyrise anwenden - ausblick was noch in den verbleibendne wochen Was genauer use case -> Gesammtes datenset kann ohne kompression nicht im hauptspeicher gehalten werden - wenn wir z.B. datensatz von 1tb aben -> wie daten genau dann im HS haben wenn wir sie brauchen -> bei mmap ist das der page cache -> wollen mittels eines bereitgestellten buffer managers (mmap), dass wir daten, die wir akutell nicht prozessieren auslagern können