Auswahl des richtigen Linux I / O-Schedulers für einen mit NVMe SSD ausgestatteten Host?

8

Wir schreiben eine hochgradig parallele Software in C ++ für ein paar Hosts, die alle mit einem einzigen ST9500620NS als Systemlaufwerk und einer Intel P3700 NVMe Gen3 PCIe SSD-Karte für Daten ausgestattet sind. Ich versuchte, das System besser zu verstehen, um unsere Software zu optimieren. Ich suchte das System aus (zwei E5-2620 v2 @ 2.10GHz CPUs, 32GB RAM, mit CentOS 7.0) und war überrascht, Folgendes festzustellen:

%Vor%

Das widerspricht allem, was ich über die Auswahl des richtigen Linux-I / O-Schedulers gelernt habe, zB von das offizielle Dokument auf kernel.org .

Ich verstehe, dass NVMe ein neues Kind auf dem Block ist, daher werde ich die bestehenden Scheduler-Einstellungen vorerst nicht anfassen. Aber ich fühle mich wirklich seltsam wegen der "None", die der Installateur eingebaut hat. Wenn jemand Hinweise darauf hat, wo ich weitere Informationen finden oder Ihre Erkenntnisse weitergeben kann, wäre ich Ihnen dankbar. Ich habe viele Stunden damit verbracht, zu googeln, ohne etwas Konkretes zu finden.

    
user183394 27.12.2014, 04:30
quelle

2 Antworten

7

"none" (alias "noop") ist der richtige Scheduler für dieses Gerät.

I / O-Scheduler sind in erster Linie für langsamere Speichergeräte mit begrenzter Warteschlange (z. B. einzelne mechanische Festplatten) nützlich - der Zweck eines E / A-Schedulers besteht darin, E / A-Anforderungen neu anzuordnen, um wichtigere früher gewartete zu erhalten. Für ein Gerät mit einer sehr großen internen Warteschlange und einem sehr schnellen Dienst (wie eine PCIe-SSD!) Wird ein E / A-Scheduler Ihnen nichts nützen; Sie sind besser dran, wenn Sie alle Anfragen sofort an das Gerät senden.

    
duskwuff 27.12.2014, 05:11
quelle
9

Die Antwort von Sanne in den Kommentaren ist richtig:

"Der Grund dafür ist, dass NVMe den Scheduler umgeht. Sie verwenden nicht die" noop "-Implementierung: Sie verwenden keinen Scheduler."

noop ist nicht dasselbe wie keins, noop führt immer noch Blockzusammenführung durch (außer Sie deaktivieren es mit nomerges)

Wenn Sie ein nvme-Gerät verwenden oder wenn Sie "scsi_mod.use_blk_mq = Y" zur Kompilier- oder Bootzeit aktivieren, umgehen Sie die herkömmliche Anforderungswarteschlange und die zugehörigen Scheduler.

Scheduler für blk-mq könnten in Zukunft entwickelt werden.

    
sheridp 22.04.2016 14:45
quelle

Tags und Links