My PC has 8 Gb of ram. Is there any way to make ubuntu use most of it? I mean rarely drop caches and keep once opened programms in ram longer, preload apps on boot, etc.
2 Answers
You could make a ramdisk for certain directories using tmpfs
For example for the ~/.cache/
directory, which google chrome and chromium use to cache data, the entry in /etc/fstab
would be:
tmpfs /home/your_username/.cache tmpfs defaults,size=1024M 0 0
However, it should be noted that the contents get lost with each reboot.
Anther suitable directoriy might be /tmp
. Note that you can specify the size of the tmpfs in absolute or relative (to your RAM) values:
Use 1G of your RAM:
tmpfs /tmp tmpfs nosuid,size=1G 0 0
or, use 10% of your available RAM:
tmpfs /tmp tmpfs nosuid,size=10% 0 0
Preloading should be easy enough -- since linux caches/buffers as much as possible, simply cat the libs/binaries you want to "preload" to /dev/null -- that should warm up the cache. Start a script like the following at boot:
#/bin/bash
PROGS=("/usr/bin/jiha" "/usr/bin/doho")
for i in "${PROGS[@]}"; do
cat $i > /dev/null
for j in $(ldd "$i"); do # this does not work -- need to filter ldd output (awk)
cat $j > /dev/null
done
done
This will waste a lot of time by cat'ing some libraries again and again, it is a bit more complicated to preload the needed libraries only once - but the impact depends on the length of the PROGS-array.
The rest (rarely drop caches, ...) is pretty much taken care of by the system by default -- it takes what it can use and let it go only if need be.
HTH
-
Will this negatively impact disk i/o? Also, is it significantly different from just installing
preload
? Interesting question & answer though, I'm in the same situation as OP and I've just never seen >50% RAM usage. Oct 4, 2012 at 16:18 -
1preload AFAIU will preload during operation based on programs/files opened by the user; this simple approach will prolong boot time, but speed up load-time of just the wanted apps, nothing more. Oct 4, 2012 at 19:23
-
1buffered/cached portions of the ram are shown as free in most tools -- as they will be freed if needed; but linux will cache every file you access as long as it can. If the total amount of memory used in your machine, including buffers/caches, never reaches 50% -- you have too much RAM for what you do :-) Oct 4, 2012 at 19:28
-
Good to know, thanks. Ram is so cheap any more I just get extra. Nice for running the occasional VM, but probably not necessary. Oct 4, 2012 at 19:32
-
Yes, it's nice not to run out of memory - absolutely worth it. Jumped to 8G on both machines (work/home) - just nice. Oct 4, 2012 at 19:43