<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>We already ruled that out this morning. The code is now using syscall() directly:</div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb23a0">inline</span> <span style="color: #bb23a0">long</span> mygetpid() {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #bb23a0">return</span> syscall(SYS_getpid);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">}</div></div><div><br></div><br><div>
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><i>Enrico Granata</i></div></div><div><i>Computer Science &amp; Engineering Department (EBU3B) -&nbsp;</i><i>Room 3240</i></div><div><i>office phone 858 534 9914</i></div><div><i>University of California, San Diego</i></div></div></span></div></span></span></div></div></div></span></div></span></div></span></div></span></div>
</div>
<br><div><div>On Feb 25, 2011, at 12:59 PM, Jim Kukunas wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>On Fri, Feb 25, 2011 at 12:42 PM, Enrico Granata &lt;<a href="mailto:egranata@ucsd.edu">egranata@ucsd.edu</a>&gt; wrote:<br><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I modified the source code to show exactly how many clock ticks it is taking<br></blockquote><blockquote type="cite">for each call. It seems that the behavior hinted by Mauro Romano Trajber is<br></blockquote><blockquote type="cite">actually there:<br></blockquote><blockquote type="cite">[enrico@espresso ~]$ ./syscallperf 15<br></blockquote><blockquote type="cite">4925<br></blockquote><blockquote type="cite">1190<br></blockquote><blockquote type="cite">942<br></blockquote><blockquote type="cite">942<br></blockquote><blockquote type="cite">935<br></blockquote><blockquote type="cite">942<br></blockquote><blockquote type="cite">636<br></blockquote><blockquote type="cite">577<br></blockquote><blockquote type="cite">627<br></blockquote><blockquote type="cite">621<br></blockquote><blockquote type="cite">580<br></blockquote><blockquote type="cite">591<br></blockquote><blockquote type="cite">565<br></blockquote><blockquote type="cite">580<br></blockquote><blockquote type="cite">565<br></blockquote><blockquote type="cite">I am starting to wonder if this depends on the syscall itself OR on some<br></blockquote><blockquote type="cite">call optimization.. any gcc experts around?<br></blockquote><br>From the getpid(2) manpage:<br><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Since glibc version 2.3.4, the &nbsp;glibc &nbsp;wrapper &nbsp;function &nbsp;for &nbsp;getpid()<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;caches &nbsp;PIDs, &nbsp;so &nbsp;as &nbsp;to &nbsp;avoid additional system calls when a process<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;calls getpid() repeatedly."<br><br><br><blockquote type="cite">Enrico Granata<br></blockquote><blockquote type="cite">Computer Science &amp; Engineering Department (EBU3B) -&nbsp;Room 3240<br></blockquote><blockquote type="cite">office phone 858 534 9914<br></blockquote><blockquote type="cite">University of California, San Diego<br></blockquote><blockquote type="cite">On Feb 25, 2011, at 12:30 PM, Mauro Romano Trajber wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Sure, the code is attached.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On Fri, Feb 25, 2011 at 5:15 PM, Daniel Baluta &lt;<a href="mailto:daniel.baluta@gmail.com">daniel.baluta@gmail.com</a>&gt;<br></blockquote><blockquote type="cite">wrote:<br></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">On Fri, Feb 25, 2011 at 8:22 PM, Mauro Romano Trajber &lt;<a href="mailto:trajber@gmail.com">trajber@gmail.com</a>&gt;<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">wrote:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Thanks Enrico and Daniel, you're right. glibc was caching getpid(); but<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">this<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">is not the root cause of this behavior.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Going further, I decide to use call getpid without glibc, using<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">&nbsp;syscall(SYS_getpid) to test this behavior and it&nbsp;happened again.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Calling it once, the test consumes about 7k CPU cycles and 10 calls<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">consumes<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">about 10k CPU cycles.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Any ideas ?<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Can you post a pointer to your code and information about how you got<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">this numbers?<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">thanks,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Daniel.<br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&lt;syscallperf.c&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite">Kernelnewbies mailing list<br></blockquote><blockquote type="cite"><a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br></blockquote><blockquote type="cite"><a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><br>-- <br>Jim Kukunas<br><a href="mailto:jkukunas@acm.org">jkukunas@acm.org</a><br>http://member.acm.org/~treak007<br></div></blockquote></div><br></body></html>