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