From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: [HACKERS] Dynamic instrumentation of lwlock wait times (lwlock flamegraphs) |
Date: | 2020-08-13 00:42:33 |
Message-ID: | 20200813004233.hdsdfvufqrbdwzgr@alap3.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
On 2017-06-22 14:08:45 -0700, Andres Freund wrote:
> At pgcon some people were talking about the difficulty of instrumenting
> the time actually spent waiting for lwlocks and related measurements.
> I'd mentioned that linux these days provides infrastructure to measure
> such things in unmodified binaries.
>
> Attached is a prototype of a script that measures the time spent inside
> PGSemaphoreLock(), aggregates that inside the kernel, grouped by pid and
> stacktrace. That allows one to generate nice flame graphs showing which
> part of the code waits how long for lwlocks.
>
> The attached script clearly needs improvements, but I thought I'd show
> some of the results it can get. To run it you need the the python
> library of the 'bcc' project [1], and a sufficiently new kernel. Some
> distributions, e.g. newer debian versions, package this as python-bpfcc
> and similar.
>
> The output of the script can be turned into a flamegraph with
> https://github.com/brendangregg/FlameGraph 's flamegraph.pl.
The script has bitrot slightly, due to python3 and postgres changes (the
move to posix semaphores). Updated version attached.
Based on the discussion in
https://www.postgresql.org/message-id/20200813003934.yrm4qqngfygr6ii7%40alap3.anarazel.de
Greetings,
Andres Freund
Attachment | Content-Type | Size |
---|---|---|
pgsemwait.py | text/x-python | 4.9 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Geoghegan | 2020-08-13 01:03:43 | Re: Add LWLock blocker(s) information |
Previous Message | Andres Freund | 2020-08-13 00:39:34 | Re: Add LWLock blocker(s) information |