From cab3c5a1a0f81eaac3cb8d4f54f0515b065160ea Mon Sep 17 00:00:00 2001 From: V Date: Sat, 10 Jul 2021 20:17:48 +0200 Subject: ripple: move tools to their own directory Change-Id: I693b9b9c5b9aff8c96b1b81f1ff7b7f2b92eabcb --- ripple/driver.pl | 69 -------------------------------------------------------- 1 file changed, 69 deletions(-) delete mode 100755 ripple/driver.pl (limited to 'ripple/driver.pl') diff --git a/ripple/driver.pl b/ripple/driver.pl deleted file mode 100755 index 7a8d164..0000000 --- a/ripple/driver.pl +++ /dev/null @@ -1,69 +0,0 @@ -#! /usr/bin/perl -# SPDX-FileCopyrightText: edef -# SPDX-License-Identifier: OSL-3.0 - -use strict; -use POSIX qw(mkfifo); - -@ARGV or die "Usage: $0 PROGRAM [ARG]... 2> [LOG FILE]"; -die "bpftrace does not support spaces in argv" if grep {/ /} @ARGV; - -unlink(my $fifo = "tracepipe"); -mkfifo($fifo, 0600) or die; - -my $script = do { local $/; }; -defined(my $pid = fork) or die; - -if (!$pid) { - open(STDERR, ">&", STDOUT) or die; - exec( - 'systemd-run', '--user', '--scope', '--', - # NOTE: this expects bpftrace to be SUID-root, - # and relies on shells dropping euid - 'bpftrace', '-o', $fifo, '-e', $script, '-c', - join(' ', @ARGV) - ) or die; -} - -my %count; - -# TODO(edef): if bpftrace fails, the FIFO will never open -open(TRACE, '<', $fifo) or die; -while () { - chomp; - next if /^Attaching \d+ probes[.][.][.]$/ or /^$/; - /^@\[tracepoint:syscalls:sys_enter_(\w+), (.+)\]: (\d+)$/ or die $_; - $count{$1}{$2} += $3; -} - -waitpid $pid, 0; - -foreach my $comm (sort keys %count) { - die "unhandled: $comm" if $comm =~ /\s/; - my $comm_count = $count{$comm}; - foreach my $sys (sort keys %$comm_count) { - my $n = $comm_count->{$sys}; - print STDERR "$comm\t$sys\t$n\n"; - } -} - -__DATA__ -BEGIN { - @cgroup = cgroup; - @self = pid; -} - -tracepoint:syscalls:sys_enter_* /cgroup == @cgroup && pid != @self/ { - @[probe, comm] = count(); -} - -interval:s:1 { - print(@); - clear(@); -} - -tracepoint:sched:sched_process_exit /tid == cpid/ { - clear(@cgroup); - clear(@self); - exit(); -} -- cgit 1.4.1