Author: rgoers
Date: Fri Apr 19 06:09:53 2013
New Revision: 1469709

URL: http://svn.apache.org/r1469709
Log:
LOG4J2-214 - Async documentation update

Added:
    
logging/log4j/log4j2/trunk/src/site/resources/images/async-latency-histogram-64-threads.png
   (with props)
Modified:
    logging/log4j/log4j2/trunk/core/src/site/xdoc/index.xml
    logging/log4j/log4j2/trunk/src/changes/changes.xml
    
logging/log4j/log4j2/trunk/src/site/resources/images/async-average-latency.png
    
logging/log4j/log4j2/trunk/src/site/resources/images/async-max-latency-99.99pct.png
    logging/log4j/log4j2/trunk/src/site/xdoc/index.xml
    logging/log4j/log4j2/trunk/src/site/xdoc/manual/async.xml

Modified: logging/log4j/log4j2/trunk/core/src/site/xdoc/index.xml
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/site/xdoc/index.xml?rev=1469709&r1=1469708&r2=1469709&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/site/xdoc/index.xml (original)
+++ logging/log4j/log4j2/trunk/core/src/site/xdoc/index.xml Fri Apr 19 06:09:53 
2013
@@ -46,6 +46,7 @@
           <li>Async Loggers require the LMAX Disruptor.</li>
           <li>SMTPAppender requires Javax Mail.</li>
           <li>JMSQueueAppender and JMSTopicAppender require a JMS 
implementation like geronimo-jms.</li>
+          <li>Windows color support requires Jansi.</li>
           </ul>
         </section>
 

Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1469709&r1=1469708&r2=1469709&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Fri Apr 19 06:09:53 2013
@@ -23,6 +23,9 @@
 
   <body>
     <release version="2.0-beta5" date="@TBD@" description="Bug fixes and 
enhancements">
+      <action issue="LOG4J2-214" dev="rgoers" type="update" due-to="Remko 
Popma">
+        Async documentation update.
+      </action>
       <action issue="LOG4J2-212" dev="rgoers" type="fix">
         Loggers without a "." had no parent logger.
       </action>

Modified: 
logging/log4j/log4j2/trunk/src/site/resources/images/async-average-latency.png
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/site/resources/images/async-average-latency.png?rev=1469709&r1=1469708&r2=1469709&view=diff
==============================================================================
Binary files - no diff available.

Added: 
logging/log4j/log4j2/trunk/src/site/resources/images/async-latency-histogram-64-threads.png
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/site/resources/images/async-latency-histogram-64-threads.png?rev=1469709&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
logging/log4j/log4j2/trunk/src/site/resources/images/async-latency-histogram-64-threads.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: 
logging/log4j/log4j2/trunk/src/site/resources/images/async-max-latency-99.99pct.png
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/site/resources/images/async-max-latency-99.99pct.png?rev=1469709&r1=1469708&r2=1469709&view=diff
==============================================================================
Binary files - no diff available.

Modified: logging/log4j/log4j2/trunk/src/site/xdoc/index.xml
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/site/xdoc/index.xml?rev=1469709&r1=1469708&r2=1469709&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/site/xdoc/index.xml (original)
+++ logging/log4j/log4j2/trunk/src/site/xdoc/index.xml Fri Apr 19 06:09:53 2013
@@ -97,7 +97,7 @@
           
           <subsection name="Requirements">
              <p>
-               Log4j 2 requires Java 5 but takes advantage of enhancements in 
Java 6 to improve performance. 
+               Log4j 2 requires Java 6.
                Some features require optional dependencies; the documentation 
for these features specifies the 
                dependencies.
             </p>

Modified: logging/log4j/log4j2/trunk/src/site/xdoc/manual/async.xml
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/site/xdoc/manual/async.xml?rev=1469709&r1=1469708&r2=1469709&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/site/xdoc/manual/async.xml (original)
+++ logging/log4j/log4j2/trunk/src/site/xdoc/manual/async.xml Fri Apr 19 
06:09:53 2013
@@ -761,25 +761,101 @@
 
                                <a name="Latency" />
                                <h4>Latency</h4>
-                               <p>The latency comparison below is done by 
logging at
+                               <p>Latency tests are done by logging at
                                less than saturation, measuring how long a call 
to Logger.log
                                takes to return. After each call to Logger.log, 
the test waits
                                for 10 microseconds * threadCount before 
continuing. 
                                Each thread logs 5 million messages.
                                </p>
