Linux – Tell the linux kernel to put a file in the disk cache

cachekernellinux

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)

Best Answer

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.