GNU bug report logs - #41194
28.0.50; [feature/native-comp] fibn benchmark exhausts memory

Previous Next

Package: emacs;

Reported by: Kévin Le Gouguec <kevin.legouguec <at> gmail.com>

Date: Mon, 11 May 2020 20:49:01 UTC

Severity: normal

Found in version 28.0.50

Done: Kévin Le Gouguec <kevin.legouguec <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Kévin Le Gouguec <kevin.legouguec <at> gmail.com>
To: 41194 <at> debbugs.gnu.org
Subject: bug#41194: 28.0.50; [feature/native-comp] fibn benchmark exhausts memory
Date: Mon, 11 May 2020 22:47:33 +0200
[Message part 1 (text/plain, inline)]
As detailed in bug#41077, I compiled the feature/native-comp branch[1]
on a low-end-ish laptop[2], blacklisting char-fold.el since native
compilation took too much memory for this file.

As reported there, I get appreciable speedups on the benchmarks
distributed in the elisp-benchmarks ELPA package, except for one
specific test: fibn.  When native-compiled (with any value of
comp-speed), this test makes Emacs abort with the message:

> Memory exhausted--use C-x s then exit and restart Emacs

I've plotted some graphs showing fibn's memory consumption for every
value of comp-speed, as well as for emacs master[3] (where all 3
iterations run to completion):

[fibn.pdf (application/pdf, attachment)]
[Message part 3 (text/plain, inline)]
See [4] for the methodology, source material and logs.  Out of curiosity
I've disassembled the compiled functions in fibn.el for comp-speed 2;
I'm not fluent enough in assembly to spot anything obviously wrong[5].


Let me know if there are things you would like me to try out in order to
investigate this.  


[1] Commit 92cf4bb8cc3da81f4877a734b9e9089ac4b89e85.

[2] Samsung NC10, 2GB RAM, 2GB HDD swap, on Debian Buster.

[3] Commit 9d8fc3a598090da518fcdd5c0503ed0f7faa41a9.

[4] .eln files compiled with:

    (dotimes (i 4) (rename-file (let ((comp-speed i)) (native-compile "fibn.el"))
                                (format "fibn-%d.eln" i)))

    Script used to collect measurements on branch native-comp:
[repro.sh (application/x-shellscript, attachment)]
[Message part 5 (text/plain, inline)]
    Script used to collect measurements on branch master:
[master.sh (application/x-shellscript, attachment)]
[Message part 7 (text/plain, inline)]
    Script used to plot the graphs:
[plot.py (text/x-python, attachment)]
[Message part 9 (text/plain, inline)]
    Measurements:
[measurements.tgz (application/x-compressed-tar, attachment)]
[Message part 11 (text/plain, inline)]
    Logs for native-comp:
[repro.log (text/x-log, attachment)]
[Message part 13 (text/plain, inline)]
    Logs for master:
[master.log (text/x-log, attachment)]
[Message part 15 (text/plain, inline)]
[5]
[elb-fibn.s (text/x-asm, attachment)]
[elb-fibn-entry.s (text/x-asm, attachment)]

This bug report was last modified 4 years and 363 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.