Cache für Dateien/Verzeichnis deaktivierbar?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Pyromaniac
Beiträge: 12
Registriert: 01.05.2015 10:50:14

Cache für Dateien/Verzeichnis deaktivierbar?

Beitrag von Pyromaniac » 19.08.2015 11:50:16

Hallo alle zusammen!

Ich habe eine Frage bezüglich des Dateien-caches. Kann man diesen Cache für bestimmte Dateien und/oder Verzeichnisse deaktivieren? Es geht mir darum, dass ein Script das ich geschrieben habe, das mir Video-Dateien, welche ich in ein bestimmtes Verzeichnis hochlade, in das x265-Format umwandelt, die eingelesenen und neu erstellten Dateien nicht im Cache ablegt. Ich hoffe man versteht diesen Satz? :)

Also im Prinzip soll alles was sich in dem Verzeichnis (inkl. Unterverzeichnisse) "converter" nicht gecached werden. Ist sowas möglich?

Ich kenne es von der Software "HTS TVheadend", dort kann man das Cachen von den TV-Aufnahmen auch deaktivieren, allerdings stecke ich nicht tief genug in der Materie um zu verstehen wo/wie der Autor das macht. Vorallem macht er es mit C/C++ Code, ich hingegen benutze nur ein shell-script.

Danke schon mal im Voraus
Beste Grüße
Pyro

Milbret
Beiträge: 827
Registriert: 26.05.2008 12:04:54
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Nörten-Hardenberg
Kontaktdaten:

Re: Cache für Dateien/Verzeichnis deaktivierbar?

Beitrag von Milbret » 19.08.2015 12:03:47

Wüsste es auf Anhieb leider nicht.
Aber wozu willst du den Datei Cache dort deaktivieren?
Bei einer HDD würde es die Performance enorm zerstören.
Um RAM zusparen, macht es auch kauim Sinn da der Kernel den Cache selbst verwaltet und frei macht wenn er welchen braucht.

Ohne Hintergrundwissen, was der Zweck sein soll, würde ich da kaum einen Nutzen sehen.
Gerade wenn Daten im Cache, also direkt im RAM abgelegt, gelesen/geschrieben oder verarbeitet werden können, würde ich dies so lassen.
Direkt auf SSD/HDD arbeiten ist dort um einige größen langsamer.
Auch wenn SSDs hier noch mehr Tempo haben können also HDDs.

Nachtrag:
Hier wäre was für dich:
https://github.com/Feh/nocache

Aber ob es sinnvoll ist, kann ich eben mangels Erfahrungen zum Thema Video Konverter und deinem Vorhaben nicht sagen.
Aktuell schätze ich es aber als eher falschen Ansatz ein.
Würde mich aber freuen, wenn du mich hier etwas aufklären könntest.

Martin
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever :D

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Cache für Dateien/Verzeichnis deaktivierbar?

Beitrag von rendegast » 19.08.2015 12:58:36

@Milbret
was aber, wenn die bearbeiteten Datein so groß oder größer als vorhandenes RAM sind?
Das Laden resp. Kopieren/Bearbeiten einer solchen Datei dürfte den "guten" Cache leeren, den mit den Libs, Programmen, Benutzer-/Konfig-Dateien.
Hier sollte das Cachen dann vielleicht eher dem verwendeten Programm/Converter überlassen werden (falls möglich).
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Milbret
Beiträge: 827
Registriert: 26.05.2008 12:04:54
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Nörten-Hardenberg
Kontaktdaten:

Re: Cache für Dateien/Verzeichnis deaktivierbar?

Beitrag von Milbret » 19.08.2015 13:03:28

@rendegast
Spielt keine Rolle.
Soweit mir bekannt ist, wird nicht die gesamte sondern nur Teile davon gecacht (Page Cache).
Und selbst wenn dem nicht so sein sollte, wäre der Kernel klug genug das zu merken.

Aber dafür bin ich in dem Thema nicht tief genug drin.
Trotzdem halte ich den Ansatz zum abschalten als falschen Ansatz.

Martin
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever :D

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Cache für Dateien/Verzeichnis deaktivierbar?

Beitrag von rendegast » 19.08.2015 13:30:04

Wobei das Abschalten wohl auch nicht trivial ist
google: "linux page-cache bypass"
bringt mensch zum O_DIRECT resp. dessen De-/Aktivierung.
Programme machen das wohl gelegentlich, Beispiele wurden erwähnt DB,
und es dürften wohl root-Rechte nötig sein.
wird nicht die gesamte sondern nur Teile davon gecacht (Page Cache).
Und selbst wenn dem nicht so sein sollte, wäre der Kernel klug genug das zu merken.
Meine Versuche dazu sind eine Weile her, und insoweit grobschlächtig, daß ich "ganze" große Dateien herumschob.
Ein Ergebnis war, daß eine Datei auf einem tmpfs nicht im Cache landet.
Ein anderes, daß ich den Cache auffüllen und das System zum swap-Schreiben bringen kann, letztlich auch den "guten" Cache wohl geleert habe.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
Pyromaniac
Beiträge: 12
Registriert: 01.05.2015 10:50:14

