Ich habe hier ein Problem mit dem maximalen Durchsatz und brauche Ratschläge, wie ich meine Regler einstellen kann. Wir betreiben einen 10Gbit Fileserver für die Backup Distribution. Es ist ein S-ATA2-Setup mit zwei Festplatten auf einem LSI MegaRAID-Controller. Der Server hat auch 24 GB Speicher.
Wir müssen unser zuletzt hochgeladenes Backup mit maximalem Durchsatz spiegeln.
Das RAID0 für unsere "heißen" Backups gibt uns rund 260 MB / s Schreib- und 275 MB / s Lesegeschwindigkeit. Ein getesteter tmpfs mit einer Größe von 20 GB ergibt ungefähr 1 GB / s. Diese Art von Durchsatz ist das, was wir brauchen.
Wie kann ich nun das virtuelle Speichersubsystem von Linux so einstellen, dass die zuletzt hochgeladenen Dateien so lange wie möglich im Speicher zwischengespeichert werden, ohne dass sie auf die Festplatte geschrieben werden (oder noch besser: auf die Festplatte schreiben UND sie im Speicher behalten)?
Ich habe die folgenden Sysctls eingerichtet, aber sie geben uns nicht den erwarteten Durchsatz:
# VM pressure fixes
vm.swappiness = 20
vm.dirty_ratio = 70
vm.dirty_background_ratio = 30
vm.dirty_writeback_centisecs = 60000
Dies sollte uns theoretisch 16 GB für das Zwischenspeichern von E / A geben und einige Minuten warten, bis es auf die Festplatte geschrieben wird. Wenn ich jedoch den Server einem Benchmarking unterziehe, sehe ich keine Auswirkungen auf das Schreiben, der Durchsatz steigt nicht an.
Hilfe oder Rat benötigt.
Antworten:
Wenn Sie sich die Variablen ansehen, die Sie festgelegt haben, scheinen Sie hauptsächlich mit der Schreibleistung befasst zu sein und kümmern sich nicht um mögliche Datenverluste aufgrund von Stromausfällen.
Sie erhalten immer nur die Option für verzögertes Schreiben und die Verwendung eines Rückschreibcaches mit asynchronen Schreibvorgängen. Für synchrone Schreibvorgänge muss ein Commit auf die Festplatte ausgeführt werden, und es wird niemals verzögert geschrieben. Ihr Dateisystem verursacht möglicherweise häufige Seitenlöschvorgänge und synchrone Schreibvorgänge (normalerweise aufgrund von Journalling, insbesondere mit ext3 im data = journal-Modus). Darüber hinaus beeinträchtigen selbst "Hintergrund" -Seitenlöschvorgänge nicht zwischengespeicherte Lesevorgänge und synchrones Schreiben und verlangsamen sie so.
Im Allgemeinen sollten Sie einige Kennzahlen verwenden, um zu überprüfen, was gerade passiert. Wird der Kopiervorgang im Status "D" angezeigt, während auf die Ausführung der E / A-Arbeit durch pdflush gewartet wird? Sehen Sie starke synchrone Schreibaktivitäten auf Ihren Datenträgern?
Wenn alles andere fehlschlägt, können Sie ein explizites tmpfs-Dateisystem einrichten, in das Sie Ihre Backups kopieren und anschließend nur noch Daten mit Ihren Festplatten synchronisieren - auch automatisch mit inotify
Für das Lesen im Cache sind die Dinge wesentlich einfacher - es gibt das
fadvise
Dienstprogramm fcoretools, das den--willneed
Parameter hat, der den Kernel anweist, den Inhalt der Datei in den Puffer-Cache zu laden.Bearbeiten:
Dies hätte Ihr Testszenario nicht wesentlich beeinflusst, aber es gibt ein Missverständnis in Ihrem Verständnis. Der Parameter dirty_ratio gibt nicht einen Prozentsatz des Gesamtspeichers Ihres Systems an, sondern den freien Speicher Ihres Systems .
Es gibt einen Artikel über die Optimierung für schreiblastige Lasten mit detaillierteren Informationen.
quelle
Oder holen Sie sich einfach mehr Festplatten ... Die Laufwerk-Array-Konfiguration, die Sie haben, unterstützt nicht die gesamte erforderliche Konfiguration. In diesem Fall sollte die Lösung Ihren tatsächlichen Anforderungen entsprechend überarbeitet werden. Ich verstehe, dass dies nur ein Backup ist, aber es ist sinnvoll, eine klobige Lösung zu vermeiden.
quelle
Die Verwendung des Cache-Speichers kann zu Datenverlusten führen, da Daten, die sich im Speicher befinden und nicht auf Datenträgern gespeichert sind, verloren gehen, wenn ein Fehler auftritt.
Das heißt, es gibt Abstimmungen auf Dateisystemebene.
Wenn Sie beispielsweise ext4 verwenden, können Sie die Mount-Option verwenden:
Barriere = 0
Das: "Deaktiviert die Verwendung von Schreibbarrieren im jbd-Code. Schreibbarrieren erzwingen die ordnungsgemäße Anordnung von Journal-Commits auf der Festplatte, wodurch Schreibcaches für flüchtige Datenträger sicher und mit gewissen Leistungseinbußen verwendet werden können. Wenn Ihre Datenträger auf eine Weise batteriegepuffert sind Zum anderen kann das Deaktivieren von Barrieren die Leistung sicher verbessern. Die Mount-Optionen "barrier" und "nobarrier" können auch zum Aktivieren oder Deaktivieren von Barrieren verwendet werden, um die Konsistenz mit anderen ext4-Mount-Optionen zu gewährleisten. "
Mehr unter: http://www.mjmwired.net/kernel/Documentation/filesystems/ext4.txt
quelle