[Bug translator/26296] New: delay script-global locking until required
fche at redhat dot com
sourceware-bugzilla@sourceware.org
Thu Jul 23 15:40:45 GMT 2020
https://sourceware.org/bugzilla/show_bug.cgi?id=26296
Bug ID: 26296
Summary: delay script-global locking until required
Product: systemtap
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: translator
Assignee: systemtap at sourceware dot org
Reporter: fche at redhat dot com
Target Milestone: ---
The scripting language promises atomic execution of handlers that read/write
global variables. This is implemented by taking read/write locks as
appropriate, early in the probe handler prologue. It has been repeatedly
observed that this causes perhaps unnecessary overheads (e.g. bug #7033).
We can imagine a change that could maintain the atomic semantics, but handle
the common pattern:
global bar
probe foo {
if(condition) next;
bar = $var
}
where a pure filtering predicate that does not read global variables is
expected to frequently skip execution of the critical sections entirely.
Instead of emitting:
prologue:
lock_all()
body:
if(condition) goto epilogue;
bar=$var
epilogue:
unlock_all()
we could emit:
prologue:
locked_p = false
body:
if(condition) goto epilogue;
if(!locked_p) lock_all(); locked_p = true;
bar=$var
epilogue:
if (locked_p) unlock_all()
IOW: defer locking to the first moment when any global is actually
read/written, tracking locked-ness in a new context local. This would involve
only a small change to the translator, involving only context-free logic. That
could
later be optimized to remove repeated checks/etc. over multiple global vars in
a control-flow / context aware way.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the Systemtap
mailing list