github.com/dmaizel/tests@v0.0.0-20210728163746-cae6a2d9cee8/metrics/storage/fio-k8s/scripts/dax-compare-test/README.md (about) 1 # FIO in Kubernetes 2 3 This test run `fio` jobs to measure how Kata Containers work using virtio-fs 4 DAX. The test works using Kubernetes. The test has to run in a single node 5 cluster, it is needed as the test modifies Kata configuration file. 6 7 The `virtio-fs` options that this test will use are: 8 9 * `cache mode` 10 Only `auto`, this is the most compatible mode for most of the Kata use cases. Today 11 this is default in Kata. 12 13 * `thread pool size` 14 Restrict the number of worker threads per request queue, zero means no thread pool. 15 16 * `DAX` 17 ``` 18 File contents can be mapped into a memory window on the host, allowing the 19 guest to directly access data from the host page cache. This has several 20 advantages: 21 22 The guest page cache is bypassed, reducing the memory footprint. No 23 communication is necessary to access file contents, improving I/O performance. 24 Shared file access is coherent between virtual machines on the same host even 25 with mmap. 26 ``` 27 28 This test by default iterates over different `virtio-fs` configurations. 29 30 | test name | DAX | thread pool size | cache mode | 31 |---------------------------|-----|------------------|------------| 32 | pool_0_cache_auto_no_DAX | no | 0 | auto | 33 | pool_0_cache_auto_DAX | yes | 0 | auto | 34 35 36 The `fio` options used are: 37 38 `ioengine`: How the IO requests are issued to the kernel. 39 * `libaio`: Supports async IO for both direct and buffered IO. 40 * `mmap`: File is memory mapped with mmap(2) and data copied to/from using memcpy(3). 41 42 `rw type`: Type of I/O pattern. 43 * `randread`: Random reads. 44 * `randrw`: Random mixed reads and writes. 45 * `randwrite`: Random writes. 46 * `read`: Sequential reads. 47 * `write`: Sequential writes. 48 49 Additional notes: 50 Some jobs contain a `multi` prefix. This means that the same job runs more than 51 once at the same time using its own file. 52 53 ### Static `fio` values: 54 Some `fio` values are not modified over all the jobs. 55 56 `runtime`: Tell `fio` to terminate processing after the specified period of 57 time(seconds). 58 59 `loops`: Run the specified number of iterations of this job. Used to repeat the 60 same workload a given number of times. 61 62 `iodepth`: Number of I/O units to keep in flight against the file. Note that 63 increasing `iodepth` beyond 1 will not affect synchronous `ioengine`. 64 65 `size`: The total size of file I/O for each thread of this job. 66 67 `direct`: If value is true, use non-buffered I/O. This is usually O_`DIRECT`. 68 69 `blocksize`: The block size in bytes used for I/O units