#! /usr/bin/env stap # # Copyright (C) 2018 Red Hat, Inc. # By William Cohen, Red Hat Inc. # wcohen@redhat.com # # USAGE: stap syscallbypid.stp --suppress-handler-errors # # The "--suppress-handler-errors" option allows the script to continue # run when probes are skipped. The probe skips make the data less accurate, # but are otherwise harmless. global arr%[20000] global procname% probe syscall_any { arr[pid(), syscall_nr]++ procname[pid()] = execname() } probe scheduler.process_exit { delete arr[pid(),*] delete procname[pid()] } function process_name(pid) { return sprintf("%s[%d]", procname[pid], pid) } probe prometheus { @prometheus_dump_array2_map(arr, "syscall_count", "pid", "name", sprint, process_name, syscall_name ) }