[ 
https://issues.apache.org/jira/browse/HADOOP-8926?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13477863#comment-13477863
 ] 

Hudson commented on HADOOP-8926:
--------------------------------

Integrated in Hadoop-Mapreduce-trunk #1228 (See 
[https://builds.apache.org/job/Hadoop-Mapreduce-trunk/1228/])
    HADOOP-8926. hadoop.util.PureJavaCrc32 cache hit-ratio is low for static 
data (Gopal V via bobby) (Revision 1399005)

     Result = FAILURE
bobby : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1399005
Files : 
* /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
* 
/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/PureJavaCrc32.java
* 
/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/PureJavaCrc32C.java
* 
/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestPureJavaCrc32.java

                
> hadoop.util.PureJavaCrc32 cache hit-ratio is low for static data
> ----------------------------------------------------------------
>
>                 Key: HADOOP-8926
>                 URL: https://issues.apache.org/jira/browse/HADOOP-8926
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: util
>    Affects Versions: 2.0.3-alpha
>         Environment: Ubuntu 10.10 i386 
>            Reporter: Gopal V
>            Assignee: Gopal V
>            Priority: Trivial
>              Labels: optimization
>             Fix For: 3.0.0, 2.0.3-alpha
>
>         Attachments: crc32-faster+readable.patch, crc32-faster+test.patch, 
> pure-crc32-cache-hit.patch
>
>
> While running microbenchmarks for HDFS write codepath, a significant part of 
> the CPU fraction was consumed by the DataChecksum.update(). 
> The attached patch converts the static arrays in CRC32 into a single linear 
> array for a performance boost in the inner loop.
> milli-seconds for 1Gig (16400 loop over a 64kb chunk) 
> || platform || original || cache-aware || improvement ||
> | x86 | 3894 | 2304 | 40.83 |
> | x86_64 | 2131 | 1826 | 14 | 
> The performance improvement on x86 is rather larger than the 64bit case, due 
> to the extra register/stack pressure caused by the static arrays.
> A closer analysis of the PureJavaCrc32 JIT code shows the following assembly 
> fragment
> {code}
>   0x40f1e345: mov    $0x184,%ecx
>   0x40f1e34a: mov    0x4415b560(%ecx),%ecx  ;*getstatic T8_5
>                                         ; - PureJavaCrc32::update@95 (line 61)
>                                         ;   {oop('PureJavaCrc32')}
>   0x40f1e350: mov    %ecx,0x2c(%esp)
> {code}
> Basically, the static variables T8_0 through to T8_7 are being spilled to the 
> stack because of register pressure. The x86_64 case has a lower likelihood of 
> such pessimistic JIT code due to the increased number of registers.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to