2016-04-19 5 views
0

Ich muss Seitencache in Linux Ubuntu reinigen. Es gibt einen Befehl, um den Seitencache echo 1>/proc/sys/vm/drop_caches zu säubern, was über Terminal erledigt werden kann, aber ich muss den Seitencache programmatisch bereinigen. Will diesen Quellcode von drop_caches.c verstehen, d. H. http://www2.comp.ufscar.br/lxr/source/fs/drop_caches.c helfen Sie mir bei der Lösung meines Problems.wie man Seitencache in Linux programmgesteuert reinigen

+1

Bitte schreiben Sie den Code hier in einem [MCVE] –

+2

Das Duplikat ist weg (gelöscht). Da dies nun ein dupe * target * ist, sollte dieses vielleicht geöffnet werden. –

Antwort

0

Sie sind wahrscheinlich stecken mit dem Öffnen der Datei /proc/sys/vm/drop_caches, schreiben 1 zu ihm und schließen Sie es erneut. Es gibt keinen dedizierten Systemaufruf für diese Operation.

sync(); 
int fd = open("/proc/sys/vm/drop_caches", O_WRONLY); 
write(fd, "1", 1); 
close(fd); 

Je nachdem, was Sie versuchen, die (optional) sync() helfen, etwas mehr Speicher freigeben können vorhergehenden zu erreichen.

+0

Dank @Ctx gibt es eine andere Möglichkeit, den Seitencache zu säubern? –

+0

@TalhaA Ich bin ziemlich sicher, dass die sysctl-Schnittstelle die einzige Möglichkeit ist, den Seitencache explizit zu bereinigen. Schreiben Sie "3", um den Verzeichniseintrag und den Inode-Cache zu bereinigen. – Ctx

+0

im Grunde muss ich ein kleines Projekt für ** Cache clean ** in Linux und ich kenne grundlegende Linux-Programmierung, wie fork/exec, Sys-Aufrufe, Module und threading.So was kann ich noch in diesem Cache zu reinigen? –

Verwandte Themen