diff options
| author | Paul Buetow <paul@buetow.org> | 2025-03-29 11:25:27 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-03-29 11:25:27 +0200 |
| commit | 8a34be1f4fffca90d74e2092c7bc5a6af02392c4 (patch) | |
| tree | f003dc1b8d95a31bf8d01c786e98a5a622ac43cd /internal/eventloop.go | |
| parent | 5f1b3be8ac4013ac7cf5041de339317defeb75ce (diff) | |
fix
Diffstat (limited to 'internal/eventloop.go')
| -rw-r--r-- | internal/eventloop.go | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/internal/eventloop.go b/internal/eventloop.go index b2392ab..4e9a3cb 100644 --- a/internal/eventloop.go +++ b/internal/eventloop.go @@ -20,13 +20,13 @@ import ( // TOOD: read and write syscalls: can also collect amount of bytes! type eventLoop struct { - flags flags.Flags - filter *eventFilter - enterEvs map[uint32]*event.Pair // Temp. store of sys_enter tracepoints per Tid. - files map[int32]file.File // Track all open files by file descriptor.. - comms map[uint32]string // Program or thread name of the current Tid. - prevPairs map[uint32]*event.Pair // Previous event (to calculate time differences between two events) - flamegraph flamegraph.Flamegraph // Storing all paths in a map structure for analysis + flags flags.Flags + filter *eventFilter + enterEvs map[uint32]*event.Pair // Temp. store of sys_enter tracepoints per Tid. + files map[int32]file.File // Track all open files by file descriptor.. + comms map[uint32]string // Program or thread name of the current Tid. + prevPairTimes map[uint32]uint64 // Previous event's time (to calculate time differences between two events) + flamegraph flamegraph.Flamegraph // Storing all paths in a map structure for analysis // Statistics numTracepoints uint @@ -39,14 +39,14 @@ type eventLoop struct { func newEventLoop(flags flags.Flags) *eventLoop { return &eventLoop{ - flags: flags, - filter: newEventFilter(flags), - enterEvs: make(map[uint32]*event.Pair), - files: make(map[int32]file.File), - comms: make(map[uint32]string), - prevPairs: make(map[uint32]*event.Pair), - flamegraph: flamegraph.New(), - done: make(chan struct{}), + flags: flags, + filter: newEventFilter(flags), + enterEvs: make(map[uint32]*event.Pair), + files: make(map[int32]file.File), + comms: make(map[uint32]string), + prevPairTimes: make(map[uint32]uint64), + flamegraph: flamegraph.New(flags), + done: make(chan struct{}), } } @@ -90,10 +90,10 @@ func (e *eventLoop) run(ctx context.Context, rawCh <-chan []byte) { case e.flags.FlamegraphEnable: e.flamegraph.Ch <- ev case e.flags.PprofEnable: - ev.RecyclePrev() + ev.Recycle() default: fmt.Println(ev.String()) - ev.RecyclePrev() + ev.Recycle() } e.numSyscallsAfterFilter++ } @@ -325,9 +325,9 @@ func (e *eventLoop) syscallExit(exitEv event.Event, ch chan<- *event.Pair) { // TODO: fallocate // TODO: https://man7.org/linux/man-pages/man2/io_uring_enter.2.html (already captured but without FDs) - ev.PrevPair, _ = e.prevPairs[ev.EnterEv.GetTid()] - ev.CalculateDurations() - e.prevPairs[ev.EnterEv.GetTid()] = ev + prevPairTime, _ := e.prevPairTimes[ev.EnterEv.GetTid()] + ev.CalculateDurations(prevPairTime) + e.prevPairTimes[ev.EnterEv.GetTid()] = ev.ExitEv.GetTime() ch <- ev } |
