[ 
https://issues.apache.org/jira/browse/TEZ-2918?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rajesh Balamohan updated TEZ-2918:
----------------------------------
    Attachment: jmh-microbenchmark.tar.gz


Tried out a simple JMH microbenchmark which updates boolean vs volatile 
boolean. Attached the src details here and the results are as follows

{noformat}
Benchmark                                                     Mode  Cnt  Score  
 Error  Units
TestVolatileMicrobenchmark.write_atomic_boolean_with_lazyset  avgt    5  1.085 
± 1.466  ns/op
TestVolatileMicrobenchmark.write_plain_boolean                avgt    5  0.647 
± 0.322  ns/op
TestVolatileMicrobenchmark.write_volatile_boolean             avgt    5  9.694 
± 6.095  ns/op
{noformat}

It appears that the volatile is a lot more expensive that the non-volatile 
writes by 9x times. Since it is getting updated by a single writer, I tried 
with AtomicBoolean.lazySet(boolean) which claims to be a lot more faster than 
volatile and results show that it is a lot better compared to volatile (just 
~2x as compared to 9x in volatile). Ref for atomic lazySet 
http://mithun-ruikar.blogspot.in/2014/10/why-atomic-lazyset-is-faster.html, 
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6275329.  May be we could 
consider using AtomicBoolean.lazySet() which is internally supported by JDK 
itself? 

> Make progress notifications in IOs
> ----------------------------------
>
>                 Key: TEZ-2918
>                 URL: https://issues.apache.org/jira/browse/TEZ-2918
>             Project: Apache Tez
>          Issue Type: Sub-task
>            Reporter: Bikas Saha
>            Assignee: Bikas Saha
>         Attachments: TEZ-2918.1.patch, TEZ-2918.2.patch, 
> jmh-microbenchmark.tar.gz
>
>




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to