Chaitanya Kulkarni <[email protected]> writes:

> Set the QUEUE_FLAG_NOWAIT. Following are the performance numbers with
> io_uring fio engine for random read, note that device has been populated
> fully with randwrite workload before taking these numbers :-

I am slightly embarrassed to have to ask this question, but what are the
implications of setting this queue flag?  Is the submit_bio routine
expected to never block?  Is the I/O expected to be performed
asynchronously?  If either of those is the case, then pmem does not
qualify.

-Jeff

>
> linux-block (pmem-nowait-on) # grep IOPS  pmem*fio | column -t
> pmem-nowait-off-1.fio:  read:  IOPS=3683k,  BW=14.0GiB/s
> pmem-nowait-off-2.fio:  read:  IOPS=3819k,  BW=14.6GiB/s
> pmem-nowait-off-3.fio:  read:  IOPS=3999k,  BW=15.3GiB/s
>
> pmem-nowait-on-1.fio:   read:  IOPS=5837k,  BW=22.3GiB/s
> pmem-nowait-on-2.fio:   read:  IOPS=5936k,  BW=22.6GiB/s
> pmem-nowait-on-3.fio:   read:  IOPS=5945k,  BW=22.7GiB/s
>
> linux-block (pmem-nowait-on) # grep cpu  pmem*fio | column -t
> pmem-nowait-off-1.fio:  cpu  :  usr=7.09%,   sys=29.65%,  ctx=198742065
> pmem-nowait-off-2.fio:  cpu  :  usr=6.89%,   sys=30.56%,  ctx=205817652
> pmem-nowait-off-3.fio:  cpu  :  usr=6.86%,   sys=30.94%,  ctx=222627094
>
> pmem-nowait-on-1.fio:   cpu  :  usr=10.58%,  sys=88.44%,  ctx=27181   
> pmem-nowait-on-2.fio:   cpu  :  usr=10.50%,  sys=87.75%,  ctx=25746   
> pmem-nowait-on-3.fio:   cpu  :  usr=10.67%,  sys=88.60%,  ctx=28261   
>
> linux-block (pmem-nowait-on) # grep slat  pmem*fio | column -t
> pmem-nowait-off-1.fio:  slat  (nsec):  min=432,   max=50847k,  avg=9324.69
> pmem-nowait-off-2.fio:  slat  (nsec):  min=441,   max=52557k,  avg=9132.45
> pmem-nowait-off-3.fio:  slat  (nsec):  min=430,   max=36113k,  avg=9132.63
>
> pmem-nowait-on-1.fio:   slat  (nsec):  min=1393,  max=68090k,  avg=7615.31
> pmem-nowait-on-2.fio:   slat  (nsec):  min=1222,  max=44137k,  avg=7493.77
> pmem-nowait-on-3.fio:   slat  (nsec):  min=1493,  max=40100k,  avg=7486.36
>
> Signed-off-by: Chaitanya Kulkarni <[email protected]>
> ---
>  drivers/nvdimm/pmem.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c
> index 46e094e56159..ddd485c377eb 100644
> --- a/drivers/nvdimm/pmem.c
> +++ b/drivers/nvdimm/pmem.c
> @@ -543,6 +543,7 @@ static int pmem_attach_disk(struct device *dev,
>       blk_queue_max_hw_sectors(q, UINT_MAX);
>       blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
>       blk_queue_flag_set(QUEUE_FLAG_SYNCHRONOUS, q);
> +     blk_queue_flag_set(QUEUE_FLAG_NOWAIT, q);
>       if (pmem->pfn_flags & PFN_MAP)
>               blk_queue_flag_set(QUEUE_FLAG_DAX, q);


Reply via email to