Ich muss so viel wie möglich von einer großen Datei im Block-Cache des Betriebssystems behalten, auch wenn sie größer ist, als ich in den Ram passen kann, und ich lese ständig eine andere sehr große Datei. ATM Ich werde große Stücke der großen wichtigen Datei aus dem System-Cache entfernen, wenn ich eine andere Datei lese.
Antworten
Zu viele Anzeigen?Unter Linux können Sie ein Dateisystem mit dem Typ tmpfs der bei Bedarf den verfügbaren Swap-Speicher als Backup verwendet. Sie sollten in der Lage sein, ein Dateisystem zu erstellen, das größer ist als Ihr Arbeitsspeicher, und es wird den Inhalt dieses Dateisystems im System-Cache priorisieren.
mount -t tmpfs none /mnt/point
Siehe: http://lxr.linux.no/linux/Documentation/filesystems/tmpfs.txt
Sie können auch von den folgenden Dateien profitieren swapiness
y drop_cache
innerhalb /proc/sys/vm
In einem POSIX-System wie Linux oder Solaris sollten Sie posix_fadvise verwenden.
Gehen Sie in der Streaming-Datei etwa so vor:
posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);
while( bytes > 0 ) {
bytes = pread(fd, buffer, 64 * 1024, current_pos);
current_pos += 64 * 1024;
posix_fadvise(fd, 0, current_pos, POSIX_FADV_DONTNEED);
}
Und Sie können POSIX_FADV_WILLNEED auf Ihre andere Datei anwenden, was ihre Speicherpriorität erhöhen sollte.
Ich weiß, dass Windows Vista und Server 2008 auch raffinierte Tricks mit Speicherprioritäten anwenden können. Wahrscheinlich können auch ältere Versionen wie XP einfachere Tricks anwenden. Aber ich kenne die Funktionen nicht auswendig und habe keine Zeit, sie nachzuschlagen.
Einige Betriebssysteme verfügen über Ramdisks, die Sie verwenden können, um ein Segment des Speichers für die Speicherung zu reservieren und dann als Dateisystem zu mounten.
Was ich allerdings nicht verstehe, ist, warum Sie das Betriebssystem daran hindern wollen, die Datei zwischenzuspeichern. Ihre gesamte Frage ergibt für mich keinen Sinn.
Kaufen Sie mehr Arbeitsspeicher (der ist relativ billig!) oder lassen Sie das Betriebssystem sein Ding machen. Ich denke, Sie werden feststellen, dass die Umgehung des Betriebssystems mehr Aufwand bedeutet, als es wert ist. Das Betriebssystem wird so viel von der Datei zwischenspeichern, bis Ihre oder eine andere Anwendung Speicher benötigt.
Ich denke, man könnte die Anzahl der Prozesse minimieren, aber es ist wahrscheinlich schneller, mehr Speicher zu kaufen.
- See previous answers
- Weitere Antworten anzeigen