<br><br><div class="gmail_quote">On Tue, Jun 12, 2012 at 12:00 PM, Jose Gomez-Dans <span dir="ltr">&lt;<a href="mailto:jgomezdans@gmail.com" target="_blank">jgomezdans@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hi<br>
<br>
Thanks for your reply. There are improvements, but not quite there yet...<br>
<div class="im"><br>
On 12 June 2012 19:31, MinRK &lt;<a href="mailto:benjaminrk@gmail.com">benjaminrk@gmail.com</a>&gt; wrote:<br>
&gt; I believe the above config should be controller_launcher_class and<br>
&gt; engine_launcher_class.<br>
</div><div class="im">&gt; I imagine your issue stems from the config typos above.  This is behaving<br>
&gt; exactly as expected if you had simply not specified the engine/controller<br>
&gt; launcher classes (which you haven&#39;t done, since they are given with the<br>
&gt; wrong name).<br>
&gt;<br>
&gt; When in doubt, always add `--debug`.  I expect you will see &quot;starting 12<br>
&gt; engines with LocalEngineSetLauncher (this is actually displayed at the<br>
&gt; default log-level, at least on master).<br>
<br>
</div>I don&#39;t think ipcluster has a --debug option in 0.11 (it complains it<br>
doesn&#39;t understand it).</blockquote><div><br></div><div>Weird.  I would also *strongly* recommend updating to current IPython (0.12.1), or using master, which should be released 0.13 within a month. These both have some improvements to the launchers.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Now, after solving those typos, and running<br>
ipcluster start --profile=ssh test, this comes up on the screen:<br>
<br>
[IPClusterStart] Using existing profile dir:<br>
u&#39;/home/ucfajlg/.config/ipython/profile_sshtest&#39;<br>
[IPClusterStart] Starting ipcluster with [daemon=False]<br>
[IPClusterStart] Creating pid file:<br>
/home/ucfajlg/.config/ipython/profile_sshtest/pid/ipcluster.pid<br>
[IPClusterStart] Process &#39;ssh&#39; started: 16737<br>
[IPClusterStart] tcgetattr: Invalid argument<br>
[IPClusterStart] [IPControllerApp] Config changed:<br>
[IPClusterStart] [IPControllerApp] {&#39;Application&#39;: {&#39;log_level&#39;: 10},<br>
&#39;HubFactory&#39;: {&#39;ip&#39;: u&#39;xx.xx.xx.xx&#39;}, &#39;BaseParallelApplication&#39;:<br>
{&#39;log_to_file&#39;: True}}<br>
[IPClusterStart] [IPControllerApp] Using existing profile dir:<br>
u&#39;/home/ucfajlg/.config/ipython/profile_default&#39;<br>
[IPClusterStart] [IPControllerApp] Attempting to load config file:<br>
ipython_config.py<br>
[IPClusterStart] [IPControllerApp] Config changed:<br>
[IPClusterStart] [IPControllerApp] {&#39;Application&#39;: {&#39;log_level&#39;: 10},<br>
&#39;HubFactory&#39;: {&#39;ip&#39;: u&#39;xx.xx.xx.xx&#39;}, &#39;TerminalIPythonApp&#39;:<br>
{&#39;extensions&#39;: [&#39;kernmagic&#39;]}, &#39;ProfileDir&#39;: {},<br>
&#39;BaseParallelApplication&#39;: {&#39;log_to_file&#39;: True}}<br>
[IPClusterStart] [IPControllerApp] Attempting to load config file:<br>
ipcontroller_config.py<br>
[IPClusterStart] Scheduler started [leastload]<br>
[IPClusterStart] Starting 12 engines<br>
[IPClusterStart] Process &#39;ssh&#39; started: 16780<br>
[IPClusterStart] Starting SSHEngineSetLauncher: [&#39;ssh&#39;, &#39;-tt&#39;,<br>
u&#39;sun-node08, &#39;/opt/epd-7.1-2-rh5-x86_64/bin/python&#39;,<br>
u&#39;/opt/epd-7.1-2-rh5-x86_64/lib/python2.7/site-packages/IPython/parallel/apps/ipengineapp.py&#39;,<br>
&#39;--log-to-file&#39;, &#39;--log-level=20&#39;]<br>
[IPClusterStart] Process &#39;ssh&#39; started: 16781<br>
[IPClusterStart] Process &#39;ssh&#39; started: 16782<br>
[...]<br>
[IPClusterStart] Process &#39;ssh&#39; started: 16807<br>
[IPClusterStart] Process &#39;engine set&#39; started: [None, None, None,<br>
None, None, None, None, None, None, None, None, None, None, None,<br>
None, None, None, None, None, None, None, None, None, None, None,<br>
None, None, None]<br>
[IPClusterStart] tcgetattr: Invalid argument<br>
[IPClusterStart] tcgetattr: Invalid argument<br>
[...]<br>
[IPClusterStart] [IPEngineApp] Using existing profile dir:<br>
u&#39;/home/xxx/.config/ipython/profile_default&#39;<br>
[IPClusterStart] [IPEngineApp] Using existing profile dir:<br>
u&#39;/home/xxx/.config/ipython/profile_default&#39;<br>
<br>
So, it appears to launch ssh processes galore, which is good. But<br>
what&#39;s this about tcgetattr?</blockquote><div><br></div><div>It is a useless warning, I think maybe the &#39;-tt&#39; arg isn&#39;t what it should be.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Anyway, trying to connect works with<br>
rc = Client ()<br></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"># OK, I can see the remote engines<br>
but fails if I specify the profile<br>
rc = Client ( profile=&quot;sshtest&quot;)<br>
TimeoutError: Hub connection request timed out<br>
<br>
I can get it to work ignoring the profile option, but I wonder whether<br>
I should be wary of this?<br></blockquote><div><br></div><div>Looking at your log output, with your config for the controller args, you have specified that IPCluster with profile sshtest should start the Controller and Engines under the default profile.  This is why connecting a Client to the default profile works, because you haven&#39;t started a Controller with the sshtest profile.  Adding &#39;--profile=ssh&#39; to your engine/controller args should address this.  I also think this would not come up if you were using 0.12 or master, as the profile_dir arg should ~always be specified there.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
&gt;&gt; Additionally, how would one go about giving the engines a particular<br>
&gt;&gt; &quot;nice&quot; value? If I don&#39;t sort this stuff out, I think I might become<br>
&gt;&gt; very unpopular among my colleagues! ;-)<br>
&gt;<br>
&gt;<br>
&gt; nice is not something ipcluster exposes, you will have to either create your<br>
&gt; own launchers or use ipengine directly.<br>
<br>
</div>In previous versions, there used to be sshx.sh where you could do this<br>
(also important to set up paths and stuff like that). Is this<br>
documented somewhere?<br></blockquote><div><br></div><div>The SSH launchers after the 0.11 reorganization are a significant regression from sshx in 0.10.2.  They have inched forward in the releases since then, but I would say they are still pretty poor.</div>

<div><br></div><div>You are welcome to submit Issues (or better yet, pull requests) to improve them, but I wouldn&#39;t expect them to improve quickly, as they are a fairly low priority right now.</div><div><br></div><div>

I should also note that just because ipcluster starts engines with ssh doesn&#39;t mean it&#39;s the *only* way to start engines with ssh.  In most cases where you are fully aware of your own system, it&#39;s fairly easy to write a bash script in a few minutes that outperforms ipcluster with SSH across the board, because it doesn&#39;t have to do anything clever, and you are able to make all kinds of assumptions that ipcluster does not:</div>

<div><br></div><div>1. start a controller somewhere</div><div>2. [optional] distribute connection files if not on a shared filesystem</div><div>3. start engines with ssh</div><div><br></div><div>For instance, a sketch off the top of my head, which I just confirmed to work in my office, which is on NFS/Linux:</div>

<div><br></div><div>#!/usr/bin/env bash</div><div><br></div><div>bg=&quot;screen -dmS&quot;</div><div><br></div><div>$bg controller ipcontroller --profile=ssh --ip=192.168.1.16</div><div><br></div><div>sleep 2</div><div>
<br>
</div><div>for host in edison langmuir; do</div><div>    ssh $host $bg engines ipcluster engines -n 4 --profile=ssh</div><div>done</div><div><br></div><div>And this is with *zero* config files - the ssh profile did not even exist before running this script.</div>

<div><br></div><div>To kill engines:</div><div><br></div><div><div>for host in edison langmuir; do</div><div>    ssh $host screen -X -S engines quit</div><div>done</div></div><div><br></div><div>and stop the controller:</div>

<div><br></div><div>screen -X -S controller quit</div><div><br></div><div>I know it seems a little weird for me to be suggesting the answer to ipcluster with SSH is to not use ipcluster at all, but this is honestly how I work more often.  The SSHLaunchers are crummy.</div>

<div><br></div><div>-MinRK</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks for your prompt and helpful answer again!<br>
<div class="HOEnZb"><div class="h5"><br>
J<br>
_______________________________________________<br>
IPython-User mailing list<br>
<a href="mailto:IPython-User@scipy.org">IPython-User@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-user" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-user</a><br>
</div></div></blockquote></div><br>