Take the 2-minute tour ×

Is there any command to for a file to be read in and loaded into the linux disk cache? This is on an up-to-date debian system.

I know in the general case, it's better to let the linux kernel figure this out. But I have an edge case. I have a laptop that has an NFS director mounted, and i want to play a long video file, but I don't want to have a network problem interrupt the playnig. I know that (largeish) file will be read in it's entirety later on. I know that nothing else (really) will be running while playing this video. There is enough free memory to store this file.

(I know I could just copy the file into a new tmpfs filesystem, but I'm curious if there's an even shorter way to do it)

share|improve this question

2 Answers 2

A small program that mmap()ed the file with the MAP_LOCKED flag set would do the trick. You'll need to run this program as root, or a user with an RLIMIT_MEMLOCK value greater than the size of the file you want to map.

As SaveTheRbtz has mentioned, vmtouch has this capability built-in. The manpage suggests that vmtouch -l /some/file will do the trick.

share|improve this answer
And don't forget to munlock() that file afterwards again! :) –  Michuelnik Jul 10 '12 at 12:51
Not necessary; as per mlock(2), "Memory locks are [...] automatically removed (unlocked) [...] when the process terminates.". –  womble Jul 10 '12 at 15:57
There is a tool for that: hoytech.com/vmtouch –  SaveTheRbtz Jul 12 '12 at 8:38
@SaveTheRbtz: Thanks for that -- I expected someone would have written it already. –  womble Jul 12 '12 at 9:22

If you really control the local environment that strictly, a simple cat $file >/dev/null should be sufficient. It's quite non-deterministic, when cache eviction removes that file - but if you have plenty of RAM and noone consuming it, it should be kept.

If there is a sticky and deterministic way to keep a file in cache - dunno...

share|improve this answer
Is that guaranteed to put the file into the cache though? –  Rory Jul 10 '12 at 16:12
Yes, thats the way it works. It's read through the cache. –  Michuelnik Jul 11 '12 at 14:13

Your Answer


