#!/usr/bin/env stap # # SPDX-License-Identifier: MIT global slabs global freed probe vm.kmem_cache_alloc { slabs [execname(), bytes_alloc, ptr, gfp_flag_name]<<<1 } probe vm.kmem_cache_free { freed [execname(), ptr, name]<<<1 } probe begin { print("\"TYPE\",\"PROCESS\",\"POINTER\",\"BYTES\",\"FLAGS/NAME\"\n"); } probe timer.ms(10000) { foreach ([name, bytes, ptr, flags] in slabs) { printf("\"ALLOC\",\"%s\",\"%p\",\"%d\",\"%s\"\n", name, ptr, bytes, flags); } foreach ([execname, ptr, name] in freed) { printf("\"FREE\",\"%s\",\"%p\",\"\",\"%s\"\n", execname, ptr, name); } delete slabs delete freed }