https://issues.apache.org/bugzilla/show_bug.cgi?id=56279

            Bug ID: 56279
           Summary: [PATCH]prefork_mpm patch
           Product: Apache httpd-2
           Version: 2.5-HEAD
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: mpm_prefork
          Assignee: [email protected]
          Reporter: [email protected]

Created attachment 31396
  --> https://issues.apache.org/bugzilla/attachment.cgi?id=31396&action=edit
[PATCH]prefork_mpm patch

This patch is originally part of the patch# 55897. Based on the feedback from
httpd developer community, we decided to separate the original patch into two
different patches. The SO_REUSEPORT patch and this bucket patch. Here is the
information on this bucket patch: 

Our analysis of Apache httpd 2.4.7 prefork mpm, on 32 and 64 thread Intel Xeon
2600 series systems, using an open source three tier social networking web
server workload, revealed performance scaling issues.  In current software
single listen statement (listen 80) provides better scalability due to
un-serialized accept. However, when system is under very high load, this can
lead to big number of child processes stuck in D state. On the other hand, the
serialized accept approach cannot scale with the high load either.  In our
analysis, a 32-thread system, with 2 listen statements specified, could scale
to just 70% utilization, and a 64-thread system, with signal listen statement
specified (listen 80, 4 network interfaces), could scale to only 60%
utilization. 

Based on those findings, we created this prototype patch for prefork mpm which
extends performance and thread utilization. We modified the "multiple listen
statement case" by creating 1 listen record for each listen statement and
partitioning the child processes into different buckets. Each bucket listens to
1 IP:port. 

Quick tests of the patch, running the same workload, demonstrated a 10%
throughput increase with 32-threads system and 2 listen statements and 20%
throughput increase with 48-threads system and 2 listen statements. Both
testing systems are from Intel Xeon 2600 series and Linux kernel version is
3.13.6. We also observed big reduction in response time, in addition to the
throughput improvement gained in our tests 1.

Please help us review it and let us know if there is anything we might revise
to improve it. Your feedback is very much appreciated.

Configuration:
<IfModule prefork.c>
    ListenBacklog 105384
    ServerLimit 105000
    MaxClients 1024
    MaxRequestsPerChild 0
    StartServers 64
    MinSpareServers 8
    MaxSpareServers 16
</IfModule>

1. Software and workloads used in performance tests may have been optimized for
performance only on Intel microprocessors. Performance tests, such as SYSmark
and MobileMark, are measured using specific computer systems, components,
software, operations and functions. Any change to any of those factors may
cause the results to vary. You should consult other information and performance
tests to assist you in fully evaluating your contemplated purchases, including
the performance of that product when combined with other products.

Thanks,
Yingqi Lu

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to