• Xiaobing Li's avatar
    io_uring/sqpoll: statistics of the true utilization of sq threads · 3fcb9d17
    Xiaobing Li authored
    Count the running time and actual IO processing time of the sqpoll
    thread, and output the statistical data to fdinfo.
    
    Variable description:
    "work_time" in the code represents the sum of the jiffies of the sq
    thread actually processing IO, that is, how many milliseconds it
    actually takes to process IO. "total_time" represents the total time
    that the sq thread has elapsed from the beginning of the loop to the
    current time point, that is, how many milliseconds it has spent in
    total.
    
    The test tool is fio, and its parameters are as follows:
    [global]
    ioengine=io_uring
    direct=1
    group_reporting
    bs=128k
    norandommap=1
    randrepeat=0
    refill_buffers
    ramp_time=30s
    time_based
    runtime=1m
    clocksource=clock_gettime
    overwrite=1
    log_avg_msec=1000
    numjobs=1
    
    [disk0]
    filename=/dev/nvme0n1
    rw=read
    iodepth=16
    hipri
    sqthread_poll=1
    
    The test results are as follows:
    Every 2.0s: cat /proc/9230/fdinfo/6 | grep -E Sq
    SqMask: 0x3
    SqHead: 3197153
    SqTail: 3197153
    CachedSqHead:   3197153
    SqThread:       9231
    SqThreadCpu:    11
    SqTotalTime:    18099614
    SqWorkTime:     16748316
    
    The test results corresponding to different iodepths are as follows:
    |-----------|-------|-------|-------|------|-------|
    |   iodepth |   1   |   4   |   8   |  16  |  64   |
    |-----------|-------|-------|-------|------|-------|
    |utilization| 2.9%  | 8.8%  | 10.9% | 92.9%| 84.4% |
    |-----------|-------|-------|-------|------|-------|
    |    idle   | 97.1% | 91.2% | 89.1% | 7.1% | 15.6% |
    |-----------|-------|-------|-------|------|-------|
    Signed-off-by: default avatarXiaobing Li <xiaobing.li@samsung.com>
    Link: https://lore.kernel.org/r/20240228091251.543383-1-xiaobing.li@samsung.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
    3fcb9d17
sqpoll.h 848 Bytes