Festlegen von stripe_cache_size als permanent


15

Ich tat

echo 8192 > /sys/block/md0/md/stripe_cache_size

um meine RAID-Leistung zu verbessern, und es hat viel geholfen.

Aber ich kann immer noch nicht herausfinden, wie ich es dauerhaft machen kann.

Ich habe versucht, es in /etc/rc.local zu setzen - andere Befehle werden ausgeführt, aber es wurde an anderer Stelle auf 256 überschrieben ... Irgendwelche Hinweise?


Kommentar aus meiner Antwort unten wiederholen; Ich bin mir nicht sicher, ob Sie es gesehen haben oder nicht, da ich nicht sicher bin, wie StackExchange funktioniert: Hmmm ... Ich habe kein RAID, also ist es ein langer Versuch, aber können Sie 'grep -R 256 / etc / init.d 'und' grep -R stripe_cache_size /etc/init.d '?
Zpletan

1
Würde das sysfsutils-Paket helfen, Ihr Problem zu beheben?
Zpletan

Antworten:


16

Fügen Sie eine udev-Regel hinzu, zB zu /etc/udev/rules.d/60-md-stripe-cache.rules:

SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/stripe_cache_size", ATTR{md/stripe_cache_size}="8192"

Ich habe dies nicht wirklich ausprobiert, daher ist es möglicherweise nicht 100% richtig (kann einige Tippfehler enthalten), aber es sollte nahe sein. Überprüfen Sie man udev, um mehr zu verstehen.

Sie können auch die folgenden Befehle ausführen, um die neue Regel sofort anzuwenden:

udevadm trigger
udevadm control --reload-rules

1
Vielen Dank, dies ist endlich die perfekte Lösung :-) Die Syntax ist in Ordnung, ich musste nur 60- vor dem Namen hinzufügen und RAMFS neu generieren.
BarsMonster

1
Vielen Dank. Ich kann nicht glauben, dass dies immer noch ein Problem in Ubuntu 13.10 ist. Beim Kopieren von einem verschlüsselten RAID auf ein anderes wurde einfach von <10 MB / s auf> 100 MB / s gewechselt, und zwar durch Ändern der Stripe-Cache-Größe auf einen viel großzügigeren Wert.
Frostschutz

Nur so ist es für andere klar: Auf zumindest modernen Ubuntu-Systemen (in meinem Fall 17.04) müssen Sie möglicherweise Ihre initramfs ("sudo update-initramfs -u") neu erstellen, nachdem Sie diese neue Regel erstellt haben, sonst wird dies nicht der Fall sein wird automatisch wirksam.
Bryan Henry

1

Nur um den letzten Beitrag zu erweitern; Das Skript darunter funktioniert für mich. Tauschen Sie einfach Ihre Daten zwischen "<...>" aus. Genießen!


#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#################NOTE######################
##  You are limited by CPU and memory too #
##  <Your Name> <Date of Modification>    #
##  stripe cache size and read-ahead      #
###########################################
echo 16384 > /sys/block/<Your RAID5 or 6 Volume>/md/stripe_cache_size
blockdev --setra 16384 /dev/<Your RAID5 or 6 Volume>

exit 0

3
Sagen Sie nicht "Nur um den letzten Beitrag zu erweitern", da die Antworten in der Regel nach Stimmen sortiert werden, sodass Ihre Antwort möglicherweise über der Antwort angezeigt wird, auf die Sie sich beziehen. Beziehen Sie sich auf den Beitrag mit dem Namen des Autors. Es ist viel klarer.
Warren Hill

0

Ich versuche auch, das herauszufinden. Ich habe meine in rc.local und kein Glück. Ich starte es manuell, nachdem ich mich angemeldet habe. Ich nehme an, Sie könnten ein Skript schreiben, um dies zu handhaben und es in Ihre "Startup Applictions" zu schreiben, aber das hilft überhaupt nicht, wenn Sie nicht bei gnome angemeldet sind.


Es ist Ubuntu-Server, also kein Glück hier.
BarsMonster

0

Würde das sysfsutils-Paket helfen, Ihr Problem zu beheben?

URSPRÜNGLICHE ANTWORT:

Ich kann nicht herausfinden, wie ich Ihre Frage kommentieren soll. Ich werde diese Antwort vermutlich bearbeiten, wenn ich mehr über Ihr Problem erfahre.

Kannst du die Ausgabe von posten (oder Pastebin, wenn es lang ist)?

grep -R md0 /etc/init.d

Nichts gefunden.
BarsMonster

Hmmm ... Ich habe kein RAID, also ist es eine lange Geschichte, aber können Sie 'grep -R 256 /etc/init.d' und 'grep -R stripe_cache_size /etc/init.d' ausprobieren?
Zpletan

beide ergaben keine Ergebnisse.
BarsMonster

0

Ich habe keine wirkliche Antwort für Sie, aber vielleicht könnten Sie versuchen, ein einfaches Startup-Skript zu erstellen. Erstellen Sie eine Datei in / etc / init mit der Erweiterung .conf. In der Datei setzen:

start on started tty1

exec echo 8192 > /sys/block/md0/md/stripe_cache_size

Meiner Meinung nach sollte der Befehl ungefähr zu der Zeit ausgeführt werden, zu der das Terminal gestartet wurde. Dies ist wahrscheinlich ungefähr zu der Zeit, zu der Sie den Befehl ausführen.


Ich habe bereits versucht, dies in das Startskript (rc.local) einzufügen, was jedoch nicht geholfen hat. Da dies Ubuntu Server ist, sind nach dem Neustart möglicherweise keine Terminals vorhanden, AFAIK.
BarsMonster

Ich schlug dies als Alternative zur Methode rc.local vor. Vielleicht würde es später anfangen. Ich weiß es aber nicht wirklich.
user1974

Was das Fehlen von Terminals angeht, habe ich keine Ahnung. Warum würde ein Server nach einem Start nicht ttys haben? Meinen wir das Gleiche, wenn wir Terminal sagen? Unabhängig davon, können Sie einen anderen Dienst verwenden Sie den Befehl auszulösen, ändern Sie einfachtty1
user1974

0

Totale Dunkelheit, da ich kein RAID 5-Setup zum Testen habe: Fügen Sie möglicherweise eine Zeile mit hinzu

chmod -w /sys/block/md0/md/stripe_cache_size

in rc.local, um die Schreibberechtigungen zu entfernen, nachdem sie festgelegt wurden. Vielleicht verhindert das, dass es woanders gewechselt wird?


Gute Idee, aber es scheint, als wäre etwas im Ubuntu-Boot-Prozess durcheinander: -S Ich werde versuchen, heute etwas zu posten.
BarsMonster

Hat nicht geholfen: - |
BarsMonster

0

Anhängen

echo 8192 > /sys/block/mdX/md/stripe_cache_size

zu /etc/rc.local.


Siehe die Frage - dies ist das erste, was ich versucht habe und es hat nicht funktioniert, anscheinend wurde md-driver neu initialisiert oder etwas nachdem rc.local ausgeführt wurde.
BarsMonster

-1

Diese Seite schlägt vor, dass die Streifengröße (oder -breite) beim Einrichten des fs eingerichtet worden sein sollte. Vielleicht könnten tunefs hier helfen?


2
Es ist eine ganz andere Sache. Die Stripe-Cache-Größe ist eine Einstellung für den MD-Kernel-Treiber im Speicher für den Stripes-Cache.
BarsMonster
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.