Linux Multi-Queue Block IO Queueing Mechanism (blk-mq)

Aus Thomas-Krenn-Wiki
(Weitergeleitet von Blk-mq)
Wechseln zu: Navigation, Suche

blk-mq (Multi-Queue Block IO Queueing Mechanism) ist ein neues Framework für den Linux Block Layer, das mit Linux Kernel 3.13 eingeführt, und mit Linux Kernel 3.16 vervollständigt wurde.[1] Blk-mq ermöglicht für High-Performance Flash-Devices (z.B. PCIe-SSDs) über 15 Millionen IOPS auf 8-Socket Servern, es profitieren aber auch Single- und Dual-Socket Server deutlich von blk-mq.[2] Ein Gerät wird dann über blk-mq angesteuert, wenn dessen Gerätetreiber auf blk-mq basiert.

In diesem Artikel erfahren Sie, wie sich blk-mq in den Linux Storage Stack einfügt und für welche Geräte bereits blk-mq kompatible Treiber in den Linux Kernel eingeflossen sind.

blk-mq im Linux Storage Stack

Two level Linux block layer design von blk-mq.[2]

Blk-mq fügt sich nahtlos in den Linux Storage Stack ein. Es stellt Gerätetreibern Grundfunktionen zur Verteilung der I/O Anfragen auf mehrere Warteschlangen bereit. Die Aufgaben verteilen sich so auf mehrere Threads und damit auf mehrere CPU-Kerne (per-core software queues). Blk-mq kompatible Treiber teilen ihrerseits blk-mq mit, wie viele parallele Hardware Queues ein Gerät unterstützt (number of submission queues im Zuge der HW dispatch queue registration).

Blk-mq basierende Gerätetreiber umgehen die bisherigen Linux I/O Scheduler. In der Vergangenheit haben das bereits einige Treiber ohne blk-mq gemacht (iomemory-vsl, nvme, mtip32xx), diese mussten als bio-based (block-I/O-based) Treiber aber viele generische Funktionen selbst bereitstellen ("stacked" approach).

Alle Gerätetreiber, die den bisherigen Block I/O Layer verwenden, arbeiten unabhängig von blk-mq als request-based Treiber weiterhin nach dem Linux I/O Scheduler (request_fn based approach, siehe Linux Storage Stack Diagramm).[3] Wie lange es diesen request_fn based approach im Linux Kernel noch geben wird, ist derzeit (Juli 2014) noch nicht klar.[4][5]

Gerätetreiber

Treiber Devicename unterstützte Geräte blk-mq seit Kernel Version
null_blk /dev/nullb*[6] keine (Test-Treiber) 3.13 (git commit)
virtio_blk /dev/vd* virtueller Gast-Treiber (z.B. unter KVM[7][8]) 3.13 (git commit)
mtip32xx /dev/rssd* Micron RealSSD PCIe 3.16 (git commit)
scsi (scsi_mq) /dev/sd* z.B. SAS und SATA SSDs/HDDs 3.17 (git commit)
NVMe /dev/nvme* z.B. Intel SSD DC P3600 DC P3700 Series[9] 3.19 (git commit)
rbd /dev/rdb* RADOS Block Device (Ceph) 4.0 (git commit)
ubi /dev/ubiblock* 4.0 (git commit)
loop /dev/loop* Loopback-Device 4.0 (git commit)
dm / dm-mpath request-based device mapper targets (derzeit ist dies ausschließlich dm-multipath) 4.1 (git commit)
nbd /dev/nb* Network Block Device (siehe auch nbd.txt) 4.9 (git commit)

Weitere Informationen

Einzelnachweise

  1. Blk-mq Is Almost Feature Complete & Fast With Linux 3.16 (phoronix.com, 02.06.2014)
  2. 2,0 2,1 Linux Block IO: Introducing Multi-queue SSD Access on Multi-core Systems (Matias Bjørling, Jens Axboe, David Nellans, Philippe Bonnet at SYSTOR 2013 - 6th Annual International Systems and Storage Conference)
  3. blk-mq: new multi-queue block IO queueing mechanism (git commit von Jens Axboe vom 25.10.2013)
  4. Re: (PATCH RFC - TAKE TWO - 00/12) New version of the BFQ I/O Scheduler ... yes, we're likely going to maintain that code for a long time, so it's not going anywhere anytime soon... (Jens Axboe, 02.06.2014)
  5. Re: (PATCH RFC - TAKE TWO - 00/12) New version of the BFQ I/O Scheduler I'd really planning on not maintaining the old request based SCSI code for a long time once we get positive reports in from users of various kinds of older hardware. (Christoph Hellwig, 04.06.2014)
  6. Null block device driver (kernel.org/doc/Documentation)
  7. Virtio (www.linux-kvm.org)
  8. Boot from virtio block device (www.linux-kvm.org)
  9. Intel Solid-State Drive Data Center Family for PCIe (www.intel.com)


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer, tätig im Bereich Communications / Knowledge Transfer bei Thomas-Krenn, hat sein Studium zu Computer- und Mediensicherheit an der FH Hagenberg abgeschlossen. Er ist regelmäßig Autor in Fachzeitschriften und Speaker bei Konferenzen wie LinuxCon, OSDC, OSMC, LinuxTag u.v.m. Seine Freizeit gestaltet er sehr abwechslungsreich. In einem Moment absolviert er seinen Abschluss im Klavierspielen, im anderen läuft er beim Linzmarathon in der Staffel mit oder interessiert sich für OpenStreetMap.


Das könnte Sie auch interessieren

Festplatteneinschub an HBA blinken lassen unter Linux