Linux deaktiviert den Festplatten-Cache für einen einzelnen Befehl

7

Unser Server arbeitet anständig, aber wenn Sicherungen oder andere Scanvorgänge ausgeführt werden, wird der gesamte Server ausgelagert. So etwas clamdläuft und scannt viele Dateien. Obwohl wir eine langsame Leistung erwarten, wird unser Cache zerstört und das Endergebnis ist, dass wir kein System bekommen, das irgendetwas kann.

Gibt es eine Möglichkeit, das Zwischenspeichern von Datenträgern / Datenträgern für einen einzelnen Befehl zu deaktivieren? Die Idee wäre, es so laufen zu lassen:

# ./nocache clamd

Während der Ausführung clamdwird dann der vorbereitete Cache beim Lesen aller Dateien auf dem System nicht zerstört.

Kristopher Ives
quelle

Antworten:

2

Es muss im Programm selbst implementiert werden. Wenn clamddies noch nicht geschehen ist, können Sie Änderungen vornehmen clamd, um einen unnötig großen Cache-Platzbedarf zu vermeiden, indem Sie Funktionen wie posix_fadvise(... POSIX_FADV_NOREUSE)oder madvise(... MADV_DONTNEED)aufrufen (wenn der Speicher die Dateien abbildet). Es werden jedoch weiterhin Dateisystem-Metadaten aus dem Cache verschoben. Daran kann man nicht viel ändern.

David Schwartz
quelle
Leider haben wir keinen Weg auf Benutzerebene, aber danke für die Informationen. Ein Verrückter könnte einen Hook verwenden oder einen Prozess erstellen, der den anderen Code ausführt, der diese POSIX-Funktion aufgerufen hat (oder LD_LIB verwendet)
Kristopher Ives
4

Es ist nicht wirklich die Antwort, nach der Sie suchen, aber wir verwenden ionice nur für Backups und Scans, damit sie die anderen Programme auf dem Server nicht beeinflussen.

ionice -c3 clamd
Jure1873
quelle