Warum Caches in Linux löschen?

84

Auf unseren Servern haben wir die Angewohnheit, Caches um Mitternacht zu löschen.

sync; echo 3 > /proc/sys/vm/drop_caches

Wenn ich den Code ausführe, wird scheinbar viel RAM frei, aber muss ich das wirklich tun? Ist freies RAM keine Verschwendung?

ivcode
quelle
62
Suchen Sie die Person, die das eingegeben hat, und fragen Sie sie, warum sie das getan hat. Wie Sie richtig vermutet haben, gibt es keinen offensichtlichen Grund dafür.
Michael Hampton
10
Debuggen des Kernels. Das ist alles. Dadurch wird kein RAM freigegeben. Wie der Name schon sagt, werden die Caches gelöscht und die Leistung verringert.
Michael Hampton
28
@ivcode Dann sollten Sie das Problem mit diesem Server suchen und beheben, anstatt zu versuchen, die Bedingungen zu vermeiden, die ihn verursachen. Wenn mein Auto bei jeder scharfen Rechtskurve zum Stehen kam, ist das Vermeiden scharfer Rechtskurven eine miese Lösung.
David Schwartz
7
Related thedailywtf.com/Articles/Modern-Memory-Management.aspx Stark argumentieren, dass es eine schlechte Idee ist.
Drunix
7
Verwandte und eine nützliche Beschreibung des "Problems": linuxatemyram.com
Bill Weiss

Antworten:

86

Sie sind zu 100% korrekt. Es ist keine gute Praxis, RAM freizugeben. Dies ist wahrscheinlich ein Beispiel für die Verwaltung von Frachtkult-Systemen.

