On 10/22/2013 07:36 PM, James Peach wrote:
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.
As this is performance testing, I'd like to minimize the performance
impact of increasing/decreasing stack size during test (if it exists at
all). Is there any way to obtain current value of stack size by procfs
of commandline?
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