i asked something like that once before (though not in terms of
mod_perl) , and was told this:
if the disk doesn't have a lot of read/writes already, the the OS
should optimize a bunch of the filechecking into memory and won't
touch the disk
if it does have a lot of use ( uploads/ shred use as email/imap/
etc ) then use either memcached or another in-memory system /
daemon / socket connection that never touches the disk
i know little of how the kernel handles that sort of stuff
the one thing i'd note about your plan is this:
if you're updating a large hash, then on update that hash will be
copied into each child -- it won't be shared among the apache
children. i'm not sure how the memory mapping works - will all of
the hash be replaced with per-child memory, will only parts. someone
w/more knowledge of the internals would be better off answering
that. but the point is that you end up losing a lot of shared
memory space, which (i think) defeats the point of having a large
hash of data in the first place.
personally, i do a stop/start whenever i need to handle a data change