David Schwartz
quelle
9
+1 für die Erwähnung der Cargo Cult System Administration. Jeder Sysadmin, der diesen Begriff und seine Bedeutung nicht kennt, sollte entlassen werden.
Heute,
8
@Tonny: Wir würden dann ohne Sysadmin-Abteilung gelassen werden :(
PlasmaHH
2
Wie die meisten Menschen liebe ich knappe, freche Behauptungen mit viel Zustimmung, aber ein Zitat oder eine Begründung würde meinem Über-Ich +1 einbringen.
Aaron Hall
2
Erläutern Sie die Verwaltung des Frachtkults sowie die oben genannten Punkte, wenn Sie nichts dagegen haben. Vielleicht in einer Nachbearbeitung? Ich verweigere immer noch meine +1 ...: P
Aaron Hall
2
"Es ist möglich, dass Ihre Anwendung zwar diesen RAM nicht verwendet, Linux jedoch aggressiv in den Arbeitsspeicher zwischenspeichert. Auch wenn die Anwendung Speicher benötigt, wird ein Teil dieses Caches nicht freigegeben, sondern es wird eher mit dem Auslagern begonnen." Nicht sehr spezifisch. In der Praxis ist die Speicherverwaltung nicht perfekt, und es ist eine gute Sache, einen Drehknopf zu haben, wenn diese Unvollkommenheit auftritt.
Dan Pritts
62

Ja, das Leeren des Caches gibt RAM frei, aber der Kernel sucht nach Dateien auf der Festplatte und nicht im Cache, was zu Leistungsproblemen führen kann.

Normalerweise löscht der Kernel den Cache, wenn der verfügbare RAM erschöpft ist. Es schreibt häufig verschmutzte Inhalte mit pdflush auf die Festplatte.

Ananthan
quelle
20
+1 für die Erklärung, warum es eine schlechte Idee ist.
Ogre Psalm33
35

Der Grund, Caches wie diesen zu löschen, dient dem Benchmarking der Festplattenleistung und ist der einzige Grund, warum dies der Fall ist.

Wenn Sie einen E / A-intensiven Benchmark ausführen, möchten Sie sicher sein, dass die verschiedenen Einstellungen, die Sie versuchen, tatsächlich für die Datenträger-E / A verwendet werden. Linux ermöglicht Ihnen daher, Caches zu löschen, anstatt einen vollständigen Neustart durchzuführen.

So zitieren Sie aus der Dokumentation :

Diese Datei ist kein Mittel, um das Wachstum der verschiedenen Kernel-Caches (Inodes, Dentries, Pagecache usw.) zu steuern. Diese Objekte werden vom Kernel automatisch wiederhergestellt, wenn an anderer Stelle im System Speicher benötigt wird.

Die Verwendung dieser Datei kann zu Leistungsproblemen führen. Da zwischengespeicherte Objekte verworfen werden, kann die Neuerstellung der abgelegten Objekte eine erhebliche Menge an E / A und CPU kosten, insbesondere wenn sie stark ausgelastet waren. Aus diesem Grund wird die Verwendung außerhalb einer Test- oder Debugging-Umgebung nicht empfohlen.

Joe
quelle
Abhängig davon, was Sie versuchen, wird der Festplattencache möglicherweise auch nach einem vollständigen Neustart nicht ausreichend geleert.
ein Lebenslauf
1
"Diese Objekte werden vom Kernel automatisch zurückgefordert, wenn Speicher benötigt wird", lautet das Entwurfsziel, es ist jedoch möglicherweise nicht immer das tatsächliche Verhalten.
Dan Pritts
@DanPritts Was genau lässt dich denken, dass es nicht so ist?
Joe
2
Der naheliegende Fall ist, wenn Sie den Arbeitsspeicher löschen möchten, um die Zuweisung von mehr (nicht transparenten) riesigen Seiten zu ermöglichen. Ein weiterer Fall sind transparente Pausenfehler bei der Garbage Collection (siehe meine Antwort / Kommentare an anderer Stelle zu dieser Frage). Aber mein Kommentar war für den allgemeinen Fall gedacht. Manchmal wissen die Leute, die das System betreiben, besser als die Leute, die es entworfen / implementiert haben. Oft nicht - das ist es, wovor sich ihr Kommentar zu schützen versucht. Ich bin nur froh, dass der
Dan Pritts
26

Die Grundidee hier ist wahrscheinlich nicht so schlecht (nur sehr naiv und irreführend): Es werden möglicherweise Dateien zwischengespeichert, auf die in naher Zukunft kaum zugegriffen werden kann, z. B. Protokolldateien. Diese "fressen" RAMs, die später bei Bedarf vom Betriebssystem auf die eine oder andere Weise freigegeben werden müssen.

Abhängig von Ihren Einstellungen für Austauschbarkeit, Dateizugriffsmuster, Speicherzuweisungsmuster und viele weitere unvorhersehbare Dinge kann es vorkommen, dass diese Caches, wenn Sie sie nicht freigeben, später erneut verwendet werden müssen, was etwas mehr Zeit in Anspruch nimmt als Zuweisen von Speicher aus dem Pool nicht verwendeter Speicher. Im schlimmsten Fall werden die Swap-Einstellungen von Linux dazu führen, dass der Programmspeicher ausgelagert wird, da Linux davon ausgeht, dass diese Dateien in naher Zukunft mit größerer Wahrscheinlichkeit verwendet werden als der Programmspeicher.

In meiner Umgebung schätzt Linux ziemlich oft, und zu Beginn der meisten europäischen Börsen (um 09:00 Uhr Ortszeit) werden Server Dinge tun, die sie nur einmal pro Tag tun, und müssen den Speicher austauschen, der zuvor aufgrund des Schreibens ausgelagert wurde Logfiles, Komprimieren, Kopieren usw. füllten den Cache bis zu dem Punkt, an dem Dinge ausgelagert werden mussten.

Aber ist das Löschen von Caches die Lösung für dieses Problem? definitiv nicht. Die Lösung wäre, Linux mitzuteilen, was es nicht weiß: Diese Dateien werden wahrscheinlich nicht mehr verwendet. Dies kann von der Schreibanwendung mit Dingen wie posix_fadvise()oder mit einem cmd-Linientool wie vmtouch(das auch verwendet werden kann, um Dinge zu untersuchen und Dateien zu zwischenspeichern) durchgeführt werden.

Auf diese Weise können Sie die Daten, die nicht mehr benötigt werden, aus den Caches entfernen und das Material behalten, das zwischengespeichert werden soll. Wenn Sie alle Caches löschen, muss eine Menge Material erneut von der Festplatte gelesen werden. Und das im schlimmsten Moment: wenn es gebraucht wird; Verzögerungen in Ihrer Anwendung verursachen, die spürbar und oft nicht akzeptabel sind.

Was Sie haben sollten, ist ein System, das Ihre Speicherverwendungsmuster überwacht (z. B. wenn sich etwas ändert) und dann entsprechend analysiert und entsprechend handelt. Die Lösung könnte darin bestehen, am Ende des Tages einige große Dateien mit vtouch zu entfernen. Es könnte auch sein, mehr RAM hinzuzufügen, da die tägliche Spitzenauslastung des Servers genau das ist.

PlasmaHH
quelle
Alle Apps auf meinem Server laufen auf nohup. Vielleicht wird nohup.out zwischengespeichert und verbraucht Speicherplatz?
ivcode
@ivcode: Dies könnte ein Grund sein, zu überprüfen, wie groß nohup.out ist. Verwenden Sie vmtouch, um herauszufinden, wie viel davon zwischengespeichert ist.
PlasmaHH
Ich habe cat /dev/null > path/nohup.outalle 15 Minuten einen Cron-Job, da nohup.out rasant wächst. Vielleicht cacht Linux nohup.out, auch wenn ich es
lösche
5
@ivcode Wenn Sie die Ausgabe von nicht benötigen nohup, sollten Sie sie an umleiten /dev/null. Es klingt, als hätten Sie irgendwann einige unerfahrene Sysadmins auf Ihren Systemen. Siehe stackoverflow.com/questions/10408816/... für wie zu lenken nohup‚s Ausgabe/dev/null
David Wilkins
Obwohl nohup.out in Intervallen von 15 Minuten gelöscht wird, wird nohup.out automatisch von einem anderen Skript gesichert, wenn der Anwendungsprozess aus irgendeinem Grund abgebrochen wurde. Ich habe versucht, vmtouch. Es ist in der Tat ein sehr gutes Werkzeug
ivcode
16

Ich habe festgestellt, dass Drop-Caches beim Starten einer Reihe von virtuellen Maschinen hilfreich sind. Oder irgendetwas anderes, das große Seiten verwendet, wie zum Beispiel einige Datenbankserver.

Große Seiten in Linux müssen häufig RAM defragmentieren, um 2 MB zusammenhängenden physischen RAM zu finden, der in eine Seite eingefügt werden soll. Wenn Sie den gesamten Dateicache freigeben, ist dieser Vorgang sehr einfach.

Aber ich stimme den meisten anderen Antworten darin zu, dass es im Allgemeinen keinen guten Grund gibt, den Dateicache jede Nacht zu löschen.

Zan Lynx
quelle
1
Ich habe mich dafür ausgesprochen, dass Vorurteile zweiter Ordnung Reaktionen auf das Löschen von Caches sind.
Noah Spurrier
1
In HPC-Anwendungen auf Knoten mit hohem Arbeitsspeicher (1 TB) führt das Einlesen einiger großer Dateien außerdem dazu, dass viel Arbeitsspeicher zwischengespeichert wird. Da viele HPC-Anwendungen Mallocs mit Hunderten von GB ausführen, kann das System stundenlang zum Stillstand kommen, da Migrationsprozesse kleine Teile des fragmentierten Speichers erfolglos über NUMA-Knoten bewegen, sobald das System die "Grenze" des zwischengespeicherten Speichers erreicht. Schlimmer noch, Sie können im Benutzerland nichts tun, um die Caches freizugeben, außer das System dazu zu bringen, alle winzigen 2-MB-Blöcke, die es auf einmal freigeben kann, zuzuweisen. Dadurch können riesige Defragmentierungen und die Apps normal ausgeführt werden.
user1649948
+1 Der Befehl zum Erstellen großer Seiten ( sysctl -w vm.nr_hugepages=...) funktioniert nur, wenn ich zuerst Caches lösche (Arch Linux).
Aleksandr Dubinsky
8

Es ist möglich, dass dies eingeführt wurde, um das System zu stabilisieren, wenn es niemanden gab, der über die Fähigkeiten oder Erfahrungen verfügte, um das Problem tatsächlich zu finden.

Ressourcen freisetzen

Durch das Löschen von Caches werden im Wesentlichen einige Ressourcen freigesetzt, aber dies hat den Nebeneffekt, dass das System tatsächlich härter arbeitet, um das zu tun, was es versucht zu tun. Wenn das System austauscht (versucht, von einer Platten-Swap-Partition schneller zu lesen und zu schreiben, als es tatsächlich möglich ist), kann das regelmäßige Löschen von Caches das Symptom lindern , die Ursache wird jedoch nicht behoben .

Was frisst die Erinnerung auf?

Sie sollten feststellen, was zu einem hohen Speicherverbrauch führt, bei dem das Löschen von Caches anscheinend funktioniert. Dies kann durch eine beliebige Anzahl schlecht konfigurierter oder einfach nur falsch genutzter Serverprozesse verursacht werden. Beispielsweise konnte ich auf einem Server feststellen, dass die Speichernutzung maximal war, wenn eine Magento-Website innerhalb von 15 Minuten eine bestimmte Anzahl von Besuchern erreichte. Dies wurde letztendlich dadurch verursacht, dass Apache so konfiguriert wurde, dass zu viele Prozesse gleichzeitig ausgeführt werden können. Zu viele Prozesse, die viel Speicher verbrauchen (Magento ist manchmal ein Biest) = tauschen.

Endeffekt

Gehen Sie nicht einfach davon aus, dass es etwas ist, was notwendig ist. Finden Sie proaktiv heraus, warum es da ist, haben Sie den Mut, es zu deaktivieren, wenn andere vermuten, dass es falsch ist, und beobachten Sie das System - lernen Sie, was das eigentliche Problem ist, und beheben Sie es.

David Wilkins
quelle
4

Linux / m68k hat tatsächlich einen Kernel-Fehler, der dazu führt, dass kswapd verrückt wird und 100% der CPU auffrisst (50%, wenn es eine andere CPU-gebundene Aufgabe gibt, wie z nicht immer), indem Sie diesen Befehl alle paar Stunden ausführen.

Davon abgesehen… Ihr Server ist höchstwahrscheinlich kein m68k-System (Atari, Amiga, klassischer Macintosh, VME, Q40 / Q60, Sun3) ;-)

