On Oct 22, 2013, at 6:17 AM, Pavel Kazlenka 
<[email protected]> wrote:

> Thank you all for your replies. I have new questions here.
> 
> I'm trying to estimate performance of single ATS 'network' (main) thread 
> (hope I'm using correct term). My thread-related configuration:
> ONFIG proxy.config.exec_thread.autoconfig INT 0
> CONFIG proxy.config.exec_thread.autoconfig.scale FLOAT 1.000000
> CONFIG proxy.config.exec_thread.limit INT 1
> CONFIG proxy.config.accept_threads INT 1
> CONFIG proxy.config.cache.threads_per_disk INT 0
> CONFIG proxy.config.ssl.number.threads INT 0
> CONFIG proxy.config.task_threads INT 1
> #Caching is off:
> CONFIG proxy.config.http.cache.http INT 0
> 
> 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.

> CONFIG proxy.config.allocator.thread_freelist_size INT 524288
> CONFIG proxy.config.system.mmap_max INT 5368709120

This setting ends up calling mallopt(M_MMAP_MAX), see 
<http://man7.org/linux/man-pages/man3/mallopt.3.html>. From the description in 
the man page, I'd be surprised if setting this was useful in most cases.

> 
> My problem is that default values for the variables given above are extremely 
> conservative. On the other hand, it's hard to pick up the good values for 
> such a great range. Especially while these options are not really good 
> documented.
> So my questions are:
> 1) What should be good values for machine with 6GB RAM for the three 
> variables above (assuming that the only purpose of machine is running single 
> thread of ATS to forward traffic with high rate and minimal delay)?
> 2) Is there any guide/detailed documentation on these options?
> 3) May be there's some kind of formulas based on common sense that could help 
> to choose variables values based on proxy load (requests per second)?

proxy.config.allocator.thread_freelist_size seems like a reasonable setting to 
tune. This is going to control how much memory will be permanently allocated to 
per-thread magazines. It's a tuning balance between how much memory you need to 
allocate to servicing transactions and how much memory should be used for RAM 
cache and other processes that are running on the box.

FWIW I run my systems with proxy.config.allocator.thread_freelist_size=16K, 
though my workload and hardware configuration is pretty different from yours.

> Device under test is Ubuntu 12.04 LTS, 64 bit, 6GB RAM, expected load is up 
> to 15k requests per second.
> 
> TIA,
> Pavel
> 
> On 10/17/2013 10:07 PM, Igor Galić wrote:
>> 
>> ----- Original Message -----
>>> Thank you Igor.
>>> 
>>> I've rebuilt ATS with hwloc and things became a bit better. Now I see
>>> that load is being balanced fairly between configured number of threads
>> Thank you very much for this feedback.
>> I knew that this code paths have an impact (I've hacked bits of it too)
>> but since I always compile --with-hwloc, I've never saw the difference.
>> 
>> 
>> ++i
>> 
>> Igor Galić
>> 
>> Tel: +43 (0) 664 886 22 883
>> Mail: [email protected]
>> URL: http://brainsware.org/
>> GPG: 6880 4155 74BD FD7C B515  2EA5 4B1D 9E08 A097 C9AE
>> 
> 

Reply via email to