Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:mhocko
mmdebug-tools
syscall_times.pl
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File syscall_times.pl of Package mmdebug-tools
#!/usr/bin/perl # Script for parsing syscall trace obtained by enabling # /sys/kernel/debug/tracing/events/syscalls/sys_{enter,exit}_* # tracepoints to get time spent in each syscall. The script prints output # of the form: # TIMESTAMP PID CMD SYSCALL DURATION # 113675.072998 10546 cat sys_read 0.000003 my %pnames, %pcalls, %ptimes; $syscall = ""; while (<STDIN>) { chop; @fields = split(/ */); $fields[1] =~ /^(.*)-([0-9]*$)/; $name = $1; $pid = $2; $time = $fields[4]; $time =~ s/://; $syscall = $fields[5]; # Syscall begin? if ($syscall =~ /sys_[a-z0-9]*\(/) { $syscall =~ s/\(.*//; if (!exists($pnames{$pid}) || ($name ne '<...>')) { $pnames{$pid} = $name; } $pcalls{$pid} = $syscall; $ptimes{$pid} = $time; # print "Adding $pid $name $syscall\n"; } else { # Syscall end if (exists($pcalls{$pid})) { $startsys = $pcalls{$pid}; # print "Matching $pid $syscall\n"; if ($startsys eq $syscall) { printf("$ptimes{$pid} $pid $pnames{$pid} $syscall %.6f\n", $time-$ptimes{$pid}); } delete $pcalls{$pid}; delete $ptime{$pid}; } } }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor