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



Reply via email to