In diesem Fall befolgte die Person, die die Zeilen einfügte, entweder fragwürdige oder bestenfalls veraltete Ratschläge oder kam auf die Idee, wie RAM falsch verwendet werden sollte. , oder "entdeckte", dass dies ein anderes Problem an anderer Stelle "behebt" (und zu faul war, um nach einer geeigneten Lösung zu suchen).

Mirabilos
quelle
"Ein Kernel-Fehler, der dazu führt, dass kswapd verrückt wird" - Welcher Fehler ist das?
Ben
@Ben sehen diesen Thread (diese Nachricht und ein paar Follow-ups, von denen einer eine Vermutung, woher es kommen könnte)
mirabilos
1
Ich erlebe ein ähnliches Problem (obwohl es x86_64 ist) und die einzige Lösung in diesem Moment Caches fallen serverfault.com/questions/740790/...
Fernando
2
@Fernando Ich habe auch einen "Drop Caches" -Cronjob auf der M68K-Box
3

Ein Grund könnte sein, dass auf der Site eine Art Überwachung ausgeführt wird, die die Menge des freien Arbeitsspeichers überprüft und eine Warnung an Administratoren sendet, wenn der freie Arbeitsspeichers einen bestimmten Prozentsatz unterschreitet. Wenn dieses Überwachungstool dumm genug ist, um den Cache nicht in die Berechnung des freien Arbeitsspeichers einzubeziehen, werden möglicherweise falsche Warnungen gesendet. Wenn Sie den Cache regelmäßig leeren, können diese Warnungen unterdrückt werden, ohne dass das Tool merkt, dass der "echte" RAM fast leer ist.

