Lines Matching +full:background +full:- +full:layer

1 .. SPDX-License-Identifier: GPL-2.0
4 Multi-Queue Block IO Queueing Mechanism (blk-mq)
7 The Multi-Queue Block IO Queueing Mechanism is an API to enable fast storage
15 Background section in Introduction
16 ----------
22 any layer on the storage stack. One example of such optimization technique
26 However, with the development of Solid State Drives and Non-Volatile Memories
30 in those devices' design, the multi-queue mechanism was introduced.
36 to different CPUs) wanted to perform block IO. Instead of this, the blk-mq API
42 ---------
45 for instance), blk-mq takes action: it will store and manage IO requests to
49 blk-mq has two group of queues: software staging queues and hardware dispatch
50 queues. When the request arrives at the block layer, it will try the shortest
53 layer or if we want to try to merge requests. In both cases, requests will be
59 resources to accept more requests, blk-mq will place requests on a temporary
68 block layer through the data structure struct bio. The block layer
71 the number of queues is defined by a per-CPU or per-node basis.
74 instance, requests for sector 3-6, 6-7, 7-9 can become one request for 3-9.
87 There are several schedulers implemented by the block layer, each one following
107 buffer), and are the last step of the block layer submission code before the
109 block layer removes requests from the associated software queues and tries to
113 added to a linked list (``hctx->dispatch``) of requests. Then,
114 next time the block layer runs a queue, it will send the requests laying at the
124 Neither the block layer nor the device protocols guarantee
128 Tag-based completion
133 is generated by the block layer and later reused by the device driver, removing
135 driver, the tag is sent back to the block layer to notify it of the finalization.
140 ---------------
142 - `Linux Block IO: Introducing Multi-queue SSD Access on Multi-core Systems <http://kernel.dk/blk-m…
144 - `NOOP scheduler <https://en.wikipedia.org/wiki/Noop_scheduler>`_
146 - `Null block device driver <https://www.kernel.org/doc/html/latest/block/null_blk.html>`_
151 .. kernel-doc:: include/linux/blk-mq.h
153 .. kernel-doc:: block/blk-mq.c