From: "Gerd Möllmann" <gerd.moellmann@gmail.com>
To: Helmut Eller <eller.helmut@gmail.com>
Cc: Eli Zaretskii <eliz@gnu.org>, Pip Cet <pipcet@protonmail.com>,
spd@toadstyle.org, emacs-devel@gnu.org
Subject: Re: igc, macOS avoiding signals
Date: Sat, 04 Jan 2025 09:02:20 +0100 [thread overview]
Message-ID: <m2jzbb0zxv.fsf@gmail.com> (raw)
In-Reply-To: <m2sepz12rq.fsf@gmail.com> ("Gerd Möllmann"'s message of "Sat, 04 Jan 2025 08:01:13 +0100")
Gerd Möllmann <gerd.moellmann@gmail.com> writes:
> Helmut Eller <eller.helmut@gmail.com> writes:
>
>> On Tue, Dec 31 2024, Eli Zaretskii wrote:
>>> We'd need to add a new function to process_pending_signals, which
>>> would process SIGPROF and maybe also SIGALRM. The signal handlers for
>>> those would then only set a flag (not pending_signals, some other
>>> flag).
>>
>> I implemented this with the two attached patches. The trouble is that,
>> the recorded backtraces are not same. This can be seen by looking at
>> the call tree produced by profiler.el and the attached profiler-test.el.
>> When add_sample is called in the signal handler, then the call tree for
>> the foo example looks so:
>>
>> ...
>> 1986 100% main
>> 1986 100% record-samples
>> 1986 100% foo
>> 1074 54% float-time
>> 0 0% ...
>>
>> When add_sample is called from process_pending_signals, it looks like
>> this:
>>
>> ...
>> 1986 100% main
>> 1986 100% record-samples
>> 1986 100% foo
>> 0 0% ...
>>
>> Not the absence of float-time. The reason for this is, that in
>> bytecode.c, maybe_quit is called before the function is pushed to the
>> backtrace with record_in_backtrace. In the second patch, I moved this
>> call forward to before the function is popped with lisp_eval_depth--.
>> With this patch, the call tree includes float-time again:
>>
>> ...
>> 1989 100% main
>> 1989 100% record-samples
>> 1989 100% foo
>> 1981 99% float-time
>> 0 0% ...
>>
>> However, float-time has now 99% as opposed to 54% in the first call
>> tree.
>>
>> A more complex pair of call trees is attached in the files
>> bar-0.report and bar-2.report. A significant difference there is
>> in this section:
>>
>> ...
>> 781 73% animate-place-char
>> 19 1% delete-char
>> 16 1% floor
>> 4 0% undo-auto--undoable-change
>> 4 0% undo-auto--boundary-ensure-timer
>> 96 9% insert-char
>> 14 1% undo-auto--undoable-change
>> 6 0% undo-auto--boundary-ensure-timer
>> 5 0% beginning-of-line
>> 232 21% move-to-column
>> ...
>>
>> compared to the version with both patches applied:
>>
>> ...
>> 693 72% animate-place-char
>> 32 3% delete-char
>> 29 3% window-start
>> 43 4% insert-char
>> 309 32% move-to-column
>> 222 23% beginning-of-line
>> 8 0% undo-auto--undoable-change
>> 8 0% undo-auto--boundary-ensure-timer
>> 8 0% run-at-time
>> 8 0% timer-set-function
>> 8 0% timerp
>> 8 0% vectorp
>> ...
>>
>> E.g. the percentage attributed to beginning-of-line is quite different
>> in those two versions (23% and 0%).
>>
>> I'm not sure if those differences are acceptable. I also have no good
>> idea how to reduce it, except inserting more calls to maybe_quit.
>>
>> (In eval_sub and Ffuncall, it would also help the profiler to move the
>> maybe_quit call forward before lisp_eval_depth--. This would only matter
>> for interpreted functions, not in byte compiled code. Curiously,
>> apply_lambda doesn't call maybe_quit at all.)
>>
>> Helmut
>
> Doesn't matter much at this point, probably, but I'm feeling a bit
> uneasy about the pending_profiler_signals count.
>
> Say we get two SIGPROFs that we can't record samples for, for some
> reason. The signals occur at times t0 and t1. We then add_sample(2) at
> t2 > t1 with the assumption that sample(t1) is close to sample(t2) so to
> speak, which I find okay if t2 is close enough to t1.
>
> When we use a count of 2 though, we kind of also assumes that sample(t0)
> is close to samole(t1).
>
> Is that okay? Not sure.
Another thought that crossed my mind. Not that I have an idea
how to use that, but maybe someone else has?
With the existing arrangement, a count in the profiler log means time.
It's count * sampling-interval since SIGPROFs arrive in fixed
intervals, ignoring details.
With the new arrangement, the intervals between samples are generally
not fixed length. Sampling is done when we get to it. Of course when
we get to it often enough, we are approximating fixed intervals, but
in general a count doesn't necessarily measure time, or only to a
degree.
Can we use that somehow?
next prev parent reply other threads:[~2025-01-04 8:02 UTC|newest]
Thread overview: 133+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-28 13:24 igc, macOS avoiding signals Sean Devlin
2024-12-28 13:28 ` Gerd Möllmann
2024-12-28 14:31 ` Eli Zaretskii
2024-12-28 14:45 ` Gerd Möllmann
2024-12-30 7:13 ` Gerd Möllmann
2024-12-30 7:23 ` Gerd Möllmann
2024-12-30 7:39 ` Helmut Eller
2024-12-30 7:51 ` Gerd Möllmann
2024-12-30 8:02 ` Helmut Eller
2024-12-30 8:47 ` Gerd Möllmann
2024-12-30 9:29 ` Helmut Eller
2024-12-30 9:47 ` Helmut Eller
2024-12-30 11:54 ` Gerd Möllmann
2024-12-30 10:05 ` Gerd Möllmann
2024-12-30 10:27 ` Helmut Eller
2024-12-30 11:53 ` Gerd Möllmann
2024-12-30 14:54 ` Eli Zaretskii
2024-12-30 15:05 ` Gerd Möllmann
2024-12-30 15:05 ` Pip Cet via Emacs development discussions.
2024-12-30 12:32 ` Pip Cet via Emacs development discussions.
2024-12-30 14:24 ` Eli Zaretskii
2024-12-30 14:59 ` Helmut Eller
2024-12-30 15:15 ` Eli Zaretskii
2024-12-30 15:24 ` Helmut Eller
2024-12-30 15:25 ` Pip Cet via Emacs development discussions.
2024-12-30 15:34 ` Gerd Möllmann
2024-12-30 19:02 ` Helmut Eller
2024-12-30 20:03 ` Pip Cet via Emacs development discussions.
2024-12-30 15:30 ` Gerd Möllmann
2024-12-30 16:57 ` Helmut Eller
2024-12-30 17:41 ` Gerd Möllmann
2024-12-30 17:49 ` Pip Cet via Emacs development discussions.
2024-12-30 18:33 ` Helmut Eller
2024-12-30 17:49 ` Eli Zaretskii
2024-12-30 18:37 ` Gerd Möllmann
2024-12-30 19:15 ` Eli Zaretskii
2024-12-30 19:55 ` Gerd Möllmann
2024-12-31 7:34 ` Helmut Eller
2024-12-31 9:19 ` Gerd Möllmann
2024-12-31 9:51 ` Helmut Eller
2024-12-31 10:00 ` Gerd Möllmann
2024-12-31 13:49 ` Pip Cet via Emacs development discussions.
2024-12-31 14:13 ` Eli Zaretskii
2024-12-31 9:51 ` Gerd Möllmann
2024-12-31 13:18 ` Eli Zaretskii
2024-12-31 14:15 ` Gerd Möllmann
2024-12-31 14:27 ` Eli Zaretskii
2024-12-31 15:05 ` Gerd Möllmann
2024-12-31 15:14 ` Eli Zaretskii
2024-12-31 15:20 ` Gerd Möllmann
2024-12-31 15:12 ` Helmut Eller
2024-12-31 15:31 ` Gerd Möllmann
2024-12-31 15:37 ` Helmut Eller
2024-12-31 15:39 ` Gerd Möllmann
2024-12-31 10:09 ` Pip Cet via Emacs development discussions.
2024-12-31 13:27 ` Eli Zaretskii
2024-12-31 14:29 ` Pip Cet via Emacs development discussions.
2024-12-31 14:34 ` Eli Zaretskii
2024-12-31 15:08 ` Gerd Möllmann
2025-01-03 18:37 ` Helmut Eller
2025-01-03 19:55 ` Eli Zaretskii
2025-01-03 20:28 ` Pip Cet via Emacs development discussions.
2025-01-04 7:01 ` Gerd Möllmann
2025-01-04 8:02 ` Gerd Möllmann [this message]
2025-01-04 8:34 ` Eli Zaretskii
2025-01-04 9:02 ` Gerd Möllmann
2025-01-04 9:59 ` Eli Zaretskii
2025-01-04 10:22 ` Gerd Möllmann
2025-01-04 13:59 ` Helmut Eller
2025-01-04 14:15 ` Gerd Möllmann
2025-01-04 14:17 ` Eli Zaretskii
2025-01-04 14:55 ` Helmut Eller
2025-01-04 15:06 ` Eli Zaretskii
2025-01-04 16:02 ` Pip Cet via Emacs development discussions.
2025-01-04 17:13 ` Helmut Eller
2024-12-31 15:07 ` Gerd Möllmann
2024-12-31 13:14 ` Eli Zaretskii
2024-12-31 14:19 ` Pip Cet via Emacs development discussions.
2024-12-31 14:31 ` Eli Zaretskii
2024-12-31 14:40 ` Helmut Eller
2024-12-31 14:55 ` Gerd Möllmann
2024-12-31 15:07 ` Eli Zaretskii
2024-12-31 15:13 ` Gerd Möllmann
2024-12-31 15:16 ` Helmut Eller
2025-01-02 8:37 ` Stefan Kangas
2025-01-02 9:05 ` Eli Zaretskii
2025-01-02 10:00 ` Helmut Eller
2025-01-02 12:34 ` Pip Cet via Emacs development discussions.
2025-01-02 13:08 ` Gerd Möllmann
2025-01-02 15:42 ` Eli Zaretskii
2025-01-02 17:56 ` Pip Cet via Emacs development discussions.
2024-12-30 12:42 ` Pip Cet via Emacs development discussions.
2024-12-30 13:40 ` Gerd Möllmann
2024-12-30 13:53 ` Pip Cet via Emacs development discussions.
2024-12-30 14:02 ` Gerd Möllmann
2024-12-30 14:32 ` Pip Cet via Emacs development discussions.
2024-12-30 14:52 ` Gerd Möllmann
2024-12-30 11:18 ` Pip Cet via Emacs development discussions.
2024-12-30 12:23 ` Gerd Möllmann
2024-12-30 11:11 ` Pip Cet via Emacs development discussions.
2024-12-30 12:13 ` Gerd Möllmann
2024-12-30 10:53 ` Pip Cet via Emacs development discussions.
2024-12-30 10:46 ` Pip Cet via Emacs development discussions.
2024-12-30 12:00 ` Gerd Möllmann
2024-12-30 12:07 ` Gerd Möllmann
2024-12-28 15:12 ` Pip Cet via Emacs development discussions.
2024-12-28 17:30 ` Eli Zaretskii
2024-12-28 18:40 ` Pip Cet via Emacs development discussions.
2024-12-28 18:50 ` Eli Zaretskii
2024-12-28 19:07 ` Eli Zaretskii
2024-12-28 19:20 ` Pip Cet via Emacs development discussions.
2024-12-28 19:36 ` Eli Zaretskii
2024-12-28 20:54 ` Pip Cet via Emacs development discussions.
2024-12-29 5:51 ` Eli Zaretskii
2024-12-28 19:15 ` Pip Cet via Emacs development discussions.
2024-12-28 19:30 ` Eli Zaretskii
2024-12-28 16:29 ` Pip Cet via Emacs development discussions.
2024-12-29 2:21 ` Sean Devlin
2024-12-29 12:22 ` Pip Cet via Emacs development discussions.
2024-12-29 15:01 ` Gerd Möllmann
2024-12-29 19:44 ` Pip Cet via Emacs development discussions.
2024-12-30 6:16 ` Gerd Möllmann
2024-12-30 12:51 ` Gerd Möllmann
2024-12-30 13:09 ` Pip Cet via Emacs development discussions.
2024-12-30 13:28 ` Gerd Möllmann
2024-12-30 5:24 ` Sean Devlin
2024-12-30 6:17 ` Gerd Möllmann
2024-12-30 5:23 ` Sean Devlin
-- strict thread matches above, loose matches on Subject: below --
2024-12-28 6:40 Gerd Möllmann
2024-12-28 12:49 ` Pip Cet via Emacs development discussions.
2024-12-28 12:55 ` Gerd Möllmann
2024-12-28 13:50 ` Óscar Fuentes
2024-12-29 8:02 ` Helmut Eller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m2jzbb0zxv.fsf@gmail.com \
--to=gerd.moellmann@gmail.com \
--cc=eliz@gnu.org \
--cc=eller.helmut@gmail.com \
--cc=emacs-devel@gnu.org \
--cc=pipcet@protonmail.com \
--cc=spd@toadstyle.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this 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).