Re: Cache für Dateien/Verzeichnis deaktivierbar?

Beitrag von Pyromaniac » 20.08.2015 12:09:28

Also zuerst: danke schon mal für die Antworten :THX: auch wenn es so scheint als würde ich in der Hinsicht nicht weiterkommen. :(

Um die Idee dahinter etwas genauer zu erklären:

Der cache ist ja dazu da Datei-Zugriffe zu beschleunigen, dazu zählen ja auch Programm-Starts. Wenn ich den Konverter nicht laufen lasse, dann ist das Einloggen, Updaten usw. auf dem Server wahnsinnig schnell. Zugriffe und logins sind innerhalb eines Bruchteils einer Sekunde durchgeführt. Auch der Zugriff auf "OwnCloud" ist recht fix.

Mit dem laufenden Konverter und dem cache voller Video-Daten dauert das schon merklich länger, vor allem wird Owncloud sehr stark ausgebremst. Erstmal nicht sooo schlimm, aber doch optimierungsfähig. Vor allem "nervt" mich eben die Tatsache, dass es unnötig ist diese riesigen Daten zu cachen. Wenn die Aufnahmen konvertiert werden, dann passiert das mit der niedrigsten Priorität und nur sehr langsam, da der x265-Condec scheinbar so komplex ist, dass meine CPU niemals annähernd so schnell arbeitet, dass die Festplatte gefordert werden könnte. Somit ist es total unnötig die Video-Daten im Cache zu halten. Auch wenn die Videos fertig sind und ich sie dann auf mein NAS kopiere, wäre es nicht nötig die Daten "schnell" aus dem Cache zu lesen.

Also wie schon geschrieben, eigentlich nur halb so schlimm, aber doch mit Verbesserungspotenzial.

Ich hoffe das ist einigermaßen verständlich rübergekommen. :)


Kann man das Cache-System vielleicht auch anordnen gewissen Dateien ab (z.B.) 2 GB nicht im Cache aufzunehmen?

Milbret
Beiträge: 827
Registriert: 26.05.2008 12:04:54
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Nörten-Hardenberg
Kontaktdaten:

Re: Cache für Dateien/Verzeichnis deaktivierbar?

Beitrag von Milbret » 20.08.2015 14:16:30

Ich vermute eher, dass der Codec deine CPU voll auslastet.
Das bremst dann das gesamte System aus.

Hast du mal mit Tools wie htop, atop, iotop geschaut wie die Last deines Systems aussieht?
Gerade atop sollte dir hier die brauchbarste Übersicht liefern können.
Ich vermute eher mal, dass die Festplatte und die CPU ausgelastet sein dürfte.
Hier wäre es auch informativ was für Platten du verwendest.
Also z.B. eine SSD oder eher eine HDD.
Auch wäre wichtig auf welcher Platte deine Verarbeitung statt findet.
Wenn dein System und dein Konverter auf der Selben Platte rödeln, würde das abschalten des Caches die Situation doch eher verschlimmern.
Aber ob dies der Fall ist, müsste man testen.

Martin
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever :D

Benutzeravatar
Pyromaniac
Beiträge: 12
Registriert: 01.05.2015 10:50:14

Re: Cache für Dateien/Verzeichnis deaktivierbar?

Beitrag von Pyromaniac » 20.08.2015 15:39:46

Milbret hat geschrieben:Ich vermute eher, dass der Codec deine CPU voll auslastet.
Das bremst dann das gesamte System aus.
Naaa, das glaube ich jetzt nicht. Aus folgendem Grund: Sagen wir mal ich logge mich morgens eins, es dauert ein paar Sekunden bis alles soweit ist und ich mein "sudo update..." eingeben kann. Wenn es an der CPU-Auslastung liegen würde, dann würde ich genau das gleiche Verhalten kriegen, wenn ich mich auslogge und sofort wieder einlogge. Aber genau das ist nicht der Fall. Wenn ich etwas vergessen habe und mich gleich wieder einlogge, dann geht das quasi sofort, eben ohne dass noch etwas nachgeladen werden muss, da ja die wichtigen Sachen im Cache sind. Viel übler ist genau dieses Verhalten bei Zugriffen auf die "OwnCloud" zu beobachten. Ich sehe ja auch immer die HDD-LED leuchten wenn es mal ein paar Sekunden länger dauert. Wenn ich nichts am Server mache, dann blinkt die LED hin und wieder auf, weil dann eben wieder ein paar Frames geladen/geschrieben werden. Aber auf Dauer (sagen wir mal nach 1-2 Stunden oder mehr) nehmen eben genau diese ganzen Frames den Cache voll ein.
Milbret hat geschrieben: Hast du mal mit Tools wie htop, atop, iotop geschaut wie die Last deines Systems aussieht?
Ja, habe ich natürlich gemacht. Die CPU-Auslastung ist dauerhaft, solange der Konverter läuft, auf nahezu 100%, so wie es ja auch sein soll, ich will ja auf die Konvertierung nicht länger warten als nötig ;)
Aber dennoch läuft das Ganze mit einem Nice-Wert von 19. Denn unter allen Services die dort laufen, soll der Konverter die niedrigste Prio haben. Das alles funktioniert auch wunderbar. Wenn ich mal ein Programm mittels TV-Headend streame, dann habe ich nie Ruckler, FTP-Übertragungen laufen auch flott ab. Unter diesen "aufwendigeren" Situationen sieht man mit "htop" auch wunderbar dass der niedrigpriorisierte Prozess (also ffmpeg) auch deutlich weniger CPU-Last erhält. Ich bin mir somit 100% sicher, dass die Last-Verteilung für die CPU bestens, genau so wie erwartet arbeitet.

