#!/usr/bin/env -S bpftrace --unsafe -q
/*
* Asserts that the `node` layer config works properly by failing if the pid
* passed to the script runs on NUMA node 1. The layered config should restrict
* the pid passed to the script to run on a layer that only runs on NUMA node 0.
*/
BEGIN
{
@bpftrace_pid = pid;
@sig = 0;
if ($1 == 0) {
// exit 137
@sig = 9;
}
}
profile:hz:1
{
@counts[cpu] = @counts[cpu] + 1;
if (@counts[cpu] == 15) {
// exit 0
@sig = 15;
}
}
rawtracepoint:sched_switch
{
$task = (struct task_struct *)arg1;
if (($task->parent->pid == $1 && numaid == 1) ||
($task->real_parent->pid == $1 && numaid == 1)) {
// exit 137
@sig = 9;
}
}
kprobe:__x64_sys_* / @bpftrace_pid == pid / {
if (@sig > 0) {
signal(@sig);
}
}
interval:s:1 {
print(("bpftrace monitoring pid", $1, "signal", @sig));
}