GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Readahead-Einstellungen für LVM, Device-Mapper, Software Raid und Block Devices – was gewinnt?

Lösung 1:

Wie wird die RA-Einstellung in der virtuellen Blockgerätekette weitergegeben?

Es hängt davon ab, ob. Nehmen wir an, Sie befinden sich in Xen domU und haben RA=256. Ihr /dev/xvda1 ist der tatsächliche LV auf dem dom0, der unter /dev/dm1 sichtbar ist. Sie haben also RA(domU(/dev/xvda1)) =256 und RA(dom0(/dev/dm1)) =512 . Dies hat den Effekt, dass der Kernel von dom0 auf /dev/dm1 mit einer anderen RA als dem Kernel von domU zugreift. So einfach.

Eine andere Situation tritt ein, wenn wir eine /dev/md0(/dev/sda1,/dev/sda2) Situation annehmen.

blockdev --report | grep sda
rw   **512**   512  4096          0   1500301910016   /dev/sda
rw   **512**   512  4096       2048      1072693248   /dev/sda1
rw   **512**   512  4096    2097152   1499227750400   /dev/sda2
blockdev --setra 256 /dev/sda1
blockdev --report | grep sda
rw   **256**   512  4096          0   1500301910016   /dev/sda
rw   **256**   512  4096       2048      1072693248   /dev/sda1
rw   **256**   512  4096    2097152   1499227750400   /dev/sda2

Das Setzen von /dev/md0 RA wirkt sich nicht auf /dev/sdX blockdevices aus.

rw   **256**   512  4096       2048      1072693248   /dev/sda1
rw   **256**   512  4096    2097152   1499227750400   /dev/sda2
rw   **512**   512  4096          0      1072627712   /dev/md0

Meiner Meinung nach greift der Kernel also im Allgemeinen auf die tatsächlich festgelegte Weise auf das Blockgerät zu. Auf ein logisches Volume kann über RAID (von dem es Teil ist) oder Devicemapper-Gerät zugegriffen werden, und jedes mit einer anderen RA, die respektiert wird.

Also lautet die Antwort - die RA-Einstellung wird meiner Meinung nach nicht in der Blockgerätekette weitergegeben, aber was auch immer die RA-Einstellung des Geräts auf oberster Ebene ist, wird verwendet, um auf die konstituierenden Geräte zuzugreifen

Übertrumpft dm-0 alles, weil dies das Blockgerät der obersten Ebene ist, auf das Sie tatsächlich zugreifen?

Wenn Sie die tiefe Ausbreitung mit "Trump All" meinen, denke ich, dass Sie gemäß meinem vorherigen Kommentar möglicherweise unterschiedliche RAs für verschiedene Geräte im System haben.

Würde lvchange -r Auswirkungen auf das dm-0-Gerät haben und hier nicht angezeigt werden?

Ja, aber das ist ein besonderer Fall. Nehmen wir an, wir haben /dev/dm0, was LVMs /dev/vg0/blockdevice ist. Wenn ja:

lvchange -r 512 /dev/vg0/blockdevice

das /dev/dm0 wird sich ebenfalls ändern, da /dev/dm0 und /dev/vg0/blockdevice genau dasselbe Blockgerät sind, wenn es um Kernelzugriff geht.

Aber nehmen wir an, dass /dev/vg0/blockdevice dasselbe ist wie /dev/dm0 und /dev/xvda1 in Xen domU, das es verwendet. Das Festlegen der RA von /dev/xvda1 wird wirksam, aber dom0 wird sehen, dass es immer noch seine eigene RA hat.

Was verwenden Sie, äquivalent zur obigen Sektorgröße, um den tatsächlichen Readahead-Wert für ein virtuelles Gerät zu bestimmen:

Normalerweise entdecke ich RA, indem ich mit verschiedenen Werten experimentiere und es mit hdparm teste.

Die Stripe-Größe des RAID (für md0)?

Wie oben.

Spielt der FS eine Rolle (ich interessiere mich hauptsächlich für ext4 und XFS)?

Klar - das ist ein sehr großes Thema. Ich empfehle Ihnen, hier http://archives.postgresql.org/pgsql-performance/2008-09/msg00141.php

zu beginnen

Lösung 2:

Kennen Sie die Antwort, die schwerer zu erklären ist, also werde ich dies in einem Beispiel tun. Angenommen, Sie haben 3 Blockgeräte und stellen Ihren RA auf 4 (4 * 512 Byte) ein, wenn Sie einen Standardsektor annehmen. Wenn Sie sagen würden, verwenden Sie ein RAID-5-Schema mit den 3 Festplatten, würde jeder Lesevorgang, der sogar einen Stripe auf einer eindeutigen Festplatte berührt, die RA um den Faktor erhöhen, auf den Sie anfangs Blockgerät-RA eingestellt haben. Wenn Ihr Lesevorgang also genau alle 3 Festplatten umfasst, beträgt Ihre effektive RA 12 * 512 Byte. Dies kann durch die Einstellung von RA in den verschiedenen Ebenen, z. B. MD oder LVM, verstärkt werden. Als Faustregel gilt:Wenn meine App von RA profitiert, setze ich sie auf die höchstmögliche Ebene, damit ich die RA nicht unnötig erhöhe. Ich starte dann das Dateisystem auf Sektor 2049 und versetze jeden Sektorstart um eine Zahl, die durch 8 teilbar ist. Ich bin vielleicht weit weg von dem, was Sie fragen, aber das sind meine 2¢.


Linux
  1. Was sind spezielle Zeichen- und Blockierungsdateien in einem Unix-System?

  2. Gdomap und wofür wird es verwendet?

  3. FreeCAD – Eine 3D-Modellierungs- und Designsoftware für Linux

  4. Was ist eine XPerf-Alternative für Linux und Mac OS X?

  5. Linux-Bänder, was sind l a und m am Ende von Bandgeräten in dev?

4 Gründe, Linux für Kunst und Design zu wählen

Die schlechtesten Linux-Distributionen für Anfänger [und was zu wählen]

Was ist eine verteilte Datenbank und wozu dienen verteilte Datensysteme?

Die 30 besten Buchhaltungs- und Finanzsoftware für Linux Desktop

20 beste Digital Audio Workstation (DAW) und DJ-Software für Linux

20 beste Festplatten- und Dateiverschlüsselungssoftware für Linux-Desktops