* bug#41194: 28.0.50; [feature/native-comp] fibn benchmark exhausts memory
@ 2020-05-11 20:47 Kévin Le Gouguec
2020-06-09 22:24 ` Andrea Corallo
0 siblings, 1 reply; 9+ messages in thread
From: Kévin Le Gouguec @ 2020-05-11 20:47 UTC (permalink / raw)
To: 41194
[-- Attachment #1: Type: text/plain, Size: 663 bytes --]
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):
[-- Attachment #2: fibn.pdf --]
[-- Type: application/pdf, Size: 81262 bytes --]
[-- Attachment #3: Type: text/plain, Size: 716 bytes --]
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:
[-- Attachment #4: repro.sh --]
[-- Type: application/x-shellscript, Size: 690 bytes --]
[-- Attachment #5: Type: text/plain, Size: 59 bytes --]
Script used to collect measurements on branch master:
[-- Attachment #6: master.sh --]
[-- Type: application/x-shellscript, Size: 469 bytes --]
[-- Attachment #7: Type: text/plain, Size: 37 bytes --]
Script used to plot the graphs:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: plot.py --]
[-- Type: text/x-python, Size: 2291 bytes --]
#!/usr/bin/env python3
from datetime import datetime, timedelta
from pathlib import Path
import re
import matplotlib
from matplotlib import pyplot
from matplotlib.ticker import EngFormatter
MONITOR_RE = re.compile('\n'.join((
'(?P<time>.+)',
r' *(?P<seconds>\d+) +(?P<vsz>\d+) +(?P<rss>\d+) +(?P<args>.+)',
' *(?P<memheader>.+)',
'Mem: *(?P<memvalues>.+)',
'Swap: *(?P<swapvalues>.+)',
''
)), flags=re.MULTILINE)
def list_snapshots(monitor_log):
snapshots = []
for match in MONITOR_RE.finditer(monitor_log):
md = match.groupdict()
memkeys = md['memheader'].split()
memvalues = md['memvalues'].split()
swapvalues = md['swapvalues'].split()
snapshot = {
'time': datetime.strptime(md['time'], '%Y-%m-%d-%H:%M:%S'),
'uptime': int(md['seconds']),
'vsz': int(md['vsz'])*1024,
'rss': int(md['rss'])*1024,
'process': md['args'],
'mem': {memkeys[i]: int(val)*1024 for i, val in enumerate(memvalues)},
'swap': {memkeys[i]: int(val)*1024 for i, val in enumerate(swapvalues)}
}
snapshots.append(snapshot)
return snapshots
def graph_logs(f, title):
snapshots = list_snapshots(Path(f).read_text())
x0 = snapshots[0]['time']
xs = tuple((s['time']-x0).seconds for s in snapshots)
vsz = tuple(s['vsz'] for s in snapshots)
rss = tuple(s['rss'] for s in snapshots)
memavail = tuple(s['mem']['available'] for s in snapshots)
swapused = tuple(s['swap']['used'] for s in snapshots)
fig, axes = pyplot.subplots()
axes.plot(xs, vsz, label='VSZ (process)')
axes.plot(xs, rss, label='RSS (process)')
axes.plot(xs, memavail, label='available memory (system)', linewidth=0.5)
axes.plot(xs, swapused, label='used swap (system)')
axes.set_xlim(0, (snapshots[-1]['time']-x0).seconds)
axes.set_xlabel('seconds')
axes.set_ylim(0)
axes.yaxis.set_major_formatter(EngFormatter(unit='B'))
axes.legend()
axes.set_title(title)
pyplot.savefig(f.replace('.log', '.pdf'))
pyplot.show()
matplotlib.use('TkAgg')
for i in range(4):
graph_logs(f'fibn-{i}.log', f'fibn test with comp-speed {i}')
graph_logs('fibn-master.log', 'fibn test with emacs master')
[-- Attachment #9: Type: text/plain, Size: 19 bytes --]
Measurements:
[-- Attachment #10: measurements.tgz --]
[-- Type: application/x-compressed-tar, Size: 18291 bytes --]
[-- Attachment #11: Type: text/plain, Size: 27 bytes --]
Logs for native-comp:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #12: repro.log --]
[-- Type: text/x-log, Size: 5050 bytes --]
+ elisp_benchmarks=/home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/elisp-benchmarks.el
+ gccemacs=/home/peniblec/Downloads/sources/emacs-meta/feature/native-comp/src/emacs
+ for i in {0..3}
+ sudo swapoff -a
+ sudo swapon -a
++ dirname /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/elisp-benchmarks.el
+ cd /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks
+ ln -sf fibn-0.eln fibn.eln
+ out=fibn-0.log
+ set +x
+ /home/peniblec/Downloads/sources/emacs-meta/feature/native-comp/src/emacs -Q -batch -l /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/elisp-benchmarks.el -eval '(elisp-benchmarks-run "fibn\\.")'
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/bubble-no-cons...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/bubble...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn-rec...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn-tc...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn (native compiled elisp)...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/inclist...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/listlen-tc...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/pidigits...
Iteration number: 1
Running fibn...
Memory exhausted--use C-x s then exit and restart Emacs
+ for i in {0..3}
+ sudo swapoff -a
+ sudo swapon -a
++ dirname /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/elisp-benchmarks.el
+ cd /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks
+ ln -sf fibn-1.eln fibn.eln
+ out=fibn-1.log
+ set +x
+ /home/peniblec/Downloads/sources/emacs-meta/feature/native-comp/src/emacs -Q -batch -l /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/elisp-benchmarks.el -eval '(elisp-benchmarks-run "fibn\\.")'
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/bubble-no-cons...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/bubble...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn-rec...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn-tc...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn (native compiled elisp)...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/inclist...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/listlen-tc...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/pidigits...
Iteration number: 1
Running fibn...
Memory exhausted--use C-x s then exit and restart Emacs
+ for i in {0..3}
+ sudo swapoff -a
+ sudo swapon -a
++ dirname /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/elisp-benchmarks.el
+ cd /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks
+ ln -sf fibn-2.eln fibn.eln
+ out=fibn-2.log
+ set +x
+ /home/peniblec/Downloads/sources/emacs-meta/feature/native-comp/src/emacs -Q -batch -l /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/elisp-benchmarks.el -eval '(elisp-benchmarks-run "fibn\\.")'
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/bubble-no-cons...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/bubble...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn-rec...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn-tc...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn (native compiled elisp)...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/inclist...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/listlen-tc...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/pidigits...
Iteration number: 1
Running fibn...
Memory exhausted--use C-x s then exit and restart Emacs
+ for i in {0..3}
+ sudo swapoff -a
+ sudo swapon -a
++ dirname /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/elisp-benchmarks.el
+ cd /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks
+ ln -sf fibn-3.eln fibn.eln
+ out=fibn-3.log
+ set +x
+ /home/peniblec/Downloads/sources/emacs-meta/feature/native-comp/src/emacs -Q -batch -l /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/elisp-benchmarks.el -eval '(elisp-benchmarks-run "fibn\\.")'
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/bubble-no-cons...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/bubble...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn-rec...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn-tc...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn (native compiled elisp)...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/inclist...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/listlen-tc...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/pidigits...
Iteration number: 1
Running fibn...
Memory exhausted--use C-x s then exit and restart Emacs
[-- Attachment #13: Type: text/plain, Size: 22 bytes --]
Logs for master:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #14: master.log --]
[-- Type: text/x-log, Size: 1575 bytes --]
+ elisp_benchmarks=/home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/elisp-benchmarks.el
+ emacs=/home/peniblec/Downloads/sources/emacs/src/emacs
+ sudo swapoff -a
+ sudo swapon -a
+ out=fibn-master.log
+ set +x
+ /home/peniblec/Downloads/sources/emacs/src/emacs -Q -batch -l /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/elisp-benchmarks.el -eval '(elisp-benchmarks-run "fibn\\.")'
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/bubble-no-cons...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/bubble...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn-rec...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn-tc...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/fibn...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/inclist...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/listlen-tc...
Loading /home/peniblec/.emacs.d/elpa/elisp-benchmarks-1.1/benchmarks/pidigits...
Iteration number: 1
Running fibn...
Iteration number: 2
Running fibn...
Iteration number: 3
Running fibn...
* Results
| test | non-gc avg (s) | gc avg (s) | gcs avg | tot avg (s) | tot avg err (s) |
|-------+----------------+------------+---------+-------------+-----------------|
| fibn | 283.13 | 247.25 | 4425 | 530.37 | 3.03 |
|-------+----------------+------------+---------+-------------+-----------------|
| total | 283.13 | 247.25 | 4425 | 530.37 | 3.03 |
[-- Attachment #15: Type: text/plain, Size: 5 bytes --]
[5]
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #16: elb-fibn.s --]
[-- Type: text/x-asm, Size: 4813 bytes --]
000015e0 <F656c622d6669626e_elb_fibn_0>:
15e0: e8 f7 01 00 00 call 17dc <__x86.get_pc_thunk.ax>
15e5: 05 1b 2a 00 00 add $0x2a1b,%eax
15ea: 55 push %ebp
15eb: 57 push %edi
15ec: 56 push %esi
15ed: 53 push %ebx
15ee: 83 ec 4c sub $0x4c,%esp
15f1: 8b 88 f4 ff ff ff mov -0xc(%eax),%ecx
15f7: 8b a8 f8 ff ff ff mov -0x8(%eax),%ebp
15fd: 8d 44 24 20 lea 0x20(%esp),%eax
1601: 89 4c 24 1c mov %ecx,0x1c(%esp)
1605: 8b 09 mov (%ecx),%ecx
1607: 89 44 24 18 mov %eax,0x18(%esp)
160b: 8d 44 24 38 lea 0x38(%esp),%eax
160f: 89 4c 24 04 mov %ecx,0x4(%esp)
1613: 89 4c 24 14 mov %ecx,0x14(%esp)
1617: 89 44 24 10 mov %eax,0x10(%esp)
161b: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi
161f: 90 nop
1620: 8b 44 24 14 mov 0x14(%esp),%eax
1624: 83 ec 08 sub $0x8,%esp
1627: 89 44 24 28 mov %eax,0x28(%esp)
162b: 8b 44 24 68 mov 0x68(%esp),%eax
162f: 89 44 24 2c mov %eax,0x2c(%esp)
1633: 8b 45 00 mov 0x0(%ebp),%eax
1636: ff 74 24 20 pushl 0x20(%esp)
163a: 6a 02 push $0x2
163c: ff 90 90 12 00 00 call *0x1290(%eax)
1642: 83 c4 10 add $0x10,%esp
1645: 85 c0 test %eax,%eax
1647: 0f 84 b3 00 00 00 je 1700 <F656c622d6669626e_elb_fibn_0+0x120>
164d: 8b 7c 24 1c mov 0x1c(%esp),%edi
1651: 8b 44 24 64 mov 0x64(%esp),%eax
1655: 83 ec 08 sub $0x8,%esp
1658: 89 44 24 30 mov %eax,0x30(%esp)
165c: 8b 47 0c mov 0xc(%edi),%eax
165f: 8b 77 08 mov 0x8(%edi),%esi
1662: 89 44 24 34 mov %eax,0x34(%esp)
1666: 8d 54 24 30 lea 0x30(%esp),%edx
166a: 8b 45 00 mov 0x0(%ebp),%eax
166d: 52 push %edx
166e: 6a 02 push $0x2
1670: ff 90 78 12 00 00 call *0x1278(%eax)
1676: 8b 1f mov (%edi),%ebx
1678: bf 06 00 00 00 mov $0x6,%edi
167d: 89 44 24 18 mov %eax,0x18(%esp)
1681: 83 c4 10 add $0x10,%esp
1684: 8d 44 24 30 lea 0x30(%esp),%eax
1688: 89 44 24 0c mov %eax,0xc(%esp)
168c: eb 32 jmp 16c0 <F656c622d6669626e_elb_fibn_0+0xe0>
168e: 66 90 xchg %ax,%ax
1690: 89 7c 24 3c mov %edi,0x3c(%esp)
1694: 83 ec 08 sub $0x8,%esp
1697: 8b 45 00 mov 0x0(%ebp),%eax
169a: 89 f7 mov %esi,%edi
169c: 89 74 24 40 mov %esi,0x40(%esp)
16a0: ff 74 24 18 pushl 0x18(%esp)
16a4: 6a 02 push $0x2
16a6: ff 90 7c 12 00 00 call *0x127c(%eax)
16ac: 89 44 24 14 mov %eax,0x14(%esp)
16b0: 89 d8 mov %ebx,%eax
16b2: e8 89 fa ff ff call 1140 <add1.constprop.0>
16b7: 8b 74 24 14 mov 0x14(%esp),%esi
16bb: 83 c4 10 add $0x10,%esp
16be: 89 c3 mov %eax,%ebx
16c0: 8b 44 24 08 mov 0x8(%esp),%eax
16c4: 89 5c 24 30 mov %ebx,0x30(%esp)
16c8: 83 ec 08 sub $0x8,%esp
16cb: 89 44 24 3c mov %eax,0x3c(%esp)
16cf: 8b 45 00 mov 0x0(%ebp),%eax
16d2: ff 74 24 14 pushl 0x14(%esp)
16d6: 6a 02 push $0x2
16d8: ff 90 90 12 00 00 call *0x1290(%eax)
16de: 83 c4 10 add $0x10,%esp
16e1: 85 c0 test %eax,%eax
16e3: 75 ab jne 1690 <F656c622d6669626e_elb_fibn_0+0xb0>
16e5: 8b 44 24 14 mov 0x14(%esp),%eax
16e9: e8 52 fa ff ff call 1140 <add1.constprop.0>
16ee: 89 44 24 14 mov %eax,0x14(%esp)
16f2: e9 29 ff ff ff jmp 1620 <F656c622d6669626e_elb_fibn_0+0x40>
16f7: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi
16fe: 66 90 xchg %ax,%ax
1700: 8b 44 24 04 mov 0x4(%esp),%eax
1704: 83 c4 4c add $0x4c,%esp
1707: 5b pop %ebx
1708: 5e pop %esi
1709: 5f pop %edi
170a: 5d pop %ebp
170b: c3 ret
170c: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #17: elb-fibn-entry.s --]
[-- Type: text/x-asm, Size: 1126 bytes --]
00001710 <F656c622d6669626e2d656e747279_elb_fibn_entry_0>:
1710: e8 20 fa ff ff call 1135 <__x86.get_pc_thunk.dx>
1715: 81 c2 eb 28 00 00 add $0x28eb,%edx
171b: 83 ec 24 sub $0x24,%esp
171e: 8b 82 f4 ff ff ff mov -0xc(%edx),%eax
1724: 8b 48 10 mov 0x10(%eax),%ecx
1727: 89 4c 24 0c mov %ecx,0xc(%esp)
172b: 8b 48 14 mov 0x14(%eax),%ecx
172e: 8b 40 18 mov 0x18(%eax),%eax
1731: 89 4c 24 10 mov %ecx,0x10(%esp)
1735: 89 44 24 14 mov %eax,0x14(%esp)
1739: 8b 82 f8 ff ff ff mov -0x8(%edx),%eax
173f: 8d 54 24 0c lea 0xc(%esp),%edx
1743: 8b 00 mov (%eax),%eax
1745: 52 push %edx
1746: 6a 03 push $0x3
1748: ff 90 40 0d 00 00 call *0xd40(%eax)
174e: 83 c4 2c add $0x2c,%esp
1751: c3 ret
1752: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi
1759: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#41194: 28.0.50; [feature/native-comp] fibn benchmark exhausts memory 2020-05-11 20:47 bug#41194: 28.0.50; [feature/native-comp] fibn benchmark exhausts memory Kévin Le Gouguec @ 2020-06-09 22:24 ` Andrea Corallo 2020-06-10 7:55 ` Kévin Le Gouguec 0 siblings, 1 reply; 9+ messages in thread From: Andrea Corallo @ 2020-06-09 22:24 UTC (permalink / raw) To: Kévin Le Gouguec; +Cc: 41194 Kévin Le Gouguec <kevin.legouguec@gmail.com> writes: > 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): > > > > 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. Hi Kevin, sorry for the very late reply I just had a look. The following is going on: being on 32bit system you get into bignums end this allocates memory while is looping inside `elb-fibn'. Unfortunatelly there's no opportunity of passing through maybe_gc to trigger garbage collection because I've not implemented the equivalent of what is the quitcounter in the byte interpreter. I'll come-up with a patch to generate the equivalent code of the quitcounter when compiling for speed < 3. Thanks for the feedback Andrea PS FYI I think memory consumption during compilation (as compile time) should be now considerably lowered (but I've still haven't measured it). -- akrl@sdf.org ^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#41194: 28.0.50; [feature/native-comp] fibn benchmark exhausts memory 2020-06-09 22:24 ` Andrea Corallo @ 2020-06-10 7:55 ` Kévin Le Gouguec 2020-06-13 15:00 ` Andrea Corallo 0 siblings, 1 reply; 9+ messages in thread From: Kévin Le Gouguec @ 2020-06-10 7:55 UTC (permalink / raw) To: 41194 Andrea Corallo <akrl@sdf.org> writes: > sorry for the very late reply I just had a look. No need to apologize! You've obviously been busy on other fronts. > The following is going on: being on 32bit system you get into bignums > end this allocates memory while is looping inside `elb-fibn'. > Unfortunatelly there's no opportunity of passing through maybe_gc to > trigger garbage collection because I've not implemented the equivalent > of what is the quitcounter in the byte interpreter. > > I'll come-up with a patch to generate the equivalent code of the > quitcounter when compiling for speed < 3. > > Thanks for the feedback > > Andrea > > PS FYI I think memory consumption during compilation (as compile time) > should be now considerably lowered (but I've still haven't measured it). Alright! I'll keep an eye on your branch and on the bugtracker, and recompile & run my measurements when I spot your patch. ^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#41194: 28.0.50; [feature/native-comp] fibn benchmark exhausts memory 2020-06-10 7:55 ` Kévin Le Gouguec @ 2020-06-13 15:00 ` Andrea Corallo 2020-06-13 18:17 ` Kévin Le Gouguec 2020-06-14 15:19 ` Kévin Le Gouguec 0 siblings, 2 replies; 9+ messages in thread From: Andrea Corallo @ 2020-06-13 15:00 UTC (permalink / raw) To: Kévin Le Gouguec; +Cc: 41194 Kévin Le Gouguec <kevin.legouguec@gmail.com> writes: > Andrea Corallo <akrl@sdf.org> writes: > >> sorry for the very late reply I just had a look. > > No need to apologize! You've obviously been busy on other fronts. > >> The following is going on: being on 32bit system you get into bignums >> end this allocates memory while is looping inside `elb-fibn'. >> Unfortunatelly there's no opportunity of passing through maybe_gc to >> trigger garbage collection because I've not implemented the equivalent >> of what is the quitcounter in the byte interpreter. >> >> I'll come-up with a patch to generate the equivalent code of the >> quitcounter when compiling for speed < 3. >> >> Thanks for the feedback >> >> Andrea >> >> PS FYI I think memory consumption during compilation (as compile time) >> should be now considerably lowered (but I've still haven't measured it). > > Alright! I'll keep an eye on your branch and on the bugtracker, and > recompile & run my measurements when I spot your patch. Hi Kévin, 5a55a845a7 * Implement 'maybe_gc_or_quit' to allow correct GC in compiled Lisp 34ed9d2498 * Introduce latches are fixing here this issue, now running fibn at speed 2 the memory consuptions stays constant. You'll still see the same behavior at speed 3 because there the programmer is supposedly responsible to add manually possible GC entry points. I think now 32bit should be in a much better state but I hadn't time to test it still. Thanks! Andrea -- akrl@sdf.org ^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#41194: 28.0.50; [feature/native-comp] fibn benchmark exhausts memory 2020-06-13 15:00 ` Andrea Corallo @ 2020-06-13 18:17 ` Kévin Le Gouguec 2020-06-14 15:19 ` Kévin Le Gouguec 1 sibling, 0 replies; 9+ messages in thread From: Kévin Le Gouguec @ 2020-06-13 18:17 UTC (permalink / raw) To: Andrea Corallo; +Cc: 41194 Andrea Corallo <akrl@sdf.org> writes: > I think now 32bit should be in a much better state but I hadn't time to > test it still. Alright! I've pulled the changes and started recompiling (without blacklisting char-fold.el, because I'm such an optimist). I'll followup when compilation has finished to let you know how it went with fibn! Thank you for your efforts. ^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#41194: 28.0.50; [feature/native-comp] fibn benchmark exhausts memory 2020-06-13 15:00 ` Andrea Corallo 2020-06-13 18:17 ` Kévin Le Gouguec @ 2020-06-14 15:19 ` Kévin Le Gouguec 2020-06-14 16:19 ` Andrea Corallo 1 sibling, 1 reply; 9+ messages in thread From: Kévin Le Gouguec @ 2020-06-14 15:19 UTC (permalink / raw) To: Andrea Corallo; +Cc: 41194 [-- Attachment #1: Type: text/plain, Size: 969 bytes --] Andrea Corallo <akrl@sdf.org> writes: > 5a55a845a7 * Implement 'maybe_gc_or_quit' to allow correct GC in compiled Lisp > 34ed9d2498 * Introduce latches > > are fixing here this issue, now running fibn at speed 2 the memory > consuptions stays constant. Alright, feedback time! Commits: - master: 82a632edc8b80bf16d9b9f205474bf9724b084c0 - feature/native-comp: 5a55a845a7c426e82e8a6a6d02bc4a39992871e3 The Good News ============= - I can compile the branch without adding files to the default blacklist, - compilation (-j1) now only takes less than 6 hours instead of 3 days (compared with 1.5 hour on master), - at no point during compilation did the system swap; in fact, I could probably have risked a -j2 build, - elisp-benchmarks doesn't show any obvious performance regression (… though see Bad News). For details on memory usage during compilation, see attached memory profile (to compare with bug#41077#28). [-- Attachment #2: compilation-memory.pdf --] [-- Type: application/pdf, Size: 73753 bytes --] [-- Attachment #3: Type: text/plain, Size: 344 bytes --] Few files take more than 3 minutes to compile now: ELC+ELN emacs-lisp/comp.el 0:09:49 ELC+ELN org/org.el 0:03:39 ELC+ELN ../lisp/window.el 0:03:16 ELC+ELN emacs-lisp/bytecomp.el 0:03:16 For details on performance, see attached tables for master and feature/native-comp, respectively (to compare with bug#41077#40). [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #4: perfs.org --] [-- Type: text/x-org, Size: 2834 bytes --] * Results ** master | test | non-gc avg (s) | gc avg (s) | gcs avg | tot avg (s) | tot avg err (s) | |----------------+----------------+------------+---------+-------------+-----------------| | bubble-no-cons | 119.55 | 0.23 | 3 | 119.77 | 0.62 | | bubble | 46.98 | 31.03 | 406 | 78.01 | 0.40 | | dhrystone | 75.05 | 0.00 | 0 | 75.05 | 0.12 | | fibn-rec | 59.89 | 0.00 | 0 | 59.89 | 0.07 | | fibn-tc | 151.21 | 96.27 | 1168 | 247.48 | 0.45 | | flet | 110.56 | 0.00 | 0 | 110.56 | 0.21 | | inclist | 166.63 | 0.00 | 0 | 166.63 | 0.23 | | listlen-tc | 77.43 | 0.00 | 0 | 77.43 | 0.37 | | map-closure | 81.72 | 0.00 | 0 | 81.72 | 0.41 | | nbody | 28.88 | 98.07 | 1291 | 126.95 | 0.22 | | pcase | 111.76 | 0.00 | 0 | 111.76 | 0.14 | |----------------+----------------+------------+---------+-------------+-----------------| | total | 1029.64 | 225.60 | 2868 | 1255.24 | 1.12 | ** feature/native-comp | test | non-gc avg (s) | gc avg (s) | gcs avg | tot avg (s) | tot avg err (s) | |----------------+----------------+------------+---------+-------------+-----------------| | bubble-no-cons | 19.44 | 0.10 | 1 | 19.54 | 0.02 | | bubble | 11.35 | 7.63 | 1 | 18.99 | 8.51 | | dhrystone | 31.39 | 0.00 | 0 | 31.39 | 0.10 | | fibn-rec | 19.36 | 0.00 | 0 | 19.36 | 0.03 | | fibn-tc | 87.00 | 6.16 | 1 | 93.16 | 1.61 | | flet | 23.83 | 0.00 | 0 | 23.83 | 0.01 | | inclist | 9.78 | 0.00 | 0 | 9.78 | 0.02 | | listlen-tc | 0.78 | 0.00 | 0 | 0.78 | 0.00 | | map-closure | 81.11 | 0.00 | 0 | 81.11 | 0.06 | | nbody | 15.76 | 1.61 | 1 | 17.38 | 0.03 | | pcase | 12.52 | 0.00 | 0 | 12.52 | 0.02 | |----------------+----------------+------------+---------+-------------+-----------------| | total | 312.34 | 15.51 | 4 | 327.84 | 8.67 | [-- Attachment #5: Type: text/plain, Size: 85 bytes --] The Bad News ============ - fibn still exhausts memory, - now pidigits does too. [-- Attachment #6: fibn.pdf --] [-- Type: application/pdf, Size: 19089 bytes --] [-- Attachment #7: pidigits.pdf --] [-- Type: application/pdf, Size: 17848 bytes --] [-- Attachment #8: Type: text/plain, Size: 144 bytes --] I've only tried the default comp-speed (2) so far. I've attached the results of M-x disassemble on the functions in fibn.el and pidigits.el. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #9: elb-eliminate-digit.s --] [-- Type: text/x-asm, Size: 4237 bytes --] 000013a0 <F656c622d656c696d696e6174652d6469676974_elb_eliminate_digit_0>: 13a0: e8 90 06 00 00 call 1a35 <__x86.get_pc_thunk.ax> 13a5: 05 5b 2c 00 00 add $0x2c5b,%eax 13aa: 57 push %edi 13ab: 56 push %esi 13ac: 53 push %ebx 13ad: 83 ec 2c sub $0x2c,%esp 13b0: 8b 98 f8 ff ff ff mov -0x8(%eax),%ebx 13b6: 8b b0 f4 ff ff ff mov -0xc(%eax),%esi 13bc: 8b 13 mov (%ebx),%edx 13be: ff 76 08 pushl 0x8(%esi) 13c1: ff 92 e4 12 00 00 call *0x12e4(%edx) 13c7: 89 44 24 18 mov %eax,0x18(%esp) 13cb: 58 pop %eax 13cc: 8b 03 mov (%ebx),%eax 13ce: ff 76 0c pushl 0xc(%esi) 13d1: ff 90 e4 12 00 00 call *0x12e4(%eax) 13d7: 89 44 24 10 mov %eax,0x10(%esp) 13db: 8b 44 24 40 mov 0x40(%esp),%eax 13df: 89 44 24 14 mov %eax,0x14(%esp) 13e3: 5a pop %edx 13e4: 59 pop %ecx 13e5: 8b 03 mov (%ebx),%eax 13e7: 8d 54 24 08 lea 0x8(%esp),%edx 13eb: 52 push %edx 13ec: 6a 02 push $0x2 13ee: ff 90 88 12 00 00 call *0x1288(%eax) 13f4: 89 44 24 1c mov %eax,0x1c(%esp) 13f8: 5f pop %edi 13f9: 58 pop %eax 13fa: 8b 03 mov (%ebx),%eax 13fc: 8d 54 24 10 lea 0x10(%esp),%edx 1400: 52 push %edx 1401: 6a 02 push $0x2 1403: ff 90 8c 12 00 00 call *0x128c(%eax) 1409: 8b 13 mov (%ebx),%edx 140b: 89 44 24 20 mov %eax,0x20(%esp) 140f: 6a 00 push $0x0 1411: 6a 00 push $0x0 1413: 50 push %eax 1414: ff 76 08 pushl 0x8(%esi) 1417: ff 52 24 call *0x24(%edx) 141a: 8b 46 10 mov 0x10(%esi),%eax 141d: 89 44 24 34 mov %eax,0x34(%esp) 1421: 83 c4 18 add $0x18,%esp 1424: 8b 03 mov (%ebx),%eax 1426: 8d 54 24 18 lea 0x18(%esp),%edx 142a: 52 push %edx 142b: 6a 02 push $0x2 142d: ff 90 88 12 00 00 call *0x1288(%eax) 1433: 6a 00 push $0x0 1435: 8b 13 mov (%ebx),%edx 1437: 6a 00 push $0x0 1439: 50 push %eax 143a: ff 76 08 pushl 0x8(%esi) 143d: ff 52 24 call *0x24(%edx) 1440: 8b 03 mov (%ebx),%eax 1442: 83 c4 14 add $0x14,%esp 1445: ff 76 04 pushl 0x4(%esi) 1448: ff 90 e4 12 00 00 call *0x12e4(%eax) 144e: 89 44 24 28 mov %eax,0x28(%esp) 1452: 8b 46 10 mov 0x10(%esi),%eax 1455: 89 44 24 2c mov %eax,0x2c(%esp) 1459: 58 pop %eax 145a: 8b 03 mov (%ebx),%eax 145c: 5a pop %edx 145d: 8d 54 24 20 lea 0x20(%esp),%edx 1461: 52 push %edx 1462: 6a 02 push $0x2 1464: ff 90 88 12 00 00 call *0x1288(%eax) 146a: 6a 00 push $0x0 146c: 89 c7 mov %eax,%edi 146e: 6a 00 push $0x0 1470: 8b 03 mov (%ebx),%eax 1472: 57 push %edi 1473: ff 76 04 pushl 0x4(%esi) 1476: ff 50 24 call *0x24(%eax) 1479: 89 f8 mov %edi,%eax 147b: 83 c4 40 add $0x40,%esp 147e: 5b pop %ebx 147f: 5e pop %esi 1480: 5f pop %edi 1481: c3 ret 1482: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi 1489: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #10: elb-extract-digit.s --] [-- Type: text/x-asm, Size: 2632 bytes --] 00001310 <F656c622d657874726163742d6469676974_elb_extract_digit_0>: 1310: e8 20 07 00 00 call 1a35 <__x86.get_pc_thunk.ax> 1315: 05 eb 2c 00 00 add $0x2ceb,%eax 131a: 57 push %edi 131b: 56 push %esi 131c: 53 push %ebx 131d: 83 ec 1c sub $0x1c,%esp 1320: 8b 98 f8 ff ff ff mov -0x8(%eax),%ebx 1326: 8b b8 f4 ff ff ff mov -0xc(%eax),%edi 132c: 8b 13 mov (%ebx),%edx 132e: ff 77 04 pushl 0x4(%edi) 1331: ff 92 e4 12 00 00 call *0x12e4(%edx) 1337: 89 44 24 10 mov %eax,0x10(%esp) 133b: 8b 44 24 30 mov 0x30(%esp),%eax 133f: 89 44 24 14 mov %eax,0x14(%esp) 1343: 58 pop %eax 1344: 5a pop %edx 1345: 8b 03 mov (%ebx),%eax 1347: 8d 54 24 08 lea 0x8(%esp),%edx 134b: 52 push %edx 134c: 6a 02 push $0x2 134e: ff 90 88 12 00 00 call *0x1288(%eax) 1354: 89 44 24 18 mov %eax,0x18(%esp) 1358: 59 pop %ecx 1359: 8b 03 mov (%ebx),%eax 135b: ff 77 08 pushl 0x8(%edi) 135e: ff 90 e4 12 00 00 call *0x12e4(%eax) 1364: 89 44 24 1c mov %eax,0x1c(%esp) 1368: 5e pop %esi 1369: 58 pop %eax 136a: 8b 03 mov (%ebx),%eax 136c: 8d 54 24 10 lea 0x10(%esp),%edx 1370: 52 push %edx 1371: 6a 02 push $0x2 1373: ff 90 90 12 00 00 call *0x1290(%eax) 1379: 89 c6 mov %eax,%esi 137b: 58 pop %eax 137c: 8b 03 mov (%ebx),%eax 137e: ff 77 0c pushl 0xc(%edi) 1381: ff 90 e4 12 00 00 call *0x12e4(%eax) 1387: 89 c2 mov %eax,%edx 1389: 58 pop %eax 138a: 59 pop %ecx 138b: 52 push %edx 138c: 8b 03 mov (%ebx),%eax 138e: 56 push %esi 138f: ff 90 a8 0c 00 00 call *0xca8(%eax) 1395: 83 c4 20 add $0x20,%esp 1398: 5b pop %ebx 1399: 5e pop %esi 139a: 5f pop %edi 139b: c3 ret 139c: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #11: elb-fibn.s --] [-- Type: text/x-asm, Size: 6689 bytes --] 000012e0 <F656c622d6669626e_elb_fibn_0>: 12e0: e8 af 02 00 00 call 1594 <__x86.get_pc_thunk.ax> 12e5: 05 1b 2d 00 00 add $0x2d1b,%eax 12ea: 55 push %ebp 12eb: 57 push %edi 12ec: 56 push %esi 12ed: 53 push %ebx 12ee: 83 ec 4c sub $0x4c,%esp 12f1: 8b 90 f4 ff ff ff mov -0xc(%eax),%edx 12f7: 8b a8 f8 ff ff ff mov -0x8(%eax),%ebp 12fd: 8d 44 24 20 lea 0x20(%esp),%eax 1301: 89 54 24 1c mov %edx,0x1c(%esp) 1305: 8b 12 mov (%edx),%edx 1307: 89 44 24 18 mov %eax,0x18(%esp) 130b: 8d 44 24 38 lea 0x38(%esp),%eax 130f: 89 54 24 04 mov %edx,0x4(%esp) 1313: 89 54 24 14 mov %edx,0x14(%esp) 1317: 89 44 24 10 mov %eax,0x10(%esp) 131b: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi 131f: 90 nop 1320: 8b 44 24 14 mov 0x14(%esp),%eax 1324: 83 ec 08 sub $0x8,%esp 1327: 89 44 24 28 mov %eax,0x28(%esp) 132b: 8b 44 24 68 mov 0x68(%esp),%eax 132f: 89 44 24 2c mov %eax,0x2c(%esp) 1333: 8b 45 00 mov 0x0(%ebp),%eax 1336: ff 74 24 20 pushl 0x20(%esp) 133a: 6a 02 push $0x2 133c: ff 90 a4 12 00 00 call *0x12a4(%eax) 1342: 83 c4 10 add $0x10,%esp 1345: 85 c0 test %eax,%eax 1347: 0f 84 23 01 00 00 je 1470 <F656c622d6669626e_elb_fibn_0+0x190> 134d: 8b 7c 24 1c mov 0x1c(%esp),%edi 1351: 8b 44 24 64 mov 0x64(%esp),%eax 1355: 83 ec 08 sub $0x8,%esp 1358: be 06 00 00 00 mov $0x6,%esi 135d: 89 44 24 30 mov %eax,0x30(%esp) 1361: 8b 47 0c mov 0xc(%edi),%eax 1364: 8b 5f 08 mov 0x8(%edi),%ebx 1367: 89 44 24 34 mov %eax,0x34(%esp) 136b: 8d 54 24 30 lea 0x30(%esp),%edx 136f: 8b 45 00 mov 0x0(%ebp),%eax 1372: 52 push %edx 1373: 6a 02 push $0x2 1375: ff 90 8c 12 00 00 call *0x128c(%eax) 137b: 8b 3f mov (%edi),%edi 137d: 89 44 24 18 mov %eax,0x18(%esp) 1381: 83 c4 10 add $0x10,%esp 1384: 8d 44 24 30 lea 0x30(%esp),%eax 1388: 89 44 24 0c mov %eax,0xc(%esp) 138c: 89 f8 mov %edi,%eax 138e: 89 f7 mov %esi,%edi 1390: 89 de mov %ebx,%esi 1392: 89 c3 mov %eax,%ebx 1394: eb 23 jmp 13b9 <F656c622d6669626e_elb_fibn_0+0xd9> 1396: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi 139d: 8d 76 00 lea 0x0(%esi),%esi 13a0: 89 d8 mov %ebx,%eax 13a2: c1 f8 02 sar $0x2,%eax 13a5: 3d ff ff ff 1f cmp $0x1fffffff,%eax 13aa: 74 5a je 1406 <F656c622d6669626e_elb_fibn_0+0x126> 13ac: 8d 1c 85 06 00 00 00 lea 0x6(,%eax,4),%ebx 13b3: 89 f7 mov %esi,%edi 13b5: 8b 74 24 04 mov 0x4(%esp),%esi 13b9: 8b 44 24 08 mov 0x8(%esp),%eax 13bd: 89 5c 24 30 mov %ebx,0x30(%esp) 13c1: 83 ec 08 sub $0x8,%esp 13c4: 89 44 24 3c mov %eax,0x3c(%esp) 13c8: 8b 45 00 mov 0x0(%ebp),%eax 13cb: ff 74 24 14 pushl 0x14(%esp) 13cf: 6a 02 push $0x2 13d1: ff 90 a4 12 00 00 call *0x12a4(%eax) 13d7: 83 c4 10 add $0x10,%esp 13da: 85 c0 test %eax,%eax 13dc: 74 42 je 1420 <F656c622d6669626e_elb_fibn_0+0x140> 13de: 89 74 24 38 mov %esi,0x38(%esp) 13e2: 83 ec 08 sub $0x8,%esp 13e5: 8b 45 00 mov 0x0(%ebp),%eax 13e8: 89 7c 24 44 mov %edi,0x44(%esp) 13ec: ff 74 24 18 pushl 0x18(%esp) 13f0: 6a 02 push $0x2 13f2: ff 90 90 12 00 00 call *0x1290(%eax) 13f8: 89 44 24 14 mov %eax,0x14(%esp) 13fc: 8d 43 fe lea -0x2(%ebx),%eax 13ff: 83 c4 10 add $0x10,%esp 1402: a8 03 test $0x3,%al 1404: 74 9a je 13a0 <F656c622d6669626e_elb_fibn_0+0xc0> 1406: 83 ec 0c sub $0xc,%esp 1409: 8b 45 00 mov 0x0(%ebp),%eax 140c: 53 push %ebx 140d: ff 90 5c 12 00 00 call *0x125c(%eax) 1413: 89 c3 mov %eax,%ebx 1415: 83 c4 10 add $0x10,%esp 1418: eb 99 jmp 13b3 <F656c622d6669626e_elb_fibn_0+0xd3> 141a: 8d b6 00 00 00 00 lea 0x0(%esi),%esi 1420: 8b 4c 24 14 mov 0x14(%esp),%ecx 1424: 8d 41 fe lea -0x2(%ecx),%eax 1427: a8 03 test $0x3,%al 1429: 75 25 jne 1450 <F656c622d6669626e_elb_fibn_0+0x170> 142b: 89 c8 mov %ecx,%eax 142d: c1 f8 02 sar $0x2,%eax 1430: 3d ff ff ff 1f cmp $0x1fffffff,%eax 1435: 74 19 je 1450 <F656c622d6669626e_elb_fibn_0+0x170> 1437: 8d 04 85 06 00 00 00 lea 0x6(,%eax,4),%eax 143e: 89 44 24 14 mov %eax,0x14(%esp) 1442: e9 d9 fe ff ff jmp 1320 <F656c622d6669626e_elb_fibn_0+0x40> 1447: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi 144e: 66 90 xchg %ax,%ax 1450: 83 ec 0c sub $0xc,%esp 1453: 8b 45 00 mov 0x0(%ebp),%eax 1456: ff 74 24 20 pushl 0x20(%esp) 145a: ff 90 5c 12 00 00 call *0x125c(%eax) 1460: 89 44 24 24 mov %eax,0x24(%esp) 1464: 83 c4 10 add $0x10,%esp 1467: e9 b4 fe ff ff jmp 1320 <F656c622d6669626e_elb_fibn_0+0x40> 146c: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi 1470: 8b 44 24 04 mov 0x4(%esp),%eax 1474: 83 c4 4c add $0x4c,%esp 1477: 5b pop %ebx 1478: 5e pop %esi 1479: 5f pop %edi 147a: 5d pop %ebp 147b: c3 ret 147c: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #12: elb-fibn-entry.s --] [-- Type: text/x-asm, Size: 697 bytes --] 00001480 <F656c622d6669626e2d656e747279_elb_fibn_entry_0>: 1480: 53 push %ebx 1481: e8 da fb ff ff call 1060 <__x86.get_pc_thunk.bx> 1486: 81 c3 7a 2b 00 00 add $0x2b7a,%ebx 148c: 83 ec 10 sub $0x10,%esp 148f: 68 42 01 00 00 push $0x142 1494: 68 02 1b b7 00 push $0xb71b02 1499: e8 92 fb ff ff call 1030 <F656c622d6669626e_elb_fibn_0@plt> 149e: 83 c4 18 add $0x18,%esp 14a1: 5b pop %ebx 14a2: c3 ret 14a3: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi 14aa: 8d b6 00 00 00 00 lea 0x0(%esi),%esi [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #13: elb-next-term.s --] [-- Type: text/x-asm, Size: 6624 bytes --] 00001490 <F656c622d6e6578742d7465726d_elb_next_term_0>: 1490: e8 a0 05 00 00 call 1a35 <__x86.get_pc_thunk.ax> 1495: 05 6b 2b 00 00 add $0x2b6b,%eax 149a: 55 push %ebp 149b: 57 push %edi 149c: 56 push %esi 149d: 53 push %ebx 149e: 83 ec 44 sub $0x44,%esp 14a1: 8b b0 f4 ff ff ff mov -0xc(%eax),%esi 14a7: 8b 98 f8 ff ff ff mov -0x8(%eax),%ebx 14ad: 8b 7c 24 58 mov 0x58(%esp),%edi 14b1: 8b 56 14 mov 0x14(%esi),%edx 14b4: 8b 03 mov (%ebx),%eax 14b6: 89 7c 24 08 mov %edi,0x8(%esp) 14ba: 89 54 24 0c mov %edx,0xc(%esp) 14be: 8d 54 24 08 lea 0x8(%esp),%edx 14c2: 52 push %edx 14c3: 6a 02 push $0x2 14c5: ff 90 88 12 00 00 call *0x1288(%eax) 14cb: 8d 50 fe lea -0x2(%eax),%edx 14ce: 83 c4 10 add $0x10,%esp 14d1: 83 e2 03 and $0x3,%edx 14d4: 75 1a jne 14f0 <F656c622d6e6578742d7465726d_elb_next_term_0+0x60> 14d6: 89 c2 mov %eax,%edx 14d8: c1 fa 02 sar $0x2,%edx 14db: 81 fa ff ff ff 1f cmp $0x1fffffff,%edx 14e1: 74 0d je 14f0 <F656c622d6e6578742d7465726d_elb_next_term_0+0x60> 14e3: 8d 2c 95 06 00 00 00 lea 0x6(,%edx,4),%ebp 14ea: eb 15 jmp 1501 <F656c622d6e6578742d7465726d_elb_next_term_0+0x71> 14ec: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi 14f0: 83 ec 0c sub $0xc,%esp 14f3: 8b 13 mov (%ebx),%edx 14f5: 50 push %eax 14f6: ff 92 5c 12 00 00 call *0x125c(%edx) 14fc: 89 c5 mov %eax,%ebp 14fe: 83 c4 10 add $0x10,%esp 1501: 83 ec 0c sub $0xc,%esp 1504: 8b 03 mov (%ebx),%eax 1506: ff 76 08 pushl 0x8(%esi) 1509: ff 90 e4 12 00 00 call *0x12e4(%eax) 150f: 89 44 24 20 mov %eax,0x20(%esp) 1513: 58 pop %eax 1514: 8b 03 mov (%ebx),%eax 1516: ff 76 04 pushl 0x4(%esi) 1519: ff 90 e4 12 00 00 call *0x12e4(%eax) 151f: 89 44 24 18 mov %eax,0x18(%esp) 1523: 8b 46 14 mov 0x14(%esi),%eax 1526: 89 44 24 1c mov %eax,0x1c(%esp) 152a: 5a pop %edx 152b: 59 pop %ecx 152c: 8b 03 mov (%ebx),%eax 152e: 8d 54 24 10 lea 0x10(%esp),%edx 1532: 52 push %edx 1533: 6a 02 push $0x2 1535: ff 90 88 12 00 00 call *0x1288(%eax) 153b: 89 44 24 24 mov %eax,0x24(%esp) 153f: 58 pop %eax 1540: 5a pop %edx 1541: 8b 03 mov (%ebx),%eax 1543: 8d 54 24 18 lea 0x18(%esp),%edx 1547: 52 push %edx 1548: 6a 02 push $0x2 154a: ff 90 90 12 00 00 call *0x1290(%eax) 1550: 8b 13 mov (%ebx),%edx 1552: 89 44 24 28 mov %eax,0x28(%esp) 1556: 6a 00 push $0x0 1558: 6a 00 push $0x0 155a: 50 push %eax 155b: ff 76 08 pushl 0x8(%esi) 155e: ff 52 24 call *0x24(%edx) 1561: 8b 03 mov (%ebx),%eax 1563: 89 6c 24 3c mov %ebp,0x3c(%esp) 1567: 83 c4 18 add $0x18,%esp 156a: 8d 54 24 20 lea 0x20(%esp),%edx 156e: 52 push %edx 156f: 6a 02 push $0x2 1571: ff 90 88 12 00 00 call *0x1288(%eax) 1577: 6a 00 push $0x0 1579: 8b 13 mov (%ebx),%edx 157b: 6a 00 push $0x0 157d: 50 push %eax 157e: ff 76 08 pushl 0x8(%esi) 1581: ff 52 24 call *0x24(%edx) 1584: 8b 03 mov (%ebx),%eax 1586: 83 c4 14 add $0x14,%esp 1589: ff 76 0c pushl 0xc(%esi) 158c: ff 90 e4 12 00 00 call *0x12e4(%eax) 1592: 89 44 24 30 mov %eax,0x30(%esp) 1596: 8b 03 mov (%ebx),%eax 1598: 89 6c 24 34 mov %ebp,0x34(%esp) 159c: 59 pop %ecx 159d: 5d pop %ebp 159e: 8d 54 24 28 lea 0x28(%esp),%edx 15a2: 52 push %edx 15a3: 6a 02 push $0x2 15a5: ff 90 88 12 00 00 call *0x1288(%eax) 15ab: 6a 00 push $0x0 15ad: 8b 13 mov (%ebx),%edx 15af: 6a 00 push $0x0 15b1: 50 push %eax 15b2: ff 76 0c pushl 0xc(%esi) 15b5: ff 52 24 call *0x24(%edx) 15b8: 8b 03 mov (%ebx),%eax 15ba: 83 c4 14 add $0x14,%esp 15bd: ff 76 04 pushl 0x4(%esi) 15c0: ff 90 e4 12 00 00 call *0x12e4(%eax) 15c6: 89 44 24 38 mov %eax,0x38(%esp) 15ca: 89 7c 24 3c mov %edi,0x3c(%esp) 15ce: 58 pop %eax 15cf: 8b 03 mov (%ebx),%eax 15d1: 5a pop %edx 15d2: 8d 54 24 30 lea 0x30(%esp),%edx 15d6: 52 push %edx 15d7: 6a 02 push $0x2 15d9: ff 90 88 12 00 00 call *0x1288(%eax) 15df: 6a 00 push $0x0 15e1: 89 c7 mov %eax,%edi 15e3: 6a 00 push $0x0 15e5: 8b 03 mov (%ebx),%eax 15e7: 57 push %edi 15e8: ff 76 04 pushl 0x4(%esi) 15eb: ff 50 24 call *0x24(%eax) 15ee: 89 f8 mov %edi,%eax 15f0: 83 c4 5c add $0x5c,%esp 15f3: 5b pop %ebx 15f4: 5e pop %esi 15f5: 5f pop %edi 15f6: 5d pop %ebp 15f7: c3 ret 15f8: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi 15ff: 90 nop [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #14: elb-pidigits.s --] [-- Type: text/x-asm, Size: 8594 bytes --] 00001600 <F656c622d7069646967697473_elb_pidigits_0>: 1600: 55 push %ebp 1601: 57 push %edi 1602: 56 push %esi 1603: 53 push %ebx 1604: e8 87 fa ff ff call 1090 <__x86.get_pc_thunk.bx> 1609: 81 c3 f7 29 00 00 add $0x29f7,%ebx 160f: 83 ec 54 sub $0x54,%esp 1612: 8b ab f4 ff ff ff mov -0xc(%ebx),%ebp 1618: 8b b3 f8 ff ff ff mov -0x8(%ebx),%esi 161e: 8b 45 20 mov 0x20(%ebp),%eax 1621: 89 44 24 1c mov %eax,0x1c(%esp) 1625: 8b 06 mov (%esi),%eax 1627: 6a 06 push $0x6 1629: ff 75 04 pushl 0x4(%ebp) 162c: ff 50 2c call *0x2c(%eax) 162f: 8b 06 mov (%esi),%eax 1631: 59 pop %ecx 1632: 5f pop %edi 1633: 6a 06 push $0x6 1635: bf 02 00 00 00 mov $0x2,%edi 163a: ff 75 0c pushl 0xc(%ebp) 163d: ff 50 2c call *0x2c(%eax) 1640: 58 pop %eax 1641: 5a pop %edx 1642: 8b 06 mov (%esi),%eax 1644: 6a 02 push $0x2 1646: ff 75 08 pushl 0x8(%ebp) 1649: ff 50 2c call *0x2c(%eax) 164c: 8b 45 24 mov 0x24(%ebp),%eax 164f: 83 c4 10 add $0x10,%esp 1652: c7 44 24 08 02 00 00 movl $0x2,0x8(%esp) 1659: 00 165a: 8d 4c 24 28 lea 0x28(%esp),%ecx 165e: 89 4c 24 0c mov %ecx,0xc(%esp) 1662: 8d 4c 24 30 lea 0x30(%esp),%ecx 1666: 89 4c 24 10 mov %ecx,0x10(%esp) 166a: 8d 4c 24 38 lea 0x38(%esp),%ecx 166e: 89 4c 24 1c mov %ecx,0x1c(%esp) 1672: eb 5b jmp 16cf <F656c622d7069646967697473_elb_pidigits_0+0xcf> 1674: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi 1678: 89 f8 mov %edi,%eax 167a: c1 f8 02 sar $0x2,%eax 167d: 3d ff ff ff 1f cmp $0x1fffffff,%eax 1682: 74 7e je 1702 <F656c622d7069646967697473_elb_pidigits_0+0x102> 1684: 8d 3c 85 06 00 00 00 lea 0x6(,%eax,4),%edi 168b: 83 ec 0c sub $0xc,%esp 168e: 57 push %edi 168f: e8 dc f9 ff ff call 1070 <F656c622d6e6578742d7465726d_elb_next_term_0@plt> 1694: 59 pop %ecx 1695: 8b 06 mov (%esi),%eax 1697: ff 75 04 pushl 0x4(%ebp) 169a: ff 90 e4 12 00 00 call *0x12e4(%eax) 16a0: 89 44 24 40 mov %eax,0x40(%esp) 16a4: 58 pop %eax 16a5: 8b 06 mov (%esi),%eax 16a7: ff 75 08 pushl 0x8(%ebp) 16aa: ff 90 e4 12 00 00 call *0x12e4(%eax) 16b0: 89 44 24 44 mov %eax,0x44(%esp) 16b4: 58 pop %eax 16b5: 8b 06 mov (%esi),%eax 16b7: 5a pop %edx 16b8: ff 74 24 18 pushl 0x18(%esp) 16bc: 6a 02 push $0x2 16be: ff 90 a0 12 00 00 call *0x12a0(%eax) 16c4: 83 c4 10 add $0x10,%esp 16c7: 85 c0 test %eax,%eax 16c9: 74 55 je 1720 <F656c622d7069646967697473_elb_pidigits_0+0x120> 16cb: 8b 44 24 60 mov 0x60(%esp),%eax 16cf: 8b 54 24 08 mov 0x8(%esp),%edx 16d3: 89 44 24 2c mov %eax,0x2c(%esp) 16d7: 83 ec 08 sub $0x8,%esp 16da: 8b 06 mov (%esi),%eax 16dc: 89 54 24 30 mov %edx,0x30(%esp) 16e0: ff 74 24 14 pushl 0x14(%esp) 16e4: 6a 02 push $0x2 16e6: ff 90 98 12 00 00 call *0x1298(%eax) 16ec: 83 c4 10 add $0x10,%esp 16ef: 85 c0 test %eax,%eax 16f1: 0f 85 d9 00 00 00 jne 17d0 <F656c622d7069646967697473_elb_pidigits_0+0x1d0> 16f7: 8d 47 fe lea -0x2(%edi),%eax 16fa: a8 03 test $0x3,%al 16fc: 0f 84 76 ff ff ff je 1678 <F656c622d7069646967697473_elb_pidigits_0+0x78> 1702: 83 ec 0c sub $0xc,%esp 1705: 8b 06 mov (%esi),%eax 1707: 57 push %edi 1708: ff 90 5c 12 00 00 call *0x125c(%eax) 170e: 89 c7 mov %eax,%edi 1710: 83 c4 10 add $0x10,%esp 1713: e9 73 ff ff ff jmp 168b <F656c622d7069646967697473_elb_pidigits_0+0x8b> 1718: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi 171f: 90 nop 1720: 83 ec 0c sub $0xc,%esp 1723: 6a 0e push $0xe 1725: e8 36 f9 ff ff call 1060 <F656c622d657874726163742d6469676974_elb_extract_digit_0@plt> 172a: c7 04 24 12 00 00 00 movl $0x12,(%esp) 1731: 89 44 24 28 mov %eax,0x28(%esp) 1735: 89 44 24 48 mov %eax,0x48(%esp) 1739: e8 22 f9 ff ff call 1060 <F656c622d657874726163742d6469676974_elb_extract_digit_0@plt> 173e: 89 44 24 4c mov %eax,0x4c(%esp) 1742: 58 pop %eax 1743: 8b 06 mov (%esi),%eax 1745: 5a pop %edx 1746: ff 74 24 24 pushl 0x24(%esp) 174a: 6a 02 push $0x2 174c: ff 90 a8 12 00 00 call *0x12a8(%eax) 1752: 83 c4 10 add $0x10,%esp 1755: 85 c0 test %eax,%eax 1757: 0f 84 6e ff ff ff je 16cb <F656c622d7069646967697473_elb_pidigits_0+0xcb> 175d: 83 ec 08 sub $0x8,%esp 1760: 8b 06 mov (%esi),%eax 1762: ff 74 24 1c pushl 0x1c(%esp) 1766: ff 74 24 24 pushl 0x24(%esp) 176a: ff 90 b4 0f 00 00 call *0xfb4(%eax) 1770: 8b 4c 24 18 mov 0x18(%esp),%ecx 1774: 89 44 24 24 mov %eax,0x24(%esp) 1778: 8d 41 fe lea -0x2(%ecx),%eax 177b: 83 c4 10 add $0x10,%esp 177e: a8 03 test $0x3,%al 1780: 75 1e jne 17a0 <F656c622d7069646967697473_elb_pidigits_0+0x1a0> 1782: 89 c8 mov %ecx,%eax 1784: c1 f8 02 sar $0x2,%eax 1787: 3d ff ff ff 1f cmp $0x1fffffff,%eax 178c: 74 12 je 17a0 <F656c622d7069646967697473_elb_pidigits_0+0x1a0> 178e: 8d 04 85 06 00 00 00 lea 0x6(,%eax,4),%eax 1795: 89 44 24 08 mov %eax,0x8(%esp) 1799: eb 1b jmp 17b6 <F656c622d7069646967697473_elb_pidigits_0+0x1b6> 179b: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi 179f: 90 nop 17a0: 83 ec 0c sub $0xc,%esp 17a3: 8b 06 mov (%esi),%eax 17a5: ff 74 24 14 pushl 0x14(%esp) 17a9: ff 90 5c 12 00 00 call *0x125c(%eax) 17af: 89 44 24 18 mov %eax,0x18(%esp) 17b3: 83 c4 10 add $0x10,%esp 17b6: 83 ec 0c sub $0xc,%esp 17b9: ff 74 24 24 pushl 0x24(%esp) 17bd: e8 8e f8 ff ff call 1050 <F656c622d656c696d696e6174652d6469676974_elb_eliminate_digit_0@plt> 17c2: 83 c4 10 add $0x10,%esp 17c5: e9 01 ff ff ff jmp 16cb <F656c622d7069646967697473_elb_pidigits_0+0xcb> 17ca: 8d b6 00 00 00 00 lea 0x0(%esi),%esi 17d0: 8b 06 mov (%esi),%eax 17d2: 83 ec 0c sub $0xc,%esp 17d5: ff 74 24 20 pushl 0x20(%esp) 17d9: ff 90 20 11 00 00 call *0x1120(%eax) 17df: 89 c3 mov %eax,%ebx 17e1: 8b 06 mov (%esi),%eax 17e3: c7 04 24 0e 00 00 00 movl $0xe,(%esp) 17ea: ff 50 18 call *0x18(%eax) 17ed: 83 c4 5c add $0x5c,%esp 17f0: 89 d8 mov %ebx,%eax 17f2: 5b pop %ebx 17f3: 5e pop %esi 17f4: 5f pop %edi 17f5: 5d pop %ebp 17f6: c3 ret 17f7: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi 17fe: 66 90 xchg %ax,%ax [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #15: elb-pidigits-entry.s --] [-- Type: text/x-asm, Size: 3066 bytes --] 00001800 <F656c622d70696469676974732d656e747279_elb_pidigits_entry_0>: 1800: 55 push %ebp 1801: 57 push %edi 1802: 56 push %esi 1803: 53 push %ebx 1804: e8 87 f8 ff ff call 1090 <__x86.get_pc_thunk.bx> 1809: 81 c3 f7 27 00 00 add $0x27f7,%ebx 180f: 83 ec 2c sub $0x2c,%esp 1812: 8d 44 24 18 lea 0x18(%esp),%eax 1816: 89 44 24 0c mov %eax,0xc(%esp) 181a: 8b bb f4 ff ff ff mov -0xc(%ebx),%edi 1820: 8b b3 f8 ff ff ff mov -0x8(%ebx),%esi 1826: 8b 6f 40 mov 0x40(%edi),%ebp 1829: eb 4b jmp 1876 <F656c622d70696469676974732d656e747279_elb_pidigits_entry_0+0x76> 182b: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi 182f: 90 nop 1830: 89 e8 mov %ebp,%eax 1832: c1 f8 02 sar $0x2,%eax 1835: 3d 00 00 00 e0 cmp $0xe0000000,%eax 183a: 74 41 je 187d <F656c622d70696469676974732d656e747279_elb_pidigits_entry_0+0x7d> 183c: 8d 2c 85 fe ff ff ff lea -0x2(,%eax,4),%ebp 1843: 8b 47 18 mov 0x18(%edi),%eax 1846: 89 6c 24 18 mov %ebp,0x18(%esp) 184a: 83 ec 08 sub $0x8,%esp 184d: 89 44 24 24 mov %eax,0x24(%esp) 1851: 8b 06 mov (%esi),%eax 1853: ff 74 24 14 pushl 0x14(%esp) 1857: 6a 02 push $0x2 1859: ff 90 98 12 00 00 call *0x1298(%eax) 185f: 83 c4 10 add $0x10,%esp 1862: 85 c0 test %eax,%eax 1864: 74 2a je 1890 <F656c622d70696469676974732d656e747279_elb_pidigits_entry_0+0x90> 1866: 83 ec 0c sub $0xc,%esp 1869: 68 d2 07 00 00 push $0x7d2 186e: e8 cd f7 ff ff call 1040 <F656c622d7069646967697473_elb_pidigits_0@plt> 1873: 83 c4 10 add $0x10,%esp 1876: 8d 45 fe lea -0x2(%ebp),%eax 1879: a8 03 test $0x3,%al 187b: 74 b3 je 1830 <F656c622d70696469676974732d656e747279_elb_pidigits_entry_0+0x30> 187d: 83 ec 0c sub $0xc,%esp 1880: 8b 06 mov (%esi),%eax 1882: 55 push %ebp 1883: ff 90 58 12 00 00 call *0x1258(%eax) 1889: 89 c5 mov %eax,%ebp 188b: 83 c4 10 add $0x10,%esp 188e: eb b3 jmp 1843 <F656c622d70696469676974732d656e747279_elb_pidigits_entry_0+0x43> 1890: 83 c4 2c add $0x2c,%esp 1893: 31 c0 xor %eax,%eax 1895: 5b pop %ebx 1896: 5e pop %esi 1897: 5f pop %edi 1898: 5d pop %ebp 1899: c3 ret 189a: 8d b6 00 00 00 00 lea 0x0(%esi),%esi [-- Attachment #16: Type: text/plain, Size: 110 bytes --] Let me know what I can do to help diagnose this further. Again, thank you for the time spent on this issue! ^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#41194: 28.0.50; [feature/native-comp] fibn benchmark exhausts memory 2020-06-14 15:19 ` Kévin Le Gouguec @ 2020-06-14 16:19 ` Andrea Corallo 2020-06-14 20:47 ` Kévin Le Gouguec 0 siblings, 1 reply; 9+ messages in thread From: Andrea Corallo @ 2020-06-14 16:19 UTC (permalink / raw) To: Kévin Le Gouguec; +Cc: 41194 Kévin Le Gouguec <kevin.legouguec@gmail.com> writes: > Andrea Corallo <akrl@sdf.org> writes: > >> 5a55a845a7 * Implement 'maybe_gc_or_quit' to allow correct GC in compiled Lisp >> 34ed9d2498 * Introduce latches >> >> are fixing here this issue, now running fibn at speed 2 the memory >> consuptions stays constant. > > Alright, feedback time! > > Commits: > - master: 82a632edc8b80bf16d9b9f205474bf9724b084c0 > - feature/native-comp: 5a55a845a7c426e82e8a6a6d02bc4a39992871e3 > > > The Good News > ============= > > - I can compile the branch without adding files to the default > blacklist, > > - compilation (-j1) now only takes less than 6 hours instead of 3 days > (compared with 1.5 hour on master), > > - at no point during compilation did the system swap; in fact, I could > probably have risked a -j2 build, > > - elisp-benchmarks doesn't show any obvious performance regression > (… though see Bad News). > > For details on memory usage during compilation, see attached memory > profile (to compare with bug#41077#28). Hi Kévin, this is very good new thanks! If I read correctly we are always under about 600MB as memory consumption is this correct? > > Few files take more than 3 minutes to compile now: > > ELC+ELN emacs-lisp/comp.el 0:09:49 > ELC+ELN org/org.el 0:03:39 > ELC+ELN ../lisp/window.el 0:03:16 > ELC+ELN emacs-lisp/bytecomp.el 0:03:16 > > For details on performance, see attached tables for master and > feature/native-comp, respectively (to compare with bug#41077#40). > > > > > The Bad News > ============ > > - fibn still exhausts memory, > - now pidigits does too. > > > > > I've only tried the default comp-speed (2) so far. I've attached the > results of M-x disassemble on the functions in fibn.el and pidigits.el. I suspect we are still looking at a speed 3 run. How comp-speed was set for the test? I ask that because for now speed 3 is written into the stone within elisp-benchmarks.el, yeah... :/ and so has to be manually changed there. Thanks! Andrea -- akrl@sdf.org ^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#41194: 28.0.50; [feature/native-comp] fibn benchmark exhausts memory 2020-06-14 16:19 ` Andrea Corallo @ 2020-06-14 20:47 ` Kévin Le Gouguec 2020-06-14 21:45 ` Andrea Corallo 0 siblings, 1 reply; 9+ messages in thread From: Kévin Le Gouguec @ 2020-06-14 20:47 UTC (permalink / raw) To: Andrea Corallo; +Cc: 41194-done [-- Attachment #1: Type: text/plain, Size: 1516 bytes --] Andrea Corallo <akrl@sdf.org> writes: > this is very good new thanks! If I read correctly we are always under > about 600MB as memory consumption is this correct? Yep. I can post the detailed data here if that's needed; here are the 10 files that took the most virtual memory (vsz): 1. org/org.el 541.2 MB 2. gnus/gnus-sum.el 459.3 MB 3. emacs-lisp/comp.el 455.2 MB 4. net/tramp.el 408.2 MB 5. net/tramp-adb.el 390.4 MB 6. net/tramp-sh.el 371.0 MB 7. progmodes/cperl-mode.el 356.2 MB 8. ../lisp/window.el 348.9 MB 9. gnus/message.el 345.4 MB 10. net/soap-client.el 344.4 MB And the 10 files that took the most resident memory (rss): 1. org/org.el 361.6 MB 2. emacs-lisp/comp.el 287.3 MB 3. gnus/gnus-sum.el 286.7 MB 4. net/tramp.el 236.8 MB 5. net/tramp-adb.el 218.1 MB 6. net/tramp-sh.el 199.0 MB 7. progmodes/cperl-mode.el 185.0 MB 8. ../lisp/window.el 181.6 MB 9. gnus/message.el 174.0 MB 10. erc/erc.el 173.5 MB > I suspect we are still looking at a speed 3 run. How comp-speed was set > for the test? > > I ask that because for now speed 3 is written into the stone within > elisp-benchmarks.el, yeah... :/ and so has to be manually changed there. Now that's just sneaky 😛 You're right, it was a speed 3 run. Setting comp-speed to 2 in elisp-benchmarks.el, I now get the attached results. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: perfs.org --] [-- Type: text/x-org, Size: 4575 bytes --] * Results ** master #+TBLNAME: master | test | non-gc avg (s) | gc avg (s) | gcs avg | tot avg (s) | tot avg err (s) | |----------------+----------------+------------+---------+-------------+-----------------| | bubble-no-cons | 118.41 | 0.23 | 3 | 118.63 | 0.36 | | bubble | 46.29 | 29.34 | 388 | 75.63 | 0.36 | | dhrystone | 74.82 | 0.00 | 0 | 74.82 | 0.34 | | fibn-rec | 59.50 | 0.00 | 0 | 59.50 | 0.28 | | fibn-tc | 147.39 | 96.86 | 1179 | 244.26 | 2.70 | | fibn | 320.33 | 276.23 | 3442 | 596.56 | 5.31 | | flet | 112.02 | 0.00 | 0 | 112.02 | 0.29 | | inclist | 166.30 | 0.00 | 0 | 166.30 | 0.67 | | listlen-tc | 76.97 | 0.00 | 0 | 76.97 | 0.53 | | map-closure | 81.86 | 0.00 | 0 | 81.86 | 0.31 | | nbody | 28.62 | 98.53 | 1303 | 127.14 | 0.21 | | pcase | 110.63 | 0.00 | 0 | 110.63 | 0.29 | | pidigits | 61.78 | 39.46 | 469 | 101.24 | 0.70 | |----------------+----------------+------------+---------+-------------+-----------------| | total | 1404.92 | 540.65 | 6786 | 1945.57 | 6.13 | ** feature/native-comp #+TBLNAME: feature/native-comp | test | non-gc avg (s) | gc avg (s) | gcs avg | tot avg (s) | tot avg err (s) | |----------------+----------------+------------+---------+-------------+-----------------| | bubble-no-cons | 30.12 | 0.16 | 2 | 30.28 | 0.04 | | bubble | 18.05 | 27.91 | 352 | 45.96 | 0.33 | | dhrystone | 34.26 | 0.00 | 0 | 34.26 | 0.05 | | fibn-rec | 26.92 | 0.00 | 0 | 26.92 | 0.03 | | fibn-tc | 98.66 | 93.89 | 1096 | 192.55 | 1.66 | | fibn | 253.19 | 269.12 | 3192 | 522.31 | 2.17 | | flet | 22.92 | 0.00 | 0 | 22.92 | 0.04 | | inclist | 11.76 | 0.00 | 0 | 11.76 | 0.16 | | listlen-tc | 21.44 | 0.00 | 0 | 21.44 | 0.05 | | map-closure | 80.57 | 0.00 | 0 | 80.57 | 0.03 | | nbody | 15.62 | 95.66 | 1212 | 111.28 | 0.10 | | pcase | 17.64 | 0.00 | 0 | 17.64 | 0.03 | | pidigits | 59.82 | 38.86 | 436 | 98.68 | 0.39 | |----------------+----------------+------------+---------+-------------+-----------------| | total | 690.98 | 525.59 | 6291 | 1216.57 | 2.79 | ** ratio | test | non-gc avg (s) | gc avg (s) | gcs avg | tot avg (s) | |----------------+----------------+------------+---------+-------------| | bubble-no-cons | 3.92 | 1.44 | 1.5 | 3.93 | | bubble | 2.56 | 1.05 | 1.1 | 1.64 | | dhrystone | 2.18 | | | 2.18 | | fibn-rec | 2.21 | | | 2.21 | | fibn-tc | 1.49 | 1.03 | 1.07 | 1.26 | | fibn | 1.26 | 1.03 | 1.08 | 1.14 | | flet | 4.89 | | | 4.89 | | inclist | 14.1 | | | 14.1 | | listlen-tc | 3.6 | | | 3.6 | | map-closure | 1.02 | | | 1.02 | | nbody | 1.83 | 1.03 | 1.07 | 1.14 | | pcase | 6.31 | | | 6.31 | | pidigits | 1.03 | 1.02 | 1.08 | 1.02 | |----------------+----------------+------------+---------+-------------| | total | 2.03 | 1.03 | 1.08 | 1.6 | #+TBLFM: @2$2..@>$> = if (remote(feature/native-comp,@@#$$#)!=0, remote(master,@@#$$#)/remote(feature/native-comp,@@#$$#), string("")); p3 [-- Attachment #3: Type: text/plain, Size: 153 bytes --] Conclusion: I'm closing this report! Again, thank you for your efforts. (And thank you for this opportunity to learn about Org spreadsheets 😉) ^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#41194: 28.0.50; [feature/native-comp] fibn benchmark exhausts memory 2020-06-14 20:47 ` Kévin Le Gouguec @ 2020-06-14 21:45 ` Andrea Corallo 0 siblings, 0 replies; 9+ messages in thread From: Andrea Corallo @ 2020-06-14 21:45 UTC (permalink / raw) To: Kévin Le Gouguec; +Cc: 41194 Kévin Le Gouguec <kevin.legouguec@gmail.com> writes: > Andrea Corallo <akrl@sdf.org> writes: > >> this is very good new thanks! If I read correctly we are always under >> about 600MB as memory consumption is this correct? > > Yep. I can post the detailed data here if that's needed; here are the > 10 files that took the most virtual memory (vsz): > > 1. org/org.el 541.2 MB > 2. gnus/gnus-sum.el 459.3 MB > 3. emacs-lisp/comp.el 455.2 MB > 4. net/tramp.el 408.2 MB > 5. net/tramp-adb.el 390.4 MB > 6. net/tramp-sh.el 371.0 MB > 7. progmodes/cperl-mode.el 356.2 MB > 8. ../lisp/window.el 348.9 MB > 9. gnus/message.el 345.4 MB > 10. net/soap-client.el 344.4 MB Cool, I guess means should be buildable at -j3 with 2GB of ram. > And the 10 files that took the most resident memory (rss): > > 1. org/org.el 361.6 MB > 2. emacs-lisp/comp.el 287.3 MB > 3. gnus/gnus-sum.el 286.7 MB > 4. net/tramp.el 236.8 MB > 5. net/tramp-adb.el 218.1 MB > 6. net/tramp-sh.el 199.0 MB > 7. progmodes/cperl-mode.el 185.0 MB > 8. ../lisp/window.el 181.6 MB > 9. gnus/message.el 174.0 MB > 10. erc/erc.el 173.5 MB > >> I suspect we are still looking at a speed 3 run. How comp-speed was set >> for the test? >> >> I ask that because for now speed 3 is written into the stone within >> elisp-benchmarks.el, yeah... :/ and so has to be manually changed there. > > Now that's just sneaky 😛 Well... we can also just call it bad :) > * Results > ** master > > #+TBLNAME: master > | test | non-gc avg (s) | gc avg (s) | gcs avg | tot avg (s) | tot avg err (s) | > > |----------------+----------------+------------+---------+-------------+-----------------| > | bubble-no-cons | 118.41 | 0.23 | 3 | 118.63 | 0.36 | > | bubble | 46.29 | 29.34 | 388 | 75.63 | 0.36 | > | dhrystone | 74.82 | 0.00 | 0 | 74.82 | 0.34 | > | fibn-rec | 59.50 | 0.00 | 0 | 59.50 | 0.28 | > | fibn-tc | 147.39 | 96.86 | 1179 | 244.26 | 2.70 | > | fibn | 320.33 | 276.23 | 3442 | 596.56 | 5.31 | > | flet | 112.02 | 0.00 | 0 | 112.02 | 0.29 | > | inclist | 166.30 | 0.00 | 0 | 166.30 | 0.67 | > | listlen-tc | 76.97 | 0.00 | 0 | 76.97 | 0.53 | > | map-closure | 81.86 | 0.00 | 0 | 81.86 | 0.31 | > | nbody | 28.62 | 98.53 | 1303 | 127.14 | 0.21 | > | pcase | 110.63 | 0.00 | 0 | 110.63 | 0.29 | > | pidigits | 61.78 | 39.46 | 469 | 101.24 | 0.70 | > |----------------+----------------+------------+---------+-------------+-----------------| > | total | 1404.92 | 540.65 | 6786 | 1945.57 | 6.13 | > ** feature/native-comp > > #+TBLNAME: feature/native-comp > | test | non-gc avg (s) | gc avg (s) | gcs avg | tot avg (s) | tot avg err (s) | > > |----------------+----------------+------------+---------+-------------+-----------------| > | bubble-no-cons | 30.12 | 0.16 | 2 | 30.28 | 0.04 | > | bubble | 18.05 | 27.91 | 352 | 45.96 | 0.33 | > | dhrystone | 34.26 | 0.00 | 0 | 34.26 | 0.05 | > | fibn-rec | 26.92 | 0.00 | 0 | 26.92 | 0.03 | > | fibn-tc | 98.66 | 93.89 | 1096 | 192.55 | 1.66 | > | fibn | 253.19 | 269.12 | 3192 | 522.31 | 2.17 | > | flet | 22.92 | 0.00 | 0 | 22.92 | 0.04 | > | inclist | 11.76 | 0.00 | 0 | 11.76 | 0.16 | > | listlen-tc | 21.44 | 0.00 | 0 | 21.44 | 0.05 | > | map-closure | 80.57 | 0.00 | 0 | 80.57 | 0.03 | > | nbody | 15.62 | 95.66 | 1212 | 111.28 | 0.10 | > | pcase | 17.64 | 0.00 | 0 | 17.64 | 0.03 | > | pidigits | 59.82 | 38.86 | 436 | 98.68 | 0.39 | > |----------------+----------------+------------+---------+-------------+-----------------| > | total | 690.98 | 525.59 | 6291 | 1216.57 | 2.79 | > ** ratio > | test | non-gc avg (s) | gc avg (s) | gcs avg | tot avg (s) | > |----------------+----------------+------------+---------+-------------| > | bubble-no-cons | 3.92 | 1.44 | 1.5 | 3.93 | > | bubble | 2.56 | 1.05 | 1.1 | 1.64 | > | dhrystone | 2.18 | | | 2.18 | > | fibn-rec | 2.21 | | | 2.21 | > | fibn-tc | 1.49 | 1.03 | 1.07 | 1.26 | > | fibn | 1.26 | 1.03 | 1.08 | 1.14 | > | flet | 4.89 | | | 4.89 | > | inclist | 14.1 | | | 14.1 | > | listlen-tc | 3.6 | | | 3.6 | > | map-closure | 1.02 | | | 1.02 | > | nbody | 1.83 | 1.03 | 1.07 | 1.14 | > | pcase | 6.31 | | | 6.31 | > | pidigits | 1.03 | 1.02 | 1.08 | 1.02 | > |----------------+----------------+------------+---------+-------------| > | total | 2.03 | 1.03 | 1.08 | 1.6 | > > #+TBLFM: @2$2..@>$> = if (remote(feature/native-comp,@@#$$#)!=0, remote(master,@@#$$#)/remote(feature/native-comp,@@#$$#), string("")); p3 That's not bad for speed 2, GC and funcall are eating part of the perf, probably with bigger function bodies we would see more delta. > > Conclusion: I'm closing this report! Again, thank you for your efforts. > > (And thank you for this opportunity to learn about Org spreadsheets 😉) Thanks for your inputs! Andrea -- akrl@sdf.org ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2020-06-14 21:45 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-05-11 20:47 bug#41194: 28.0.50; [feature/native-comp] fibn benchmark exhausts memory Kévin Le Gouguec 2020-06-09 22:24 ` Andrea Corallo 2020-06-10 7:55 ` Kévin Le Gouguec 2020-06-13 15:00 ` Andrea Corallo 2020-06-13 18:17 ` Kévin Le Gouguec 2020-06-14 15:19 ` Kévin Le Gouguec 2020-06-14 16:19 ` Andrea Corallo 2020-06-14 20:47 ` Kévin Le Gouguec 2020-06-14 21:45 ` Andrea Corallo
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.