Search code examples
linuxfilecachingoutputramdisk

caching on ramdisk - finding stalest file to delete


I have a nice caching system in linux that uses a ramdisk to cache both image files and the HTML output of various pages of my website.

My website is rather large and the ramdisk space required to cache everything exceeds 15GB (excluding image output) and I only have 2GB available for the cache.

Writing to and reading from cache is relatively fast but the problem is trying to figure out how to quickly find the stale-most file(s) when I run out of space in order to make room for a new file. I believe using "ls -R" and scanning the large output is a slow process.

My only other option which is inefficient to me is to flush the entire cache frequently in order to never run out of ramdisk space.

My cache allows my website to load many pages with a time to first byte (TTFB) of under 200ms which is what google likes, so I want to try to keep that 200ms as a maximum TTFB value when loading a file from cache, even if files are deleted as a result from lack of ramdisk space.

I thought of using direct access memory via pointers for cache, but because the output to cache is of various sizes, I would feel that option would waste memory space at best or use alot of cpu to find the next free memory location.

Anyone got an idea on how I can quickly seek and then remove the stalest file from my cache?


Solution

  • ls -latr should not be slow while working with a ramdisk. but this may be closer to what you are looking for:

    find -type f -printf '%T+ %p\n' | sort | head -1