unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
@ 2019-12-17  1:23 Peter Ludemann
  2019-12-17 13:59 ` Michael Albinus
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Peter Ludemann @ 2019-12-17  1:23 UTC (permalink / raw)
  To: 38644

[-- Attachment #1: Type: text/plain, Size: 12094 bytes --]

This problem occurs with emacs 26.3 but didn't occur with 25.x.
Possibly related to bug#33194.

My hypothesis is that emacs is monitoring some files that it shouldn't
but I need some help in figuring out which files are being monitored and
whether that is indeed a bug.

When I run a CPU-bound job that also does quite a bit of I/O, emacs
becomes very unresponsive -- running "top", I see CPU usage for emacs go
into the 50-100% range.
(Ubuntu 18.04, emacs 26.3 on a 4-CPU machine with SSD disk)

The job I'm running is
    parallel -v --will-cite --keep-order --group -L80 -j8
(the problem does not go away when I change to "-j3")

As far as I know, I don't have any of the output files or directories
open (I have global-auto-revert-mode set) -- all the outputs go into one
directory and when I search the Buffer List, I don't see that
directory.

I upgraded from emacs 25.3 to 26.3 today, with the same .emacs.desktop,
and the problem wasn't showing with emacs 25.3.

I double-checked the output of lsof on one of the running CPU processes
and again couldn't find anything that matched with the Emacs
buffer. However, I did notice that file-name-history did match some.

Any suggestions on how to track down what's causing the polling?  As I
mentioned, this didn't happen with emacs 25.3 with the same files
open. It also doesn't happen when I start 26.3 without the
.emacs.desktop (that is, with nothing in the Buffer List).


"strace -c" emacs when not running the CPU/IO job:
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 31.63    0.009027           3      2950      2534 recvmsg
 23.19    0.006618           3      2057           poll
 13.38    0.003819           3      1100           rt_sigprocmask
 12.10    0.003454          17       209           pselect6
  9.17    0.002618           6       466           writev
  7.62    0.002174           5       405           rt_sigreturn
  1.21    0.000344          57         6           openat
  0.37    0.000105           4        30         1 read
  0.31    0.000089           3        26           timerfd_settime
  0.28    0.000080          11         7           ioctl
  0.22    0.000064          64         1           vfork
  0.11    0.000032          11         3           fcntl
  0.11    0.000030           4         8           close
  0.09    0.000026           1        51         9 stat
  0.06    0.000017          17         1           pipe2
  0.06    0.000016           0        48        11 faccessat
  0.04    0.000011          11         1           getuid
  0.03    0.000009           5         2           wait4
  0.01    0.000003           1         4           write
  0.00    0.000000           0         3           fstat
  0.00    0.000000           0         3           lseek
  0.00    0.000000           0         1           inotify_add_watch
  0.00    0.000000           0         1         1 readlinkat
------ ----------- ----------- --------- --------- ----------------
100.00    0.028536                  7383      2556 total

"strace -c" emacs when running the CPU/IO job:
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 30.79    0.013978           1     15384           poll
 21.05    0.009554           1     15799     12395 recvmsg
 19.44    0.008827           1      6538           writev
 13.96    0.006339           1     12446           rt_sigprocmask
  6.97    0.003162           2      1554           pselect6
  2.96    0.001342           0      3108           rt_sigreturn
  2.95    0.001338           1      1551           read
  1.88    0.000855           1      1551           ioctl
  0.00    0.000000           0        10           stat
  0.00    0.000000           0         1           restart_syscall
  0.00    0.000000           0        10           faccessat
------ ----------- ----------- --------- --------- ----------------
100.00    0.045395                 57952     12395 total

"strace -c emacs when running the CPU/IO job without
global-auto-revert-mode:

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 37.41    0.001833           1      1860      1576 recvmsg
 27.88    0.001366           1      1619           poll
 14.78    0.000724           5       142           pselect6
  7.43    0.000364           2       201           writev
  6.29    0.000308           1       570           rt_sigprocmask
  6.06    0.000297           1       318        24 rt_sigreturn
  0.08    0.000004           1         6           write
  0.06    0.000003           0         8           read
  0.02    0.000001           1         2           openat
  0.00    0.000000           0         2           close
  0.00    0.000000           0         6         3 recvfrom
  0.00    0.000000           0         1         1 faccessat
------ ----------- ----------- --------- --------- ----------------
100.00    0.004900                  4735      1604 total



In GNU Emacs 26.3 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.22.30)
 of 2019-09-16 built on lcy01-amd64-030
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Ubuntu 18.04.3 LTS

Recent messages:
Making completion list...
Saving file /tmp/t10.kythe.json-decoded...
Wrote /tmp/t10.kythe.json-decoded
Quit [5 times]
command-execute: Buffer is read-only: #<buffer *Help*>
Mark set
Quit
Mark saved where search started
Quit [2 times]
Mark saved where search started [2 times]
Quit [4 times]
Configured using:
 'configure --build=x86_64-linux-gnu --prefix=/usr
 '--includedir=${prefix}/include' '--mandir=${prefix}/share/man'
 '--infodir=${prefix}/share/info' --sysconfdir=/etc --localstatedir=/var
 --disable-silent-rules '--libdir=${prefix}/lib/x86_64-linux-gnu'
 '--libexecdir=${prefix}/lib/x86_64-linux-gnu' --disable-maintainer-mode
 --disable-dependency-tracking --prefix=/usr --sharedstatedir=/var/lib
 --program-suffix=26 --with-modules --with-file-notification=inotify
 --with-mailutils --with-x=yes --with-x-toolkit=gtk3 --with-xwidgets
 --with-lcms2 'CFLAGS=-g -O2
 -fdebug-prefix-map=/build/emacs26-TP6iDo/emacs26-26.3~1.git96dd019=.
-fstack-protector-strong
 -Wformat -Werror=format-security -no-pie' 'CPPFLAGS=-Wdate-time
 -D_FORTIFY_SOURCE=2' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro
 -no-pie''

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB
NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS
LIBSYSTEMD LCMS2

Important settings:
  value of $LC_MONETARY: en_CA.UTF-8
  value of $LC_NUMERIC: en_CA.UTF-8
  value of $LC_TIME: en_CA.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: GNUmakefile

Minor modes in effect:
  shell-dirtrack-mode: t
  diff-auto-refine-mode: t
  global-auto-revert-mode: t
  show-paren-mode: t
  display-time-mode: t
  savehist-mode: t
  desktop-save-mode: t
  cl-old-struct-compat-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/usr/share/emacs/site-lisp/llvm-6.0/llvm-mode hides
/usr/share/emacs/site-lisp/llvm-7/llvm-mode
/usr/share/emacs/site-lisp/llvm-6.0/emacs hides
/usr/share/emacs/site-lisp/llvm-7/emacs
/usr/share/emacs/site-lisp/llvm-6.0/tablegen-mode hides
/usr/share/emacs/site-lisp/llvm-7/tablegen-mode
/home/peter/.emacs.d/elpa/go-mode-1.5.0/go-mode hides
/usr/share/emacs/site-lisp/elpa-src/go-mode-1.5.0/go-mode
/home/peter/.emacs.d/elpa/go-mode-1.5.0/go-mode-autoloads hides
/usr/share/emacs/site-lisp/elpa-src/go-mode-1.5.0/go-mode-autoloads
/home/peter/.emacs.d/elpa/go-mode-1.5.0/go-mode-pkg hides
/usr/share/emacs/site-lisp/elpa-src/go-mode-1.5.0/go-mode-pkg
/usr/share/emacs/site-lisp/dictionaries-common/flyspell hides
/usr/share/emacs/26.3/lisp/textmodes/flyspell
/usr/share/emacs/site-lisp/dictionaries-common/ispell hides
/usr/share/emacs/26.3/lisp/textmodes/ispell
/usr/share/emacs/site-lisp/rst hides
/usr/share/emacs/26.3/lisp/textmodes/rst
~/emacs/prolog hides /usr/share/emacs/26.3/lisp/progmodes/prolog
/usr/share/emacs/site-lisp/latex-cjk-thai/thai-word hides
/usr/share/emacs/26.3/lisp/language/thai-word

Features:
(shadow mail-extr emacsbug sendmail eieio-opt speedbar sb-image ezimage
dframe find-func completion help-fns tabify man novice pulse misearch
multi-isearch solarized dash quail inf-haskell haskell-decl-scan haskell
haskell-completions haskell-load haskell-commands highlight-uses-mode
haskell-modules haskell-sandbox haskell-repl haskell-debug
haskell-interactive-mode haskell-presentation-mode haskell-collapse
haskell-navigate-imports haskell-compile haskell-process haskell-session
haskell-hoogle edmacro kmacro sort autoload radix-tree cl-extra lisp-mnt
help-mode mm-archive network-stream starttls url-http tls gnutls url-gw
nsm url-cache url-auth vc vc-dispatcher server erlang tempo cl perl-mode
asm-mode conf-mode jka-compr add-log rst haskell-mode haskell-cabal
haskell-utils haskell-font-lock haskell-indentation haskell-string
haskell-sort-imports haskell-lexeme rx haskell-align-imports
haskell-compat haskell-complete-module haskell-ghc-support flymake-proc
flymake warnings dabbrev haskell-customize go-mode url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util mailcap find-file ffap etags xref project sh-script executable
tar-mode markdown-mode noutline outline message rmc puny rfc822 mml
mml-sec epa derived epg gnus-util rmail rmail-loaddefs mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader
elec-pair mhtml-mode css-mode smie color dired dired-loaddefs make-mode
python tramp-sh tramp tramp-compat tramp-loaddefs trampver ucs-normalize
parse-time format-spec smerge-mode prolog align shell pcomplete vc-git
diff-mode easy-mmode js advice sgml-mode dom json map imenu thingatpt
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs finder-inf info package easymenu epg-config url-handlers
url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache url-vars seq byte-opt gv bytecomp byte-compile cconv
autorevert filenotify grep compile comint ansi-color ring cus-start
cus-load time-date paren time savehist desktop frameset cl-loaddefs
cl-lib mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
xwidget-internal move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 791439 152674)
 (symbols 48 44537 1)
 (miscs 40 2000 2396)
 (strings 32 134121 30613)
 (string-bytes 1 6691533)
 (vectors 16 70253)
 (vector-slots 8 1997947 168512)
 (floats 8 365 431)
 (intervals 56 50166 2906)
 (buffers 992 501))

[-- Attachment #2: Type: text/html, Size: 14345 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
  2019-12-17  1:23 bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode Peter Ludemann
@ 2019-12-17 13:59 ` Michael Albinus
  2019-12-17 16:17 ` Eli Zaretskii
  2020-01-05 13:04 ` Mattias Engdegård
  2 siblings, 0 replies; 14+ messages in thread