In solchen Situationen besteht die eigentliche Lösung natürlich darin, das Überwachungstool so zu ändern, dass der Cache in die Berechnung des freien Arbeitsspeichers einbezogen wird. Das Bereinigen des Caches ist nur eine Umgehung und auch eine schlechte, da der Cache schnell wieder aufgefüllt wird, wenn Prozesse auf den Datenträger zugreifen.

Selbst wenn meine Vermutung zutrifft, ist die Cache-Bereinigung nicht sinnvoll, sondern eine Problemumgehung durch jemanden, der nicht kompetent genug ist, um das primäre Problem zu beheben.

Guntram Blohm
quelle
3

Ich kann mir einen plausiblen Grund vorstellen, dies in einem nächtlichen Cronjob zu tun.

Auf einem großen System kann es nützlich sein, Caches regelmäßig zu löschen, damit Sie die Speicherfragmentierung entfernen können.

Die Unterstützung für transparente Riesen-Seiten im Kernel durchsucht den Speicher regelmäßig, um kleine Seiten in Riesen-Seiten zusammenzuführen. Unter entarteten Bedingungen kann dies zu Systempausen von ein oder zwei Minuten führen (meine Erfahrung mit RHEL6; hoffentlich hat sich das verbessert). Das Löschen von Caches kann dazu führen, dass der Riesen-Seiten-Sweeper etwas Platz zum Arbeiten hat.

