All of lore.kernel.org
 help / color / mirror / Atom feed
From: joshi.k@samsung.com (Kanchan Joshi)
Subject: [PATCH] nvme: Add weighted-round-robin arbitration support
Date: Tue, 09 Jan 2018 19:20:58 +0530	[thread overview]
Message-ID: <ec6f0d2f-2751-0a29-7762-7a32830e0fcc@samsung.com> (raw)
In-Reply-To: <20180104173804.GA7007@localhost.localdomain>

Hi Keith,

It seems to me that some sort of differentiation (among tasks of various 
classes) during tag allocation is required to handle this. Perhaps, 
static division of available tags into 4 priority classes needs to be 
done in block layer.
Or does there exist any other facility in block layer which you hinted 
at? I would appreciate your suggestions/concerns.

Thanks
Kanchan

On Thursday 04 January 2018 11:08 PM, Keith Busch wrote:
> On Thu, Jan 04, 2018@08:32:09PM +0530, Kanchan Joshi wrote:
>> This patch enables support for Weighted-Round-Robin (WRR) arbitration, so
>> that applications can make use of the prioritization capabilities natively
>> present in NVMe controller.
>>
>> - It links existing io-nice classes (real-time, best-effort, none, low)
>> to NVMe priorities (urgent, high, medium, low).  This is done through
>> 'request->ioprio' field inside 'queue_rq' function.
>>
>> - Current driver has 1:1 mapping (1 SQ, 1 CQ) per cpu, encapsulated in
>> 'nvmeq' structure.  This patch refactors the code so that N:1 mapping per
>> cpu can be created; 'nvmeq' has been changed to contain variable number of SQ
>> related fields.  For WRR, 4 submission-queues (corresponding to each queue
>> priorites) need to be created on each cpu.
> 
> You have a single tagset per CQ for up to N oustandanding commands, but
> allocate enough submission entries for 4 * N. And since they're sharing
> tags, a lower pri task can limit a high-pri one from getting a tag. I
> think we could use a little more help from the block layer for WRR.
> 
> 
> 

  reply	other threads:[~2018-01-09 13:50 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20180104150334epcas1p14579a6ab7bcf1b6ce326d0bce89c91e1@epcas1p1.samsung.com>
2018-01-04 15:02 ` [PATCH] nvme: Add weighted-round-robin arbitration support Kanchan Joshi
2018-01-04 17:38   ` Keith Busch
2018-01-09 13:50     ` Kanchan Joshi [this message]
2018-01-09 17:05       ` Keith Busch
2018-01-10 15:27         ` Kanchan Joshi
2018-01-10 23:57           ` Keith Busch
2018-01-14  9:56   ` Sagi Grimberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ec6f0d2f-2751-0a29-7762-7a32830e0fcc@samsung.com \
    --to=joshi.k@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.