From: Michael Albinus @ 2019-12-17 13:59 UTC (permalink / raw)
  To: Peter Ludemann; +Cc: 38644

Peter Ludemann <peter.ludemann@gmail.com> writes:

Hi Peter,

> This problem occurs with emacs 26.3 but didn't occur with 25.x.
> Possibly related to bug#33194.

That's a good catch.

> My hypothesis is that emacs is monitoring some files that it shouldn't
> but I need some help in figuring out which files are being monitored
> and whether that is indeed a bug.
>
> When I run a CPU-bound job that also does quite a bit of I/O, emacs
> becomes very unresponsive -- running "top", I see CPU usage for emacs
> go into the 50-100% range.  (Ubuntu 18.04, emacs 26.3 on a 4-CPU
> machine with SSD disk)
>
> The job I'm running is
>    parallel -v --will-cite --keep-order --group -L80 -j8
> (the problem does not go away when I change to "-j3")

You are reading commands from STDIN? Which?

> As far as I know, I don't have any of the output files or directories
> open (I have global-auto-revert-mode set) -- all the outputs go into
> one directory and when I search the Buffer List, I don't see that
> directory.

It might be the default directory of a buffer not bound to a file.

> I upgraded from emacs 25.3 to 26.3 today, with the same .
> emacs.desktop, and the problem wasn't showing with emacs 25.3.

