This is the mail archive of the
mailing list for the Cygwin project.
Re: scp/ssh between two cygwin installations very slow
Larry Hall wrote:
At 06:58 PM 4/25/2005, you wrote:
Christopher Faylor wrote:
On Mon, Apr 25, 2005 at 09:45:56PM +0200, Bernhard Ege wrote:
Bernhard Ege wrote:
I am trying to copy an 800MB file from my pc to my laptop. The pc has cygwin and cygwins sshd running and from the laptop I use the scp command to copy the file.
Result: 190kB/s with low (1-5%) cpu usage on both machines.
Expected result: at least 2-3MBps with somewhat higher cpuusage on both machines.
Doh. I completely forgot that in my .ssh/config I had ssh call a script using the ProxyCommand. That command is a shell script that detects which network I am connected to (company or my own) and uses a tunneling ssh command to the destination if on the company network or a direct connection using "connect" if on my own network.
The connect command is a fairly simple program that redirects stdin/stdout to a host:port. This way, I can either use a ssh to host:port if tunneling is required to connect to host:port if not.
The problem is that cygwin has a very low throughput using the script with the connect command. I guess it could be related to the slow pipe problem mentioned earlier (but was supposedly fixed).
I have tried without the ProxyCommand and the speed returned to an acceptable 1.5MBps.
I hope Cygwin can be fixed so the speed returns to normal :-)
Yep. We'll get right on fixing that problem where fairly simple
programs which redirect stdin/stdout to a host:port cause reversions in
behavior of the "slow pipe" problem which was supposedly fixed.
It was either that kind of reply or some other reply indicating what additional info is required. Obviously I would submit the required information, but I don't know what would be relevant.
Anyway, here is the link to connect.c:
And just create script like ssh-connect.sh:
connect $1 $2
And in .ssh/config add the script to a destination:
ProxyCommand ssh-connect.sh %h %p
scp'in from the host which is reached through connect has its speed severely reduced.
It may be the problem with connect itself, but I am not sure how to test that.
Seems like something is going on with the compiled version of connect that
you pointed to. If I try what you mentioned above with the precompiled
version, it is dreadfully slow for me as well (at least several orders of
magnitude slower). Building a local one from source with Cygwin was allot
better, though still slower than without it (by 4 to 5 times). You might
want to try a local build if you need to rely on connect. It's allot better
than the alternative.
The one I tried _was_ the freshly compiled (by my self) version. I did
not try the precompiled version. The slowdown you experience (4-5 times)
approximately matches the slowdown I see as well.
Connect.c is probably not quite cygwin friendly yet (or the other way
around), but I haven't found any alternative (though I haven't looked
very hard, only mildly hard ;-).
However, the job connect has to do seems simple enough:
Establish connection in host:port, create 2 threads (or 1 more), one
thread reading from standard in and output on socket out and one thread
to read from socket and write to standard out. connect handles a few
protocols, but for this to work, data should just be passed right
through, i.e. no protocol handling necessary.
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html