Sometimes I see my swap file is a bit bigger then usual. I tried sync && echo 3 > /proc/sys/vm/drop_caches
to no avail. But when I tried swapoff -a
it takes a bit longer but the swap file is smaller after. How can I clear my swap file without using swapoff
?
-
3Unless you are doing benchmarks, you never want to do this. – jordanm Nov 05 '12 at 19:31
-
1But my OS is working better when I drop caches with swapoff? Can you explain? – Micromega Nov 05 '12 at 19:35
-
4You seem to be confusing swap and cache. They are almost opposite concepts. – Stéphane Chazelas Nov 05 '12 at 19:42
-
Ok. It's trial and error? But how can I clean my memory? What is drop-caches? Why when I drop swap and remount swap swap file is smaller? – Micromega Nov 05 '12 at 19:50
1 Answers
3 > drop_caches
instructs the kernel to discard all the cached data (that are not needed any more).
swapoff
will try to pull as much of the data, that are currently on swap, as it can back into memory. It may also trigger dropping some cached pages to make room for what is coming into memory from the swap file.
You really only seldom need to do this, the kernel does a rather good job on deciding what to do with what data (e.g. if you are working with a big file it might cache it and swap out the memory allocated to some other running process that isn't very active).
I'm not sure whether you are really using a swap file as such (i.e. a file on a regular filesystem) or just misinterpreting the output of free
, but if you do, what could actually help is a dedicated swap partition, as you won't encounter any possible filesystem overhead (but the space would be reserved for kernel to use of course).
By the way, if you use tmpfs
(usually mounted at /dev/shm
and these days often at /run
and some other places as well), any files held there will show up as "cached" in free

- 30,838
-
I don't use free and I have 2 swap partitions. I use cat /proc/swaps and I noticed a little increase. My box has only 256 mb ram and I use ramzswap to help but I always run out of memory. – Micromega Nov 05 '12 at 22:20
-
-
@Chiyou not necessarily - as the processes access disk, data get cached and other data swapped out. You might also wan to check swappiness in
/proc/sys/vm/swappiness
(also see question on swappines). – peterph Nov 05 '12 at 23:46 -
My swappiness is 30. I don't want to swap much because my hard disk is very slow. What would help is more RAM but thats impossible. My box is a handset. – Micromega Nov 05 '12 at 23:51
-
How about cutting down the number of processes? Isn't there anything running that you could go without? – peterph Nov 06 '12 at 00:09
-
Good question. I already mlock() xserver but I can't remove anything because else the device reboot. There is some kind of watchdog when I terminate some process or unload unnecessary modules with rmmod the device reboots or the process reloads. I think its because of the phone function which is a core function and although I don't need it very often. I used my mobile more like a ultra mini tablet. Freshly rebooted with 1 application started it uses 512 MB ram but it has only 256 mb physically. And this is with ramzswap. it has – Micromega Nov 06 '12 at 00:28
-