Rajeev,<br><br>Thank you for the reply.<br><br>I was running four MPI processes and then started another computationally intensive task (running another MPI program on 2 processes, for example). The other task gets around 50% of the CPU, but seems to be constantly competing with the first MPI program which isn&#39;t really doing any heavy lifting except waiting on the barrier.
<br><br>I looked into a few options, all of which seem to have problems:<br>(a) put a sleep in the MPIDI_CH3I_Progress code so that the processes waiting on the barrier sleep for a while instead of spinning in a sched_yield loop and compete with other processes which might actually need to use the CPU. The problem with this approach is that it might slow down portions of the application where a fast barrier _is_ required
<br>(b) use semaphores. It looks like it might touch a lot of places in the implementation and again might cause performance problems where a fast barrier is needed<br>(c) use sockets. The sock device in MPICH seems to be calling poll with a time-out and that seems to be behaving much better than the shm device. I&#39;m not sure how much of the existing MPICH code can be reused.
<br><br>Any other saner/more feasible options or advice on which of the above three options is simplest to implement would be most appreciated.<br><br>Thanks again,<br>Sudarshan<br><br><div><span class="gmail_quote">On 26/02/07, 
<b class="gmail_sendername">Rajeev Thakur</b> &lt;<a href="mailto:thakur@mcs.anl.gov" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">thakur@mcs.anl.gov
</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">




<div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2">Sudarshan,</font></span></div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
How many MPI processes are you running on the 4-way SMP and how many processes 
of the other application? Does the other application get any CPU at all? 
sched_yield just gives up the current time slice for the process and moves it to 
the end of the run queue. It will get run again when its turn comes. In other 
words, the process doesn&#39;t sleep until some event happens. It shares the CPU 
with other processes.&nbsp;</font></span></div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2"></font></span>&nbsp;</div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2">Rajeev</font></span></div>
<div dir="ltr" align="left"><span><font color="#0000ff" face="Arial" size="2"></font></span> <br></div></div></blockquote></div><br>