<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>over subscribe is an issue, but a rather tiny one in my application.&nbsp; For -n 4,<br>there will be 20 processes running at startup time, where 16 of those take<br>less than 0.5 sec total to get into idle mode.&nbsp; that has not been a problem until<br>I ran into the combination of thread multiple, machine and the particular test case. <br>BTW, I have not been using that machine for a long time, it is on the<br>lowest end of the HW spectrum for the problem my application is trying to solve.<br>Finding this combo was just a pure luck.<br><br>I hope these 2 issues provide good research opportunity for the MPICH2 <br>team.<br><br>thanks<br>tan<br><br></div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><div style="font-family: arial,helvetica,sans-serif;
 font-size: 13px;"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight: bold;">From:</span></b> Darius Buntinas &lt;buntinas@mcs.anl.gov&gt;<br><b><span style="font-weight: bold;">To:</span></b> mpich-discuss@mcs.anl.gov<br><b><span style="font-weight: bold;">Sent:</span></b> Thursday, July 16, 2009 7:52:21 AM<br><b><span style="font-weight: bold;">Subject:</span></b> Re: [mpich-discuss] version 1.1 strange behavior : all processes become idle for extensive period<br></font><br>
Yeah, oversubscribing the processors will have this effect (because of a<br>broken implementation of sched_yield() in the linux kernel since<br>2.6.23).&nbsp; I'm not exactly sure why thread multiple would make it worse<br>though.&nbsp; This is something to look into.<br><br>Thanks for letting us know about this.<br><br>-d<br><br>On 07/15/2009 05:42 PM, chong tan wrote:<br>&gt; I just completed building without -enable_thread=multiple, the slow<br>&gt; startup and<br>&gt; nap problem went away.<br>&gt; <br>&gt; Regarding the slow start up, it may have something to do with my<br>&gt; application.&nbsp; When<br>&gt; my application is run, it actually starts 4 other processes, licensing,<br>&gt; recording, etc.&nbsp; I can<br>&gt; see each of these processes being run 1 after another.&nbsp; BTW, I am using<br>&gt; processor<br>&gt; affinity, and that may help getting the situation worst.<br>&gt; <br>&gt; tan<br>&gt; <br>&gt; <br>&gt;
 ------------------------------------------------------------------------<br>&gt; *From:* Darius Buntinas &lt;<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a>&gt;<br>&gt; *To:* <a ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a><br>&gt; *Sent:* Tuesday, July 14, 2009 8:05:00 AM<br>&gt; *Subject:* Re: [mpich-discuss] version 1.1 strange behavior : all<br>&gt; processes become idle for extensive period<br>&gt; <br>&gt; <br>&gt; Can you attach a debugger to process 0 and see what it's doing during<br>&gt; this nap?&nbsp; Once the process 0 finishes the nap, does it send/receive the<br>&gt; messages to/from the other processes and things continue normally?<br>&gt; <br>&gt; Thanks,<br>&gt; -d<br>&gt; <br>&gt; On 07/13/2009 08:57 PM, chong tan wrote:<br>&gt;&gt; this is the sequence of MPI calls that lead to the 'nap' (all numbers<br>&gt;&gt;
 represent proc id per MPICH2) :<br>&gt;&gt; <br>&gt;&gt; 0 send to 1, recieved by 1<br>&gt;&gt; 0 send to 2, recieved by 2<br>&gt;&gt; 0 sent to 3, recv by 3<br>&gt;&gt; &lt;application activities, shm called &gt;<br>&gt;&gt; 1 blocking send to 0, send buffered<br>&gt;&gt; 1 calls blocking recieve from 0<br>&gt;&gt; 3 blocking send to 0, send buffered,<br>&gt;&gt; 3 calls blocking recieve from 0<br>&gt;&gt; 2 blocking send to 0, send buffered<br>&gt;&gt; 2 calls blocking recieve from 0<br>&gt;&gt; &lt;proc 0 execute some application activities&gt;<br>&gt;&gt; proc 0 become idle<br>&gt;&gt; &lt;nap time&gt;<br>&gt;&gt; <br>&gt;&gt; <br>&gt;&gt; <br>&gt;&gt; This is rather strange, it only happens on this particular test.&nbsp; hope<br>&gt;&gt; this info help<br>&gt;&gt; <br>&gt;&gt; tan<br>&gt;&gt; <br>&gt;&gt; <br>&gt;&gt; <br>&gt;&gt; <br>&gt;&gt; <br>&gt;&gt;<br>&gt;&gt; <br>&gt;&gt;<br>&gt;&gt;
 ------------------------------------------------------------------------<br>&gt;&gt; *From:* Darius Buntinas &lt;<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a><br>&gt; &lt;mailto:<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a>&gt;&gt;<br>&gt;&gt; *To:* <a ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a> &lt;mailto:<a ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a>&gt;<br>&gt;&gt; *Sent:* Monday, July 13, 2009 11:47:38 AM<br>&gt;&gt; *Subject:* Re: [mpich-discuss] version 1.1 strange behavior : all<br>&gt;&gt; processes become idle for extensive period<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; Is there a simpler example of this that you can send us?&nbsp; If nothing<br>&gt;&gt; else, a binary would be ok.<br>&gt;&gt;<br>&gt;&gt;
 Does the program that takes the 1 minute "nap" use threads?&nbsp; If so, how<br>&gt;&gt; many threads does each process create?<br>&gt;&gt;<br>&gt;&gt; Can you find out what the processes (or threads if it's multithreaded)<br>&gt;&gt; are doing during this time?&nbsp; E.g., are they in an mpi call?&nbsp; Are they<br>&gt;&gt; blocking on a mutex?&nbsp; If so, can you tell us what line number it's<br>&gt;&gt; blocked on?<br>&gt;&gt;<br>&gt;&gt; Can you try this without shared memory by setting the environment<br>&gt;&gt; variable MPICH_NO_LOCAL to 1 and see if you get the same problem?<br>&gt;&gt;&nbsp; MPICH_NO_LOCAL=1 mpiexec -n 4 ...<br>&gt;&gt;<br>&gt;&gt; Thanks,<br>&gt;&gt; -d<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; On 07/13/2009 01:35 PM, chong tan wrote:<br>&gt;&gt;&gt; Sorry can't do that.&nbsp; The benchmark involves 2 things.&nbsp; One from my<br>&gt;&gt;&gt; customer which<br>&gt;&gt;&gt; I am not allowed to distribute.&nbsp; &nbsp; I
 may be able to get a limited<br>&gt;&gt;&gt; license of my product<br>&gt;&gt;&gt; for you to try, but I definately can not send source code.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; tan<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; ------------------------------------------------------------------------<br>&gt;&gt;&gt; *From:* Darius Buntinas &lt;<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a><br>&gt; &lt;mailto:<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a>&gt;<br>&gt;&gt; &lt;mailto:<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a> &lt;mailto:<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a>&gt;&gt;&gt;<br>&gt;&gt;&gt; *To:* <a ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a> &lt;mailto:<a
 ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a>&gt;<br>&gt; &lt;mailto:<a ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a> &lt;mailto:<a ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a>&gt;&gt;<br>&gt;&gt;&gt; *Sent:* Monday, July 13, 2009 10:54:50 AM<br>&gt;&gt;&gt; *Subject:* Re: [mpich-discuss] version 1.1 strange behavior : all<br>&gt;&gt;&gt; processes become idle for extensive period<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; Can you send us the benchmark you're using?&nbsp; This will help us figure<br>&gt;&gt;&gt; out what's going on.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; Thanks,<br>&gt;&gt;&gt; -d<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; On 07/13/2009 12:36 PM, chong tan wrote:<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; thanks
 darius,<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; When I did the comparison (or benchmarking), I have 2 identical source<br>&gt;&gt;&gt;&gt; trees.&nbsp; Everything<br>&gt;&gt;&gt;&gt; were recompiled group up and compiled/linked accordinglyto the version<br>&gt;&gt;&gt;&gt; of MPICH2<br>&gt;&gt;&gt;&gt; to be used.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; I have many tests, this is the only one showing this behavior, and is<br>&gt;&gt;&gt;&gt; predictably repeatable.<br>&gt;&gt;&gt;&gt; most of my tests are showing comaptible performance and many do better<br>&gt;&gt;&gt;&gt; with 1.1.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; The 'weirdest' thing is the ~1 minute span where there is no activity on<br>&gt;&gt;&gt;&gt; the box at all, zipo<br>&gt;&gt;&gt;&gt; activity except 'top', with machine load at around 0.12.&nbsp; I don't know<br>&gt;&gt;&gt;&gt; how to explain this<br>&gt;&gt;&gt;&gt; 'behavior', and I am extremely curious if anyone can explain
 this.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; I can't repeat this on AMD boxes as I don't have one that has only 32G<br>&gt;&gt;&gt;&gt; of memory.&nbsp; I can't<br>&gt;&gt;&gt;&gt; repeat this on Niagara box as thread multiple won't build.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; I will try to rebuild 1.1 without thread-multiple.&nbsp; Will keep you<br>&gt; posted.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Meanwhile, if anyone has any speculations on this, please bring them up.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; thanks<br>&gt;&gt;&gt;&gt; tan<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; ------------------------------------------------------------------------<br>&gt;&gt;&gt;&gt; *From:* Darius Buntinas &lt;<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a><br>&gt; &lt;mailto:<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a>&gt;<br>&gt;&gt; &lt;mailto:<a
 ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a> &lt;mailto:<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a>&gt;&gt;<br>&gt;&gt;&gt; &lt;mailto:<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a> &lt;mailto:<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a>&gt;<br>&gt; &lt;mailto:<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a> &lt;mailto:<a ymailto="mailto:buntinas@mcs.anl.gov" href="mailto:buntinas@mcs.anl.gov">buntinas@mcs.anl.gov</a>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; *To:* <a ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a> &lt;mailto:<a ymailto="mailto:mpich-discuss@mcs.anl.gov"
 href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a>&gt;<br>&gt; &lt;mailto:<a ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a> &lt;mailto:<a ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a>&gt;&gt;<br>&gt;&gt; &lt;mailto:<a ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a> &lt;mailto:<a ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a>&gt;<br>&gt; &lt;mailto:<a ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a> &lt;mailto:<a ymailto="mailto:mpich-discuss@mcs.anl.gov" href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a>&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; *Sent:* Monday, July 13, 2009 8:30:19
 AM<br>&gt;&gt;&gt;&gt; *Subject:* Re: [mpich-discuss] version 1.1 strange behavior : all<br>&gt;&gt;&gt;&gt; processes become idle for extensive period<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Tan,<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Did you just re-link the applications, or did you recompile them?<br>&gt;&gt;&gt;&gt; Version 1.1 is most likely not binary compatible with 1.0.6, so you<br>&gt;&gt;&gt;&gt; really need to recompile the application.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Next, don't use the --enable-threads=multiple flag when configuring<br>&gt;&gt;&gt;&gt; mpich2.&nbsp; By default, mpich2 supports all thread levels and will select<br>&gt;&gt;&gt;&gt; the thread level at run time (depending on the parameters passed to<br>&gt;&gt;&gt;&gt; MPI_Init_thread).&nbsp; By allowing the thread level to be selected<br>&gt;&gt;&gt;&gt; automatically at run time, you'll avoid the overhead of thread safety<br>&gt;&gt;&gt;&gt; when it's not needed,
 allowing your non-threaded applications to run<br>&gt;&gt;&gt; faster.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Let us know if either of these fixes the problem, especially if just<br>&gt;&gt;&gt;&gt; removing the --enable-threads option fixes this.<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; Thanks,<br>&gt;&gt;&gt;&gt; -d<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; On 07/10/2009 06:19 PM, chong tan wrote:<br>&gt;&gt;&gt;&gt;&gt; I am seeing this funny situation which I did not see on 1.0.6 and<br>&gt;&gt;&gt;&gt;&gt; 1.0.8.&nbsp; Some background:<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; machine : INTEL 4Xcore 2<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; running mpiexec -n 4<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; machine has 32G of mem.<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; when my application runs,&nbsp; almost all memory are used.&nbsp; However, there<br>&gt;&gt;&gt;&gt;&gt; is no swapping.<br>&gt;&gt;&gt;&gt;&gt; I have
 exclusive use of the machine, so contention is not an issue.<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; issue #1 :&nbsp; processes take extra long to be initialized, compared to<br>&gt;&gt;&gt; 1.0.6<br>&gt;&gt;&gt;&gt;&gt; issue #2 : during the run, at time all of them will become idle at the<br>&gt;&gt;&gt;&gt;&gt; same time, for almost a<br>&gt;&gt;&gt;&gt;&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; minute.&nbsp; We never observed this with 1.0.6<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; The codes are the same, only linked with different versions of MPICH2.<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; MPICH2 was built with --enable-threads=multiple for 1.1.&nbsp; without for<br>&gt;&gt;&gt;&gt;&gt; 1.0.6 or 1.0.8<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; MPI calls are all in the main application thread.&nbsp; I used only 4 MPI<br>&gt;&gt;&gt;&gt;&gt; functions :<br>&gt;&gt;&gt;&gt;&gt;
 init(), Send(), Recv() and Barrier().<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; any suggestion ?<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt; thanks<br>&gt;&gt;&gt;&gt;&gt; tan<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;<br>&gt; <br></div></div></div><br>

      </body></html>