Sie könnten argumentieren, dass dies ein guter Grund ist, transparente Riesen-Seiten zu deaktivieren. Sie können davon ausgehen, dass sich die allgemeine Leistungsverbesserung durch transparente Riesen-Seiten lohnt und Sie den Preis dafür zahlen müssen, dass Sie Ihre Caches einmal am Tag verlieren.


Ich habe mir einen anderen Grund überlegt, warum du es machen willst, obwohl du keinen Cron Job hast. Ein guter Zeitpunkt dafür wäre, bevor ein Virtualisierungssystem eine VM auf neue Hardware migriert. Weniger Speicherinhalt zum Kopieren auf den neuen Host. Sie müssen natürlich stattdessen irgendwann aus dem Speicher lesen, aber das würde ich wahrscheinlich in Kauf nehmen.

Ich weiß nicht, ob die virt-Software dies tatsächlich tut.

Dan Pritts
quelle
1
Haben Sie eine Quelle dafür? Das klingt nach etwas, das im Kernel behoben werden sollte, wenn es so ein Problem ist.
Eltern
3
Ich habe persönliche Erfahrung mit den Pausen mit transparenten Riesenseiten. RHEL6, Dell R810, 4 CPUs, 64 GB RAM. Das Deaktivieren von transparenten Riesen-Seiten (es gibt eine / proc-Datei, um dies zu tun) hat die Pausen sofort behoben. Ich habe damals die Cache-Drop-Technik nicht ausprobiert. Stattdessen habe ich unsere Java-Apps so konfiguriert, dass sie nicht transparente Riesen-Seiten verwenden, und transparente Riesen-Seiten deaktiviert gelassen. IIRC haben wir uns die Situation so genau angesehen, dass wir nicht die einzigen Betroffenen waren und Red Hat von dem Problem wusste.
Dan Pritts
Hallo Dan, ich verhalte mich auf meinem Server genauso. Ich arbeite mit einer großen Datenmenge und es kommt zu einem drastischen Leistungsabfall nach mehr als 10 Berechnungen mit demselben Python-Programm (x2-3 der ersten Berechnungszeit). Wenn ich es mir anschaue, ist der Speicher-Cache riesig, 100 + GB. Und wenn ich diesen Speichercache lösche und mein Programm erneut ausführe, erhalte ich meine anfängliche Berechnungszeit zurück. Haben Sie Dokumente oder Informationen zu diesem Phänomen? Dankeschön.
Axel Borja
1
access.redhat.com/solutions/46111 beschreibt es. Sie können transparente riesige Seiten deaktivieren, um festzustellen, ob dies das Problem in Ihrem Fall ist.
Dan Pritts
2