In bug#33194, a patch for Emacs 27.0.50 is mentioned. Do you have a
chance to run this for test?

> Any suggestions on how to track down what's causing the polling?  As I
> mentioned, this didn't happen with emacs 25.3 with the same files
> open. It also doesn't happen when I start 26.3 without the
> .emacs.desktop (that is, with nothing in the Buffer List).

Could you show the contents of .emacs.desktop?

What happens if you set auto-revert-use-notify to nil?

What's the value of (pp file-notify-descriptors) ?

What do you see, if you remove the comment of the message call in
file-notify-handle-event (lisp/filenotify.el, line 93)?

> "strace -c" emacs when not running the CPU/IO job:
> % time     seconds  usecs/call     calls    errors syscall
> ------ ----------- ----------- --------- --------- ----------------
>  31.63    0.009027           3      2950      2534 recvmsg
>  23.19    0.006618           3      2057           poll
>  13.38    0.003819           3      1100           rt_sigprocmask
>  12.10    0.003454          17       209           pselect6
>   9.17    0.002618           6       466           writev
>   7.62    0.002174           5       405           rt_sigreturn
>   1.21    0.000344          57         6           openat
>   0.37    0.000105           4        30         1 read
>   0.31    0.000089           3        26           timerfd_settime
>   0.28    0.000080          11         7           ioctl
>   0.22    0.000064          64         1           vfork
>   0.11    0.000032          11         3           fcntl
>   0.11    0.000030           4         8           close
>   0.09    0.000026           1        51         9 stat
>   0.06    0.000017          17         1           pipe2
>   0.06    0.000016           0        48        11 faccessat
>   0.04    0.000011          11         1           getuid
>   0.03    0.000009           5         2           wait4
>   0.01    0.000003           1         4           write
>   0.00    0.000000           0         3           fstat
>   0.00    0.000000           0         3           lseek
>   0.00    0.000000           0         1           inotify_add_watch
>   0.00    0.000000           0         1         1 readlinkat
> ------ ----------- ----------- --------- --------- ----------------
> 100.00    0.028536                  7383      2556 total