+                               <p>All the latency measurements below are 
results of tests run
+                               on Solaris 10 (64bit) with JDK1.7.0_06, 4-core 
Xeon X5570 dual CPU
+                               @2.93Ghz with hyperthreading switched on (16 
virtual cores).</p>
+                               <p><img 
src="../images/async-latency-histogram-64-threads.png" /></p>
+                               <p>Note that this is log-scale, not linear. 
+                               The above graph compares the latency 
distributions of 
+                               an asynchronous logger and a Log4j 1.2.17 Async 
Appender.
+                               This shows the latency of one thread
+                               during a test where 64 threads are logging in 
parallel.
+                               The test was run once for the async logger and 
once for the
+                               async appender.</p>
+                       <table>
+                        <tr>
+                         <th></th>
+                         <th colspan="2" >Average latency</th>
+                         <th colspan="2">99% observations
+                         less than</th>
+                         <th colspan="2">99.99%
+                         observations less than</th>
+                        </tr>
+                        <tr>
+                         <th></th>
+                         <th>1 thread</th>
+                         <th>64 threads</th>
+                         <th>1 thread</th>
+                         <th>64 threads</th>
+                         <th>1 thread</th>
+                         <th>64 threads</th>
+                        </tr>
+                        <tr>
+                         <td>Log4j2: Loggers all async</td>
+                         <td align="right">677</td>
+                         <td align="right">4,135</td>
+                         <td align="right">1,638</td>
+                         <td align="right">4,096</td>
+                         <td align="right">8,192</td>
+                         <td align="right">16,128</td>
+                        </tr>
+                        <tr>
+                         <td>Log4j2: Loggers mixed
+                         sync/async</td>
+                         <td align="right">648</td>
+                         <td align="right">4,873</td>
+                         <td align="right">1,228</td>
+                         <td align="right">4,096</td>
+                         <td align="right">8,192</td>
+                         <td align="right">16,384</td>
+                        </tr>
+                        <tr>
+                         <td>Log4j2: Async Appender</td>
+                         <td align="right">2,423</td>
+                         <td align="right">2,117,722</td>
+                         <td align="right">4,096</td>
+                         <td align="right">67,108,864</td>
+                         <td align="right">16,384</td>
+                         <td align="right">268,435,456</td>
+                        </tr>
+                        <tr>
+                         <td>Log4j1: Async Appender</td>
+                         <td align="right">1,562</td>
+                         <td align="right">1,781,404</td>
+                         <td align="right">4,096</td>
+                         <td align="right">109,051,904</td>
+                         <td align="right">16,384</td>
+                         <td align="right">268,435,456</td>
+                        </tr>
+                        <tr>
+                         <td>Logback: Async Appender</td>
+                         <td align="right">2,123</td>
+                         <td align="right">2,079,020</td>
+                         <td align="right">3,276</td>
+                         <td align="right">67,108,864</td>
+                         <td align="right">14,745</td>
+                         <td align="right">268,435,456</td>
+                        </tr>
+                       <caption align="top">Latency of a call to Logger.log() 
in nanoseconds</caption>
+                       </table>
                                <p>
-                               <img src="../images/async-average-latency.png" 
/>
-                               </p>
-                               <p>
-                               Note that the scale of the latency comparison 
graphs is 
-                               logarithmic, not linear.
-                               That makes it a bit difficult to see, but the 
average latency of
-                               asynchronous loggers is half to one third of 
the latency of
-                               ArrayBlockingQueue-based asynchronous appenders 
in scenarios
-                               up to 8 threads. With more threads, the average 
latency of
+                               The latency comparison graph below is also 
log-scale, 
+                               and shows the average latency of asynchronous 
loggers and 
+                               ArrayBlockingQueue-based asynchronous appenders
+                               in scenarios with more and more threads running 
in parallel.
+                               Up to 8 threads asynchronous appenders have 
comparable
+                               average latency, two or three times that of 
asynchronous loggers.
+                               With more threads, the average latency of
                                asynchronous appenders is orders of magnitude 
larger than
                                asynchronous loggers.
                                </p>
+                               <p><img 
src="../images/async-average-latency.png" /></p>
                                <p>
                                Applications interested in low latency often 
care not only about 
                                average latency, but also about worst-case 
latency. 
@@ -787,9 +863,9 @@
                                better when comparing the maximum latency of 
99.99% of  
                                observations with other logging methods.
                                When increasing the number of threads
-                               the worst case latency of asynchronous loggers 
remains more or
-                               less the same (around 10-20 microseconds) 
-                               where Asynchronous Appenders start experiencing 
worst-case
+                               the vast majority of latency measurements for 
asynchronous 
+                               loggers stay in the 10-20 microseconds range
+                               where Asynchronous Appenders start experiencing 
many
                                latency spikes in the 100 millisecond range, a 
difference of
                                four orders of magnitude.
                                </p>


Reply via email to