Nur um meine zwei Cent hinzuzufügen: Das System weiß sehr gut, dass diese Speicherseiten Caches sind, und sie werden so oft gelöscht, wie eine Anwendung nach Speicher fragt.

Eine relevante Einstellung ist /proc/sys/vm/swappiness, die dem Kernel während neuer Speicherzuweisungen anweist, lieber Speichercaches zu löschen oder "inaktive" zugewiesene Speicherseiten auszutauschen.

aularon
quelle
1

Die Frage stammt aus dem Jahr 2014, aber da das Problem auf einigen versteckten Centos 6.8-Backends bis heute besteht, kann es für jemanden dennoch nützlich sein.

https://github.com/zfsonlinux/zfs/issues/1548 beschreibt ein Problem mit zfs. Dort wird kein Speicherplatz für gelöschte Dateien freigegeben, da die Inodes der Datei nicht aus dem Inode-Cache des Kernels entfernt werden, wenn nfs über zfs verwendet wird.

Um aus dem Bug-Thread zu zitieren, schrieb Behlendorf am 6. Januar 2015:

Die aktuelle Vermutung ist, dass der NFS-Server aus irgendeinem Grund eine zwischengespeicherte Version des Datei-Handles verwaltet. Bis der NFS-Server diese Dateizugriffsnummer löscht, kann ZFS die Verknüpfung dieser Datei nicht aufheben. Einige Light-Tests haben gezeigt, dass das Löschen von Caches auf dem Server dazu führt, dass dieser Verweis gelöscht wird (wie das NFS-Dateihandle), und an diesem Punkt wird der Speicherplatz ordnungsgemäß freigegeben. Der Speicherdruck kann auch dazu führen, dass er abfällt.

Das heißt, ein nächtliches Echo 3> / proc / sys / vm / drop_caches ist die einfachste Lösung für diesen Fehler, wenn Sie keine Ausfallzeit für die Restrukturierung Ihres ZFS haben möchten.

Also vielleicht kein Cargo Cult Admining, aber ein ziemlich gutes Debugging war der Grund.

Iridos
quelle
0

Dies kann bei NUMA-Systemen (Non Uniform Memory Access) sinnvoll sein, bei denen normalerweise jede CPU (Socket) transparent auf den gesamten Speicher zugreifen kann, der Zugriff auf den eigenen Speicher jedoch in Verbindung mit parallelen HPC-Anwendungen schneller als bei anderen Sockets.

Bei vielen einfachen parallelen Anwendungen werden Datei-E / A-Vorgänge in einem einzigen Prozess ausgeführt, sodass beim Verlassen ein großer Teil des Arbeitsspeichers auf einem einzelnen NUMA-Knoten verbleibt, der dem Festplatten-Cache zugewiesen ist, während auf dem anderen NUMA-Knoten der Arbeitsspeicher möglicherweise größtenteils frei ist. In diesen Situationen werden Prozesse, die auf dem NUMA-Knoten ausgeführt werden, dessen Speicher dem Cache zugewiesen ist, gezwungen, Speicher auf dem anderen NUMA-Knoten zuzuweisen, da der Cache-Rückforderungsprozess im Linux-Kernel meines Wissens immer noch nicht NUMA-fähig ist. Solange auf dem anderen Knoten freier Arbeitsspeicher vorhanden ist, werden die Leistungen beeinträchtigt.