inotify_add_watch is an indication, that file notifications are in
place.

Best regards, Michael.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
  2019-12-17  1:23 bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode Peter Ludemann
  2019-12-17 13:59 ` Michael Albinus
@ 2019-12-17 16:17 ` Eli Zaretskii
  2019-12-17 18:27   ` Peter Ludemann
  2020-01-05 13:04 ` Mattias Engdegård
  2 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2019-12-17 16:17 UTC (permalink / raw)
  To: Peter Ludemann; +Cc: 38644

> From: Peter Ludemann <peter.ludemann@gmail.com>
> Date: Mon, 16 Dec 2019 17:23:30 -0800
> 
> My hypothesis is that emacs is monitoring some files that it shouldn't

Emacs actually monitors the directory of every file whose buffer has
auto-revert-mode turned on, if you use file notifications for
auto-reverting (which is the default).

> When I run a CPU-bound job that also does quite a bit of I/O, emacs
> becomes very unresponsive -- running "top", I see CPU usage for emacs go
> into the 50-100% range.

Does "a bit of I/O" includes creating, deleting, or modifying files in
a directory where you have a file whose buffer has auto-revert-mode?

> As far as I know, I don't have any of the output files or directories
> open (I have global-auto-revert-mode set) -- all the outputs go into one
> directory and when I search the Buffer List, I don't see that
> directory.

Turn off auto-revert-use-notify and try again, would be my advice.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
  2019-12-17 16:17 ` Eli Zaretskii
@ 2019-12-17 18:27   ` Peter Ludemann
  2019-12-17 19:30     ` Michael Albinus
  0 siblings, 1 reply; 14+ messages in thread
From: Peter Ludemann @ 2019-12-17 18:27 UTC (permalink / raw)
  Cc: 38644

[-- Attachment #1: Type: text/plain, Size: 1590 bytes --]

So many questions (thank-you!) ... I'll try to answer them soon (and there
are also a few experiments I should try first).

But first: I see different versions of this discussion at
https://lists.gnu.org/archive/html/bug-gnu-emacs/2018-10/msg00997.html and
http://emacs.1067599.n8.nabble.com/bug-33194-26-1-Auto-revert-mode-causes-emacs-to-use-100-cpu-whenever-a-file-is-being-written-to-in-ty-tt468378.html#none
(the
former has a 2nd thread, which mentions the patch in Emacs 27) ... what is
the correct way to interact with emacs bugs?


On Tue, 17 Dec 2019 at 08:17, Eli Zaretskii <eliz@gnu.org> wrote:

> > From: Peter Ludemann <peter.ludemann@gmail.com>
> > Date: Mon, 16 Dec 2019 17:23:30 -0800
> >
> > My hypothesis is that emacs is monitoring some files that it shouldn't
>
> Emacs actually monitors the directory of every file whose buffer has
> auto-revert-mode turned on, if you use file notifications for
> auto-reverting (which is the default).
>
> > When I run a CPU-bound job that also does quite a bit of I/O, emacs
> > becomes very unresponsive -- running "top", I see CPU usage for emacs go
> > into the 50-100% range.
>
> Does "a bit of I/O" includes creating, deleting, or modifying files in
> a directory where you have a file whose buffer has auto-revert-mode?
>
> > As far as I know, I don't have any of the output files or directories
> > open (I have global-auto-revert-mode set) -- all the outputs go into one
> > directory and when I search the Buffer List, I don't see that
> > directory.
>
> Turn off auto-revert-use-notify and try again, would be my advice.
>

[-- Attachment #2: Type: text/html, Size: 2787 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
  2019-12-17 18:27   ` Peter Ludemann
@ 2019-12-17 19:30     ` Michael Albinus
  2019-12-28 21:12       ` Peter Ludemann
  0 siblings, 1 reply; 14+ messages in thread
