Subject: bug#59151: Major performance issues in dired over ssh (Tramp) when remote directory contains symlinks

From: Michael Albinus <[email-masked]>
Date: Thu, 10 Nov 2022 10:16:48 +0100

Mikhail Pomaznoy <[email-masked]> writes:

> Greetings emacs devs, or to whom it may concern!

Hi Mikhail,

> I am having troubles with dired listings of remote directories
> containing many files and symlinks. When I scroll through such a dired
> buffer Emacs lags (over a second) on every page-down scroll.
>
> The problem is easily reproducible with -Q if the directory contains a
> hundred files and a hundred symbolic links to some other hundred files
> somewhere on the filesystem. If I kill the links in the dired buffer
> (without deleting any actual files or links) then everything scrolls
> smoothly as usual.
>
> Could you please check if thats a real issue in your setting? ssh
> connection I am using is not so slow...

Dired does a lot of work for applying proper faces for the file
status. For symlinked files, for example, it calls file-truename,
file-exists-p, file-directory-p, for every single file in the
listing. Some of them even several times.

This takes time for remote files, especially if you don't use Tramp
caches, or caches with a short timeout.

I recommend you to disable the buffer-local font-lock-mode in a remote
dired buffer with so many symlinked files, via `M-x font-lock-mode'.

> Kind regards,
> -Mikhail

Best regards, Michael.