From b1b5793d26195689a29ade3f8bd9903cc046fd84 Mon Sep 17 00:00:00 2001 From: Wolfgang Draxinger Date: Mon, 6 Apr 2015 01:19:07 +0200 Subject: info message, README updated --- README | 27 ++++++++++++++++----------- fmlock.c | 2 ++ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/README b/README index 684a286..cad20e8 100644 --- a/README +++ b/README @@ -1,12 +1,17 @@ -== fmlock -- map a file into memory and lock it to RAM == +== fmlock -- map files into memory and lock them to RAM == -fmlock is a small tool intended to load a file into the -block I/O cache and lock it there. This is done by mmap-ing -the whole file and calling mlock on the address space -occupied by the file. Then the program puts itself to sleep -until a signal arrives. The purpose of this is that (large) -files can be preloaded into RAM, specifically the block I/O -cache for other processes to read from. This is for example -required to measure the RAM bandwidth and CPU limited -throughput of data processing code, working on real data -without getting effected by I/O bottlenecks. +fmlock is a small tool intended to load file into the block I/O cache and lock +them there. This is done by mmap-ing the whole file and calling mlock on the +address space occupied by the file. In addition the whole file is read to heat +the cache; this should not be necessary, but some systems may require this, for +this tool to be effective.o + +Once the files are locked into memory and the cache is hot the program puts +itself to sleep until a signal arrives. Once the program is sleeping that's it. +Any changes to the files that'd require to remap the files are not caught by +fmlock and the cache on any changed or grown pages may become cold over time. + +The purpose of this is that (large) files can be preloaded into RAM, namely the +block I/O cache for other processes to read from. This is for example required +to measure the RAM bandwidth and CPU limited throughput of data processing code, +working on real data without getting effected by I/O bottlenecks. diff --git a/fmlock.c b/fmlock.c index 4ea68d0..fa4f3c9 100644 --- a/fmlock.c +++ b/fmlock.c @@ -103,6 +103,8 @@ int main(int argc, char *argv[]) return 1; } + fprintf(stderr, "Files locked and cache heated up. Going to sleep, .zZ...\n"); + /* At this point the program shall sleep until a terminating * signal arrives. To do so a nice side effect of the definition * of /dev/null behavior is used: read on a /dev/null fd always -- cgit v1.2.3