On 10/23/2013 07:22 AM, Leif Hedstrom wrote:
On Oct 22, 2013, at 10:36 AM, James Peach <[email protected]> wrote:
I've found that memory-related options have a great impact on performance:
CONFIG proxy.config.thread.default.stacksize INT 536870912
512MB stack size for thread? Wow, that seems like an awful lot.
The history on this setting is long and strange. The defaults were set
arbitrarily high to avoid a problem that looked like an out of memory event (on
the cache). Increasing this setting also came together with increasing the
appropriate sysctl:
vm.max_map_count = 2097152
It might be time to revisit this again. I filed a Jira on this a while back:
https://issues.apache.org/jira/browse/TS-1822
As to why this would reduce lock contention, I have no idea. I'm positive it was added
purely to address a false positive "out of memory" problem. Bryan, can you look
this up in Bugzilla? Probably from around 1997 or so, by Vladimir.
I suspect you are talking about proxy.config.system.mmap_max. Is it safe
to set ATS config value and kernel setting value to something like
RAM*vm.swappiness? Could this cause performance or overall system
instability?
CONFIG proxy.config.allocator.thread_freelist_size INT 524288
This is incredibly high, but probably fine. The default is 512 objects for each freelist
for each thread. We probably should allow for a "-1" to mean unlimited (which
the above basically means).
I don't like to be annoying, but can you (or anybody else) bring a bit
more light on freelist entity itself for not-developer (i.e. I cannot
look into code). E.g. 'Each thread has his list of objects (responses
and requests, what else?) (?) that the thread is currently processes. If
the freelist is full at the moment when request/reply arrives, the
request is ... (dropped, stored into intermediate place, postponed?).
The value for this option should be choosen based on average (maximal?)
request rate (x2 for request and response?) and amount of available
memory (thread will consume about freelist_size*average_response_size in
memory?)...'. Is there any way to get at least rough current value of
objects in freelist (for individual thread or all the threads) during
ATS execution?
Cheers,
-- Leif