Subject: Re: bug#70901: 30.0.50; Tramp doesn't use ControlMaster even with (setq tramp-use-connection-share nil)

From: Dmitry Gutov <[email-masked]>
Date: Thu, 16 May 2024 22:50:20 +0300

Hi Michael,

On 16/05/2024 12:42, Michael Albinus wrote:

> If we want to go into detail, we need a clean testbed. In your tests, I
> don't know whether another connection already exists which Tramp could
> reuse due to your ControlMaster settings.

Like I said, it does: in the background terminal I'm using ssh with the 
same connection. But you could probably replicate the experiment without 
much trouble. Do you have access to fencepost?

> And we need to separate the
> time the "ssh ..." call takes inside Tramp, from the other time when
> Tramp does some roundtrips for the initialization. We must count the
> time Tramp needs when tramp-verbose has a higher level. Etc pp.

I could insert some (benchmark-progn ...) forms at your direction 
instead, to measure some blocks in the code. That's often a more 
expedient investigation tool.

> Do we need this? We have seen that Tramp doesn't touch Control* options
> when you set tramp-use-connection-share to nil. And that's what this bug
> report is about.

My question is, shouldn't ControlMaster be able to speed the process up, 
at least somewhat? The complaint isn't that the operation remains 
somewhat slow (though it does), but that I'm not seeing any 
statistically significant improvement from ControlMaster - which should 
seemingly be used and useful.

I'm planning to write a small article with recommendations on how to 
configure Tramp for performance in a common setup, with the options and 
explanations.

One of them does (the "direct async") - but as documented, it has some 
problems. One I've already mentioned but am yet to file a bug. Another 
is yet trickier: the REPL prompt is not rendered (IRB prompt when 
invoked inside RSpec runner - the details might not matter) with "direct 
async" but it's shown fine without "direct async". This second one, 
naturally, is harder to explain and (maybe) produce a reduced test case.

So I'm thinking if the ControlMaster can produce at least a part of this 
improvement, it should be the first recommendation in the article.