From: Eli Zaretskii <eliz@gnu.org>
To: Suhail Singh <suhailsingh247@gmail.com>
Cc: michael.albinus@gmx.de, 73046@debbugs.gnu.org
Subject: bug#73046: 29.4; Emacs 100% CPU usage for several seconds when opening dired buffer over TRAMP
Date: Sat, 07 Sep 2024 09:29:18 +0300 [thread overview]
Message-ID: <86ttesyo1t.fsf@gnu.org> (raw)
In-Reply-To: <87h6asl3hl.fsf@gmail.com> (message from Suhail Singh on Fri, 06 Sep 2024 20:19:34 -0400)
> From: Suhail Singh <suhailsingh247@gmail.com>
> Cc: Suhail Singh <suhailsingh247@gmail.com>, michael.albinus@gmx.de,
> 73046@debbugs.gnu.org
> Date: Fri, 06 Sep 2024 20:19:34 -0400
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> > It needs to show around 40KB to explain 10 sec of delay.
>
> I don't understand your reasoning.
It's simple arithmetics: if fetching a 20KB file takes 4 to 5 sec,
then the 10-sec delay you reported for Dired should mean we are
fetching about 40KB of data.
> In fact if the output of ls -al was indeed around 40kb I would have
> been very surprised.
In my home directory I get:
$ ls -al ~ | wc
708 6371 43324
So a large enough (but not outlandishly large: just 700 files)
directory can indeed mean Emacs needs to fetch 40KB of data for
refreshing a Dired buffer. Which led me to believe this is not an
impossible situation.
> The time taken for transferring the 20KB file included initial
> connection costs whereas TRAMP would presumably be reusing the same
> connection, but would be sending multiple small requests.
This just makes my argument stronger: it would mean that even 40KB
data moved for Dired would not quite explain the 10-sec delay.
> I did some further investigation; summarizing findings below:
>
> A. On Host-A, the network connection is fairly slow s.t. transferring a
> 20KB file takes ~5s. On Host-B, the network connection is fairly
> fast.
>
> B. On Host-A, the time taken to refresh dired buffer containing 22
> Subdirectories (/tmp/test/src as in above code snippet) is 0.70-0.75s
> with font-lock enabled, and about the same with font-lock disabled.
> These times exclude the time taken to establish the intiial
> connection over TRAMP.
>
> C. On Host-A, the time taken to refresh dired buffer containing 22
> symlinks (each symlink pointing to a directory, i.e., /tmp/test/links
> in the above code snippet) is 0.70-0.75s with font-lock disabled.
> With font-lock enabled the time taken is ~13-14s and the CPU is at
> 100%. These times exclude the time taken to establish the intiial
> connection over TRAMP.
>
> D. On Host-B, the time taken to display dired buffer for /tmp/test/links
> with font-lock enabled is ~2s greater than when font-lock is
> disabled. When /tmp/test/links contains 100 symlinks to directories
> (instead of 22), the time taken when font-lock is enabled is ~6s
> greater than when font-lock is disabled.
>
> Given above, I conclude:
>
> 1. The issue is present when there are symlinks to directories.
>
> 2. The issue is worse when there are greater number of symlinks to
> directories.
>
> 2. The issue is worse when the connection is slower. However, it is
> still observable when the connection is faster - if you're having
> difficulty reproducing, increase the number of symlinks to
> directories in /tmp/test/links above.
>
> 3. Given that when connection is slower, not only is the time taken for
> font-locking greater, but the CPU is at 100%, I suspect that the
> relevant code is doing some kind of busy-waiting.
Thanks you. So the problem seems to be symlinks, and specifically
symlinks to directories. Michael, what does Tramp do specially in
these cases that could explain the slowdown?
> The above observations seem consistent with Michael's comments above
> regd. font-lock checks for "Broken Symbolink link" and "Symbolic link to
> a directory".
Michael, what do these checks entail, and why are they so
CPU-expensive and take a lot of time with slow connections?
next prev parent reply other threads:[~2024-09-07 6:29 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-05 14:24 bug#73046: 29.4; Emacs 100% CPU usage for several seconds when opening dired buffer over TRAMP Suhail Singh
2024-09-05 15:56 ` Eli Zaretskii
2024-09-05 21:04 ` Suhail Singh
2024-09-06 5:40 ` Eli Zaretskii
2024-09-06 13:23 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-06 13:54 ` Eli Zaretskii
2024-09-06 14:09 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-06 16:09 ` Eli Zaretskii
2024-09-06 17:47 ` Suhail Singh
2024-09-06 19:08 ` Eli Zaretskii
2024-09-07 0:19 ` Suhail Singh
2024-09-07 1:39 ` Suhail Singh
2024-09-07 6:29 ` Eli Zaretskii [this message]
2024-09-07 8:07 ` Suhail Singh
2024-09-07 14:36 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-07 15:07 ` Eli Zaretskii
2024-09-07 17:35 ` Suhail Singh
2024-09-08 11:30 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-08 11:47 ` Eli Zaretskii
2024-09-08 15:26 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-08 15:41 ` Eli Zaretskii
2024-09-08 16:46 ` Suhail Singh
2024-09-08 17:53 ` Eli Zaretskii
2024-09-10 8:10 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-11 1:05 ` Suhail Singh
2024-09-11 11:50 ` Eli Zaretskii
2024-09-11 16:29 ` Suhail Singh
2024-09-11 16:38 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-11 17:25 ` Suhail Singh
2024-09-12 11:48 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-11 14:13 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-11 15:56 ` Suhail Singh
2024-09-13 23:17 ` Suhail Singh
2024-09-14 6:24 ` Eli Zaretskii
2024-09-14 14:25 ` Suhail Singh
2024-09-14 14:41 ` Suhail Singh
2024-09-14 15:03 ` Eli Zaretskii
2024-09-14 22:36 ` Suhail Singh
2024-09-15 5:55 ` Eli Zaretskii
2024-09-15 14:23 ` Suhail Singh
2024-09-20 9:54 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-20 10:47 ` Eli Zaretskii
2024-09-20 14:18 ` Suhail Singh
2024-09-20 15:35 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-20 15:42 ` Suhail Singh
2024-09-21 8:30 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-21 14:06 ` Suhail Singh
2024-09-14 7:07 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-14 14:39 ` Suhail Singh
2024-09-20 8:48 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-11 14:06 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-07 14:22 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-07 17:58 ` Suhail Singh
2024-09-08 11:26 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-08 15:09 ` Suhail Singh
2024-09-08 15:19 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-08 15:34 ` Suhail Singh
2024-09-08 16:35 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-11 16:19 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-06 16:56 ` Suhail Singh
2024-09-06 16:01 ` Suhail Singh
2024-09-06 15:46 ` Suhail Singh
2024-09-06 15:52 ` Suhail Singh
[not found] <87v7yz1sw8.fsf@rutgers.edu>
2024-09-13 15:47 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-20 16:05 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-20 17:11 ` Jake Nelson via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-21 6:59 ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86ttesyo1t.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=73046@debbugs.gnu.org \
--cc=michael.albinus@gmx.de \
--cc=suhailsingh247@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.