From: Michael Albinus @ 2019-12-17 19:30 UTC (permalink / raw)
  To: Peter Ludemann; +Cc: 38644

Peter Ludemann <peter.ludemann@gmail.com> writes:

> But first: I see different versions of this discussion at
> https://lists.gnu.org/archive/html/bug-gnu-emacs/2018-10/msg00997.html
> and
> http://emacs.1067599.n8.nabble.com/bug-33194-26-1-Auto-revert-mode-causes-emacs-to-use-100-cpu-whenever-a-file-is-being-written-to-in-ty-tt468378.html#none
> (the former has a 2nd thread, which mentions the patch in Emacs 27) .
> .. what is the correct way to interact with emacs bugs?

Just reply to this message, and keep 38644@debbugs.gnu.org in Cc. Whether
you keep me (or anybody else) in the list of recipients depends on your taste.

Best regards, Michael.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
  2019-12-17 19:30     ` Michael Albinus
@ 2019-12-28 21:12       ` Peter Ludemann
  2019-12-29 15:23         ` Michael Albinus
  0 siblings, 1 reply; 14+ messages in thread
From: Peter Ludemann @ 2019-12-28 21:12 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 38644

[-- Attachment #1: Type: text/plain, Size: 29452 bytes --]

> In bug#33194, a patch for Emacs 27.0.50 is mentioned. Do you have a chance
to run this for test?

Emacs 27.0.50 somewhat fixes the problem with global-auto-revert-mode,
using the same desktop file (and same open files) that was causing problems
with Emacs 26.3. (Sorry I took so long to test this.)
Emacs CPU utilization is now ~30-80% (according to top(1)) instead of 100%;
and responsiveness is good. Of course, it would be nicer if emacs CPU
utilization were less, so that I could fully utilize that core (I only have
4 cores, so losing half a core is notable on large tests).

Michael Albinus - you had a number of other questions ... do you still want
them (or some of them) answered?

best,
- peter

PS: Here's the desktop file, in case that can give some clue as to what
file or directory is causing problems. The "compilation" processes both
input from and output into /tmp/pykythe_test -- as you can see, there are a
couple of open files from that directory, but they're not being
continuously updated, only once or twice per test.

begin 644 bug38644-desktop.gz
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
;R$>/SX.>M$;2,FV4P;38J!/V'[#+5#J+:`(`
`
end

[-- Attachment #2: Type: text/html, Size: 40329 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
  2019-12-28 21:12       ` Peter Ludemann
@ 2019-12-29 15:23         ` Michael Albinus
  2020-01-04 18:50           ` Peter Ludemann
  0 siblings, 1 reply; 14+ messages in thread
From: Michael Albinus @ 2019-12-29 15:23 UTC (permalink / raw)
  To: Peter Ludemann; +Cc: 38644

Peter Ludemann <peter.ludemann@gmail.com> writes:

Hi Peter,

>> In bug#33194, a patch for Emacs 27.0.50 is mentioned. Do you have a
>> chance to run this for test?
>
> Emacs 27.0.50 somewhat fixes the problem with global-auto-revert-mode,
> using the same desktop file (and same open files) that was causing
> problems with Emacs 26.3. (Sorry I took so long to test this.)

Thanks for the feedback, the fix in Emacs 27 seems to work.

> Emacs CPU utilization is now ~30-80% (according to top(1)) instead of
> 100%; and responsiveness is good. Of course, it would be nicer if
> emacs CPU utilization were less, so that I could fully utilize that
> core (I only have 4 cores, so losing half a core is notable on large
> tests).

If I count correctly, your desktop file contains 489 buffers. Heavy load
for global-auto-revert-mode.

> Michael Albinus - you had a number of other questions ... do you still
> want them (or some of them) answered?

No, I don't believe so.

> PS: Here's the desktop file, in case that can give some clue as to
> what file or directory is causing problems. The "compilation"
> processes both input from and output into /tmp/pykythe_test -- as you
> can see, there are a couple of open files from that directory, but
> they're not being continuously updated, only once or twice per test.

auto-revert watches directories. Even if you watch only some few files
in a directory (I count 29 buffers which are bound to "/tmp"), there
will be lot of file notification events when other files in that
directory are changed. Maybe it helps to set auto-revert-use-notify to
nil for those files? You could do it via directory-local variales, as in

(dir-locals-set-class-variables 'auto-revert-with-polling
   '((nil . ((auto-revert-use-notify . nil)))))

(dir-locals-set-directory-class
   "/tmp/" 'auto-revert-with-polling)

(This is untested.)

> best,
> - peter

Best regards, Michael.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
  2019-12-29 15:23         ` Michael Albinus
@ 2020-01-04 18:50           ` Peter Ludemann
  2020-01-05  9:28             ` Michael Albinus
  0 siblings, 1 reply; 14+ messages in thread
From: Peter Ludemann @ 2020-01-04 18:50 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 38644

[-- Attachment #1: Type: text/plain, Size: 3450 bytes --]

A few small comments/questions inline ...

On Sun, 29 Dec 2019 at 07:23, Michael Albinus <michael.albinus@gmx.de>
wrote:

> Peter Ludemann <peter.ludemann@gmail.com> writes:
>
> Hi Peter,
>
> >> In bug#33194, a patch for Emacs 27.0.50 is mentioned. Do you have a
> >> chance to run this for test?
> >
> > Emacs 27.0.50 somewhat fixes the problem with global-auto-revert-mode,
> > using the same desktop file (and same open files) that was causing
> > problems with Emacs 26.3. (Sorry I took so long to test this.)
>
> Thanks for the feedback, the fix in Emacs 27 seems to work.
>

Correction: Emacs 28.05, cloned from git://git.sv.gnu.org/emacs.git and
built using the instructions at
https://www.emacswiki.org/emacs/EmacsSnapshotAndDebian#toc3


> > Emacs CPU utilization is now ~30-80% (according to top(1)) instead of
> > 100%; and responsiveness is good. Of course, it would be nicer if
> > emacs CPU utilization were less, so that I could fully utilize that
> > core (I only have 4 cores, so losing half a core is notable on large
> > tests).
>
> If I count correctly, your desktop file contains 489 buffers. Heavy load
> for global-auto-revert-mode.
>

This is the result of working on a project for several months (using
emacs-daemon). For example, 94 of those files are from Python and
SWI-Prolog standard libraries, because I needed to get implementation
details ("use the source, Luke"); and I'm using pieces from about 5
packages, whose source I also need to look at.

So, it's a little sloppy, but not unreasonable, I think.


>
> > Michael Albinus - you had a number of other questions ... do you still
> > want them (or some of them) answered?
>
> No, I don't believe so.
>
> > PS: Here's the desktop file, in case that can give some clue as to
> > what file or directory is causing problems. The "compilation"
> > processes both input from and output into /tmp/pykythe_test -- as you
> > can see, there are a couple of open files from that directory, but
> > they're not being continuously updated, only once or twice per test.
>
> auto-revert watches directories. Even if you watch only some few files
> in a directory (I count 29 buffers which are bound to "/tmp"), there
> will be lot of file notification events when other files in that
> directory are changed. Maybe it helps to set auto-revert-use-notify to
> nil for those files? You could do it via directory-local variales, as in
>

If I understand you correctly, Emacs doesn't watch individual files but
instead watches the directories that those files are in ... if a file
changes, then the directory will be changed with the file is
written/closed. Is this a correct understanding? (Presumably the reason for
this is that if files /path/to/dir/A, /path/to/dir/B, /path/to/dir/C are
open in buffers, it suffices to only watch for changes to /path/to/dir; and
if /path/to/dir/D is opened, no change to the watch list is needed.)


>
> (dir-locals-set-class-variables 'auto-revert-with-polling
>    '((nil . ((auto-revert-use-notify . nil)))))
>
> (dir-locals-set-directory-class
>    "/tmp/" 'auto-revert-with-polling)
>
> (This is untested.)
>

I haven't tested this because emacs 28.05 gives me adequate performance and
I can live with turning global-auto-revert on/off when I do a big test
(turning it off makes the test run a bit faster because there's another 0.5
CPU available for the test).

Thanks again!

- peter


> > best,
> > - peter
>
> Best regards, Michael.
>

[-- Attachment #2: Type: text/html, Size: 6061 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
  2020-01-04 18:50           ` Peter Ludemann
@ 2020-01-05  9:28             ` Michael Albinus
  0 siblings, 0 replies; 14+ messages in thread
From: Michael Albinus @ 2020-01-05  9:28 UTC (permalink / raw)
  To: Peter Ludemann; +Cc: 38644-done

Version: 27.1

Peter Ludemann <peter.ludemann@gmail.com> writes:

Hi Peter,

> I haven't tested this because emacs 28.05 gives me adequate
> performance and I can live with turning global-auto-revert on/off when
> I do a big test (turning it off makes the test run a bit faster
> because there's another 0.5 CPU available for the test).

So it's OK for you; I'll close the bug.

> Thanks again!
>
> - peter

Best regards, Michael.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
  2019-12-17  1:23 bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode Peter Ludemann
  2019-12-17 13:59 ` Michael Albinus
  2019-12-17 16:17 ` Eli Zaretskii
@ 2020-01-05 13:04 ` Mattias Engdegård
  2020-01-05 19:31   ` Peter Ludemann
  2 siblings, 1 reply; 14+ messages in thread
From: Mattias Engdegård @ 2020-01-05 13:04 UTC (permalink / raw)
  To: 38644; +Cc: Michael Albinus, Peter Ludemann

Just out of curiosity --- did you try setting auto-revert-avoid-polling?
If so, did it have any effect?






^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
  2020-01-05 13:04 ` Mattias Engdegård
@ 2020-01-05 19:31   ` Peter Ludemann
  2020-01-05 19:57     ` Mattias Engdegård
  0 siblings, 1 reply; 14+ messages in thread
From: Peter Ludemann @ 2020-01-05 19:31 UTC (permalink / raw)
  To: Mattias Engdegård; +Cc: 38644, Michael Albinus

[-- Attachment #1: Type: text/plain, Size: 939 bytes --]

Mattias:

Are you asking if I've tried this:

(dir-locals-set-class-variables 'auto-revert-with-polling
   '((nil . ((auto-revert-use-notify . nil)))))

(dir-locals-set-directory-class
   "/tmp/" 'auto-revert-with-polling)

No, I haven't.

Which version of Emacs would you like me to try this with? And what result
are you expecting/hoping to see? (e.g., might it reduce the current 30-80%
CPU load for polling with emacs 28.0.50?) There are only a few open files
directly under /tmp, so would this have any effect or does it propagate
down to subdirectories?

[Also, I'd need a few more details (not being an emacs-internals person)
... should I add this to my .emacs and restart, or execute in a scratch
buffer, or ...?]

On Sun, 5 Jan 2020 at 05:05, Mattias Engdegård <mattiase@acm.org> wrote:

> Just out of curiosity --- did you try setting auto-revert-avoid-polling?
> If so, did it have any effect?
>
>

[-- Attachment #2: Type: text/html, Size: 2850 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
  2020-01-05 19:31   ` Peter Ludemann
@ 2020-01-05 19:57     ` Mattias Engdegård
  2020-01-07  0:01       ` Peter Ludemann
  0 siblings, 1 reply; 14+ messages in thread
From: Mattias Engdegård @ 2020-01-05 19:57 UTC (permalink / raw)
  To: Peter Ludemann; +Cc: 38644, Michael Albinus

5 jan. 2020 kl. 20.31 skrev Peter Ludemann <peter.ludemann@gmail.com>:

> Which version of Emacs would you like me to try this with? And what result are you expecting/hoping to see? (e.g., might it reduce the current 30-80% CPU load for polling with emacs 28.0.50?) There are only a few open files directly under /tmp, so would this have any effect or does it propagate down to subdirectories?
> 
> [Also, I'd need a few more details (not being an emacs-internals person) ... should I add this to my .emacs and restart, or execute in a scratch buffer, or ...?]

'auto-revert-avoid-polling' is a single global customisable variable, so you would set it using

 M-x customise-variable RET auto-revert-avoid-polling RET

, then turn it on and apply the change. I believe it was introduced in Emacs 27.

The idea is to save CPU by not having to look at files periodically to see if they have changed. I have no idea if you would see any improvement at all, but it shouldn't make anything worse.






^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
  2020-01-05 19:57     ` Mattias Engdegård
@ 2020-01-07  0:01       ` Peter Ludemann
  2020-01-07  0:34         ` Peter Ludemann
  0 siblings, 1 reply; 14+ messages in thread
From: Peter Ludemann @ 2020-01-07  0:01 UTC (permalink / raw)
  To: Mattias Engdegård; +Cc: 38644, Michael Albinus

[-- Attachment #1: Type: text/plain, Size: 1491 bytes --]

If anything, auto-revert-avoid-polling makes responsiveness worse -- the
window locked up a few times on me while doing ctrl-N while running a
CPU-intensive (and possibly IO-intensive) compilation.
Although I might not have set the value correctly ... I did M-x
customise-variable RET auto-revert-avoid-polling RET then "toggle" then
"apply".
.

On Sun, 5 Jan 2020 at 11:57, Mattias Engdegård <mattiase@acm.org> wrote:

> 5 jan. 2020 kl. 20.31 skrev Peter Ludemann <peter.ludemann@gmail.com>:
>
> > Which version of Emacs would you like me to try this with? And what
> result are you expecting/hoping to see? (e.g., might it reduce the current
> 30-80% CPU load for polling with emacs 28.0.50?) There are only a few open
> files directly under /tmp, so would this have any effect or does it
> propagate down to subdirectories?
> >
> > [Also, I'd need a few more details (not being an emacs-internals person)
> ... should I add this to my .emacs and restart, or execute in a scratch
> buffer, or ...?]
>
> 'auto-revert-avoid-polling' is a single global customisable variable, so
> you would set it using
>
>  M-x customise-variable RET auto-revert-avoid-polling RET
>
> , then turn it on and apply the change. I believe it was introduced in
> Emacs 27.
>
> The idea is to save CPU by not having to look at files periodically to see
> if they have changed. I have no idea if you would see any improvement at
> all, but it shouldn't make anything worse.
>
>

[-- Attachment #2: Type: text/html, Size: 2080 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode
  2020-01-07  0:01       ` Peter Ludemann
@ 2020-01-07  0:34         ` Peter Ludemann
  0 siblings, 0 replies; 14+ messages in thread
From: Peter Ludemann @ 2020-01-07  0:34 UTC (permalink / raw)
  To: Mattias Engdegård; +Cc: 38644, Michael Albinus

[-- Attachment #1: Type: text/plain, Size: 2234 bytes --]

Correction -- the "lock-up" I observed might have been due to paging
(possibly related to emacs - I'll have to investigate later).
Toggling auto-revert-avoid-polling appeared to reduc emacs CPU usage,
according to top(1) - it's a bit difficult to tell because there seems to
be some lag in when the command takes effect and my compilation process
switches a certain amount between CPU-intensive and IO-intensive. Anyway,
CPU seemed to drop from ~60% to ~30% (please take this observation with a
large grain of salt).
I'll try more things in the future and report if anything interesting shows
up.
- peter

On Mon, 6 Jan 2020 at 16:01, Peter Ludemann <peter.ludemann@gmail.com>
wrote:

> If anything, auto-revert-avoid-polling makes responsiveness worse -- the
> window locked up a few times on me while doing ctrl-N while running a
> CPU-intensive (and possibly IO-intensive) compilation.
> Although I might not have set the value correctly ... I did M-x
> customise-variable RET auto-revert-avoid-polling RET then "toggle" then
> "apply".
> .
>
> On Sun, 5 Jan 2020 at 11:57, Mattias Engdegård <mattiase@acm.org> wrote:
>
>> 5 jan. 2020 kl. 20.31 skrev Peter Ludemann <peter.ludemann@gmail.com>:
>>
>> > Which version of Emacs would you like me to try this with? And what
>> result are you expecting/hoping to see? (e.g., might it reduce the current
>> 30-80% CPU load for polling with emacs 28.0.50?) There are only a few open
>> files directly under /tmp, so would this have any effect or does it
>> propagate down to subdirectories?
>> >
>> > [Also, I'd need a few more details (not being an emacs-internals
>> person) ... should I add this to my .emacs and restart, or execute in a
>> scratch buffer, or ...?]
>>
>> 'auto-revert-avoid-polling' is a single global customisable variable, so
>> you would set it using
>>
>>  M-x customise-variable RET auto-revert-avoid-polling RET
>>
>> , then turn it on and apply the change. I believe it was introduced in
>> Emacs 27.
>>
>> The idea is to save CPU by not having to look at files periodically to
>> see if they have changed. I have no idea if you would see any improvement
>> at all, but it shouldn't make anything worse.
>>
>>

[-- Attachment #2: Type: text/html, Size: 3372 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2020-01-07  0:34 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-12-17  1:23 bug#38644: 26.3; emacs uses 100% CPU with auto-revert-mode Peter Ludemann
2019-12-17 13:59 ` Michael Albinus
2019-12-17 16:17 ` Eli Zaretskii
2019-12-17 18:27   ` Peter Ludemann
2019-12-17 19:30     ` Michael Albinus
2019-12-28 21:12       ` Peter Ludemann
2019-12-29 15:23         ` Michael Albinus
2020-01-04 18:50           ` Peter Ludemann
2020-01-05  9:28             ` Michael Albinus
2020-01-05 13:04 ` Mattias Engdegård
2020-01-05 19:31   ` Peter Ludemann
2020-01-05 19:57     ` Mattias Engdegård
2020-01-07  0:01       ` Peter Ludemann
2020-01-07  0:34         ` Peter Ludemann

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).