In einem HPC-System ist es jedoch sinnvoller, den Cache zu bereinigen, bevor ein neuer Benutzerjob gestartet wird, und nicht zu einem bestimmten Zeitpunkt mit cron.

Für nicht parallele Anwendungen ist es unwahrscheinlich, dass dieses Problem auftritt.

Davide
quelle
0

Wenn Ihr Seiten-Cache ziemlich groß ist (viel größer als Ihre derzeitige Auslagerungsnutzung) und das Ein- und Auslagern abwechselnd erfolgt, müssen Sie die Caches löschen. Ich habe Fälle erlebt, in denen die Speichernutzung auf einem meiner MariaDB-Datenbankserver mit Ubuntu 16.04LTS zunimmt und Linux nur die Auslagerungsnutzung erhöht, anstatt nicht verwendete Seiten-Caches zu entfernen. Transparente riesige Seiten sind in meinem System bereits deaktiviert, da TokuDB die Deaktivierung erforderlich machte. Wie auch immer, vielleicht ist es kein Fehler, aber Linux, das dieses Verhalten immer noch ausführt, ist für mich ziemlich verwirrend. Verschiedene Quellen gaben an, dass Linux den Seiten-Cache entfernen würde, wenn die Anwendung dies anforderte:

Aber die Realität ist nicht so einfach. Die Problemumgehung lautet entweder:

  1. Führen Sie den Drop-Cache regelmäßig aus
  2. Führen Sie den Drop-Cache bei Bedarf aus (überwachen Sie das Auslagern von Aktivitäten mithilfe von vmstat 1).
  3. Raten Sie Linux, bestimmte Dateien mit einem Hilfsprogramm wie dd oder python-fadvise aus dem Cache zu entfernen (z. B. Apache-Protokolldateien). Siehe https://unix.stackexchange.com/questions/36907/drop-a-specific-file-from-the-linux-filesystem-cache

Beispiel dd run:

dd if=/var/log/apache2/access_log.1 iflag=nocache count=0

Beispiel Python-Fadvise:

pyadvise -d /var/log/apache2/access_log.1

YudhiWidyatama
quelle
-5

Ich habe einen Desktop-Computer mit 16 GB RAM, der auf PAE-Kernel ausgeführt wird. Nach ein oder zwei Stunden verschlechtert sich die Festplattenleistung dramatisch, bis ich die Caches lösche und sie einfach in cron lege. Ich weiß nicht, ob dies ein Problem mit dem PAE-Kernel ist oder ob die Cache-Implementierung so langsam ist, wenn genügend Speicher vorhanden ist.

Kyku
quelle
9
Dies ist ein Paradebeispiel für die Systemadministration "Frachtkult": Anstatt das Problem zu lokalisieren und zu lösen, maskieren Sie es einfach.
Michael Hampton
2
Manchmal ist die zweckmäßige Lösung die richtige. Es könnte einfach sein, die Lösung des eigentlichen Problems hinauszuschieben, oder es könnte so viel Lösung sein, wie unter den gegebenen Umständen erforderlich ist. Auch wenn es sich um eine schlechte Praxis handelt, handelt es sich immer noch nicht um einen "Frachtkult". Es gibt eine nachgewiesene Ursache und Wirkung: Das Löschen von Caches und die Leistung der Festplatte werden verbessert.
Dan Pritts
1
Ein Teil der ursprünglichen Definition von CCSA war die Tendenz, Korrelation mit Kausalität zu verwechseln, und hier sind wir. Ein Problem zu maskieren, indem eine korrelierte, aber nicht kausale Entität angesprochen wird, ist eine suboptimale Problemlösung, vor der das Konzept von CCSA zu warnen versucht.
Underscore_d