Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019 
<== Date ==> <== Thread ==>

Subject: Re: [Merge] lp:~epics-core/epics-base/epicsR3.15-atomics into lp:epics-base
From: Jeff Hill <johill@lanl.gov>
To: Jeff Hill <johill@lanl.gov>
Date: Fri, 02 Sep 2011 17:08:08 -0000
During testing I do see an unusual performance anomaly. It seems that the gcc memory barrier intrinsic functions performance is maybe too good to be true on linux-x86 and linux-686 (see epicsAtomicSet performance below)

On RHEL linux-x86:

[hill@lcssvr5 test]$ O.linux-x86/epicsAtomicPerform
# epicsAtomicSet of "i" takes 0.000678 microseconds
# epicsAtomicSet of "j" takes 0.000425 microseconds
# epicsAtomicSet of "Pv" takes 0.000524 microseconds
# raw incr of "i" and a NOOP function call takes 0.002669 microseconds
# raw incr of "j" and a NOOP function call takes 0.002671 microseconds
# epicsAtomicIncr "i" takes 0.039754 microseconds
# epicsAtomicIncr "j" takes 0.039736 microseconds
# epicsAtomicCmpAndSwap of "i" takes 0.039187 microseconds
# epicsAtomicCmpAndSwap of "j" takes 0.039140 microseconds
# epicsAtomicCmpAndSwap of "Pv" takes 0.039124 microseconds
# retOwnership() takes 0.082530 microseconds
# passRefOwnership() takes 0.164766 microseconds

    Results
    =======
       Tests: 0

On RHEL linux-686:

[hill@lcssvr5 test]$ O.linux-x86/epicsAtomicPerform
# epicsAtomicSet of "i" takes 0.000768 microseconds
# epicsAtomicSet of "j" takes 0.000619 microseconds
# epicsAtomicSet of "Pv" takes 0.000597 microseconds
# raw incr of "i" and a NOOP function call takes 0.002676 microseconds
# raw incr of "j" and a NOOP function call takes 0.002668 microseconds
# epicsAtomicIncr "i" takes 0.008333 microseconds
# epicsAtomicIncr "j" takes 0.008418 microseconds
# epicsAtomicCmpAndSwap of "i" takes 0.008344 microseconds
# epicsAtomicCmpAndSwap of "j" takes 0.008332 microseconds
# epicsAtomicCmpAndSwap of "Pv" takes 0.008556 microseconds
# retOwnership() takes 0.016959 microseconds
# passRefOwnership() takes 0.033468 microseconds

    Results
    =======
       Tests: 0


On win32-x86-mingw (using gcc memory barriers / windows OS atomics):
C:\hill\epicsInBazaar\epicsR3.15-atomics\trunk\src\libCom\test>O.win32-x86-mingw\epicsAtomicPerform
# epicsAtomicSet of "i" takes 0.006438 microseconds
# epicsAtomicSet of "j" takes 0.006298 microseconds
# epicsAtomicSet of "Pv" takes 0.006294 microseconds
# raw incr of "i" and a NOOP function call takes 0.001606 microseconds
# raw incr of "j" and a NOOP function call takes 0.001604 microseconds
# epicsAtomicIncr "i" takes 0.008752 microseconds
# epicsAtomicIncr "j" takes 0.008751 microseconds
# epicsAtomicCmpAndSwap of "i" takes 0.008752 microseconds
# epicsAtomicCmpAndSwap of "j" takes 0.008756 microseconds
# epicsAtomicCmpAndSwap of "Pv" takes 0.008752 microseconds
# retOwnership() takes 0.017703 microseconds
# passRefOwnership() takes 0.035162 microseconds

    Results
    =======
       Tests: 0

On win32-686-mingw (using gcc memory barriers / gcc intrinsic atomics):
# epicsAtomicSet of "i" takes 0.006333 microseconds
# epicsAtomicSet of "j" takes 0.006294 microseconds
# epicsAtomicSet of "Pv" takes 0.006312 microseconds
# raw incr of "i" and a NOOP function call takes 0.001497 microseconds
# raw incr of "j" and a NOOP function call takes 0.001498 microseconds
# epicsAtomicIncr "i" takes 0.006265 microseconds
# epicsAtomicIncr "j" takes 0.006260 microseconds
# epicsAtomicCmpAndSwap of "i" takes 0.006575 microseconds
# epicsAtomicCmpAndSwap of "j" takes 0.006576 microseconds
# epicsAtomicCmpAndSwap of "Pv" takes 0.006582 microseconds
# retOwnership() takes 0.012689 microseconds
# passRefOwnership() takes 0.025254 microseconds

    Results
    =======
       Tests: 0
-- 
https://code.launchpad.net/~epics-core/epics-base/epicsR3.15-atomics/+merge/73613
Your team EPICS Core Developers is subscribed to branch lp:~epics-core/epics-base/3.15-buildCompilerSpecific.


References:
[Merge] lp:~epics-core/epics-base/epicsR3.15-atomics into lp:epics-base Jeff Hill

Navigate by Date:
Prev: Re: [Merge] lp:~epics-core/epics-base/epicsR3.15-atomics into lp:epics-base Jeff Hill
Next: Re: [Merge] lp:~epics-core/epics-base/epicsR3.15-atomics into lp:epics-base Andrew Johnson
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019 
Navigate by Thread:
Prev: Re: [Merge] lp:~epics-core/epics-base/epicsR3.15-atomics into lp:epics-base Jeff Hill
Next: Re: [Merge] lp:~epics-core/epics-base/epicsR3.15-atomics into lp:epics-base Andrew Johnson
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019 
ANJ, 02 Feb 2012 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·