Mit "iotop" habe ich übrigens alle paar Sekunden 50-150 Kilobyte Lese-/Schreibzugriffe die eben von ffmpeg kommen.
Milbret hat geschrieben: Gerade atop sollte dir hier die brauchbarste Übersicht liefern können.
Ich vermute eher mal, dass die Festplatte und die CPU ausgelastet sein dürfte.
Hier wäre es auch informativ was für Platten du verwendest.
Also z.B. eine SSD oder eher eine HDD.
Auch wäre wichtig auf welcher Platte deine Verarbeitung statt findet.
Wenn dein System und dein Konverter auf der Selben Platte rödeln, würde das abschalten des Caches die Situation doch eher verschlimmern.
Aber ob dies der Fall ist, müsste man testen.

Martin
Ja klar, eine schnellere HDD könnte auch Abhilfe schaffen, vor allem mit einer SSD hätte ich dann wohl keine Probleme mehr in der Hinsicht. Allerdings würde ich es gerne vermeiden alles neu aufzusetzen und mir eine 1TB große SSD zu kaufen ;) So groß ist nämlich meine 2,5" HDD, auf der TV-Aufnahmen und Linux-Torrents ihren Platz finden.

Der "Server" ist übrigens ein Intel NUC DN2820FYKH mit 4GB Ram, falls das auch noch irgendwie von Interesse sein sollte.

Und dass mir jetzt keiner von den Profis hier ankommt :D das ist mein Privat-Server mit privaten Diensten wie der Owncloud und etwas TV-Streaming+Rec+Konverter, dafür hat er genug Power. Besonders bei gerade mal 6-7 Watt und 0dB Lärm :THX:

pferdefreund
Beiträge: 3799
Registriert: 26.02.2009 14:35:56

Re: Cache für Dateien/Verzeichnis deaktivierbar?

Beitrag von pferdefreund » 20.08.2015 19:23:31

Eventuell einfach ständig ne Screen-Session laufen lassen und die auf z. B -15 renicen. Dann sollte das Arbeiten usw parallel zum Konverter wohl flotter gehen, so man per ssh mal schnell eben...

Benutzeravatar
Pyromaniac
Beiträge: 12
Registriert: 01.05.2015 10:50:14

Re: Cache für Dateien/Verzeichnis deaktivierbar?

Beitrag von Pyromaniac » 21.08.2015 09:42:35

Der nice-Wert beeinflusst doch nur die CPU-Resourcen, oder? Die sind ja aber bereits gut aufgeteilt.

Solange ich eingeloggt bin und "arbeite", läuft alles absolut schnell, es gibt keinen Grund sich zu beschweren, auch nach Stunden. Also ist die CPU-Last genau richtig aufgeteilt, der ffmpeg-Prozess steht auf "19" und nimmt die CPU nur dann in Anspruch, wenn sonst kein Prozess sie braucht.

Erst wenn ich längere Zeit (also 1-2 Stunden oder mehr, z.B. nach einer Nacht) nichts am Server zu tun hatte, ist der Cache voller "sinnloser" Video-Daten die er ja abgearbeitet hat.
Und wenn ich mich JETZT einlogge, muss der Cache ja erstmal wieder von den Video-Daten freigeräumt, bzw. mit nützlicheren Daten befüllen werden, sobald ich eben wieder im System drin bin.

Es geht mir ja nur darum, dass der Cache nicht mit Video-Daten zugemüllt wird, die CPU-Last ist ja bereits bestens aufgeteilt.

Milbret
Beiträge: 827
Registriert: 26.05.2008 12:04:54
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Nörten-Hardenberg
Kontaktdaten:

Re: Cache für Dateien/Verzeichnis deaktivierbar?

Beitrag von Milbret » 21.08.2015 11:10:34

Hast du auch mal sicherheitshalber mit atop geschaut, ob ggf. nicht doch die HDD belastet wurde?

Ansonsten kann ich dir eben nur empfehlen mal zu schauen ob du nocache bei dir bauen und nutzen kannst.
Eine andere und vorallem bessere Alternative gibt es auf Shell Ebene wohl nicht.
Hatte Gestern nochmal google genutzt, konnte aber keinen einfachen Lösungsansatz finden.
Meistens kamen irgendwelche Ansätz mit Mount Optionen mit sync.
Wäre auch eine Alternative, dann müsstest du aber eine eigene Partition für deinen Vodekonverter anlegen und mounten.

Martin
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever :D

Antworten