Geoip cache options patch
ngx.eugaia at gmail.com
Tue Dec 21 03:08:07 MSK 2010
On 21/12/2010 01:24, Akins, Brian wrote:
> On 12/20/10 5:56 PM, "Eugaia"<ngx.eugaia at gmail.com> wrote:
>> Each worker process will see virtual data usage of 50MB for the data,
>> but unless I'm mistaken, the overall system usage should still only be
>> 50MB because the data is shared in the same physical memory by the OS
>> until such a time that it's changed (which it won't unless you re-read
>> the config, and in which case it would change for all worker processes).
> I think with the memory cache it reads the entire geoip datafile into memory
> for each worker process
The reading of the data is done by the master process at conf-read time,
and this happens before the main process forks to the worker processes.
> - and the memory shows as resident for each process.
> At least when I switched to using mmap cache, the memory moved from resident
> to shared.
According to :
(and I'm assuming whatever OS you're using does this), the pages for the
child process are shared with the parent process, until they are
changed. Since the data is being read into pool-allocated pages that
won't (under normal circumstances) change once you fork to the child
process, these pages will remain unchanged and will (probably) still be
shared between all process, master and worker.
I'm guessing that although the underlying pages are probably shared, the
data utilized by each process will probably show as being 'resident',
and thus this can't be used as a good indicator to the actual total
physical memory usage.
Nevertheless, adding a mmaping option is a nice addition.
More information about the nginx-devel