1*03bc95b0SMateusz Piotrowski.\" 2*03bc95b0SMateusz Piotrowski.\" Copyright (c) 2025-2026 Mateusz Piotrowski <0mp@FreeBSD.org> 3*03bc95b0SMateusz Piotrowski.\" 4*03bc95b0SMateusz Piotrowski.\" SPDX-License-Identifier: BSD-2-Clause 5*03bc95b0SMateusz Piotrowski.\" 6*03bc95b0SMateusz Piotrowski.Dd May 12, 2026 7*03bc95b0SMateusz Piotrowski.Dt DTRACE_DTMALLOC 4 8*03bc95b0SMateusz Piotrowski.Os 9*03bc95b0SMateusz Piotrowski.Sh NAME 10*03bc95b0SMateusz Piotrowski.Nm dtrace_dtmalloc 11*03bc95b0SMateusz Piotrowski.Nd a DTrace provider for tracing kernel memory allocations by type 12*03bc95b0SMateusz Piotrowski.Sh SYNOPSIS 13*03bc95b0SMateusz Piotrowski.Nm dtmalloc Ns Cm :: Ns Ar function Ns Cm :malloc 14*03bc95b0SMateusz Piotrowski.Nm dtmalloc Ns Cm :: Ns Ar function Ns Cm :free 15*03bc95b0SMateusz Piotrowski.Sh DESCRIPTION 16*03bc95b0SMateusz PiotrowskiThe 17*03bc95b0SMateusz Piotrowski.Nm dtmalloc 18*03bc95b0SMateusz Piotrowskiprovider instruments 19*03bc95b0SMateusz Piotrowski.Xr malloc 9 20*03bc95b0SMateusz Piotrowskiand 21*03bc95b0SMateusz Piotrowski.Xr free 9 22*03bc95b0SMateusz Piotrowskikernel functions to trace memory allocations by type. 23*03bc95b0SMateusz PiotrowskiRefer to 24*03bc95b0SMateusz Piotrowski.Xr malloc 9 25*03bc95b0SMateusz Piotrowskifor more details about malloc types. 26*03bc95b0SMateusz Piotrowski.Pp 27*03bc95b0SMateusz PiotrowskiThe 28*03bc95b0SMateusz Piotrowski.Nm dtmalloc Ns Cm :: Ns Ar function Ns Cm :malloc 29*03bc95b0SMateusz Piotrowskiprobe fires upon a successful allocation. 30*03bc95b0SMateusz PiotrowskiIts probe arguments are: 31*03bc95b0SMateusz Piotrowski.Bl -column -offset indent "malloc Probe Argument" "Definition" 32*03bc95b0SMateusz Piotrowski.It Sy Probe Argument Ta Sy Definition 33*03bc95b0SMateusz Piotrowski.It Fa args[0] Ta Ft struct malloc_type *mtp 34*03bc95b0SMateusz Piotrowski.It Fa args[1] Ta Ft struct malloc_type_internal *mtip 35*03bc95b0SMateusz Piotrowski.It Fa args[2] Ta Ft struct malloc_type_stats *mtsp 36*03bc95b0SMateusz Piotrowski.It Fa args[3] Ta Ft unsigned long size 37*03bc95b0SMateusz Piotrowski.It Fa args[4] Ta Ft int zindx 38*03bc95b0SMateusz Piotrowski.El 39*03bc95b0SMateusz Piotrowski.Pp 40*03bc95b0SMateusz PiotrowskiThe 41*03bc95b0SMateusz Piotrowski.Nm dtmalloc Ns Cm :: Ns Ar function Ns Cm :free 42*03bc95b0SMateusz Piotrowskiprobe fires upon a free operation. 43*03bc95b0SMateusz PiotrowskiIts probe arguments are: 44*03bc95b0SMateusz Piotrowski.Bl -column -offset indent "free Probe Argument" "Definition" 45*03bc95b0SMateusz Piotrowski.It Sy free Probe Argument Ta Sy Definition 46*03bc95b0SMateusz Piotrowski.It Fa args[0] Ta Ft struct malloc_type *mtp 47*03bc95b0SMateusz Piotrowski.It Fa args[1] Ta Ft struct malloc_type_internal *mtip 48*03bc95b0SMateusz Piotrowski.It Fa args[2] Ta Ft struct malloc_type_stats *mtsp 49*03bc95b0SMateusz Piotrowski.It Fa args[3] Ta Ft unsigned long size 50*03bc95b0SMateusz Piotrowski.It Fa args[4] Ta Always 0 51*03bc95b0SMateusz Piotrowski.El 52*03bc95b0SMateusz Piotrowski.Pp 53*03bc95b0SMateusz PiotrowskiThe first three arguments for each probe 54*03bc95b0SMateusz Piotrowski.Po i.e., 55*03bc95b0SMateusz Piotrowski.Fa mtp , mtip , 56*03bc95b0SMateusz Piotrowskiand 57*03bc95b0SMateusz Piotrowski.Fa mtsp Pc 58*03bc95b0SMateusz Piotrowskiprovide references to the 59*03bc95b0SMateusz Piotrowski.Xr malloc 9 60*03bc95b0SMateusz Piotrowskitype internals; 61*03bc95b0SMateusz Piotrowski.Fa size 62*03bc95b0SMateusz Piotrowskiis the size of the allocation; 63*03bc95b0SMateusz Piotrowski.Fa zindx 64*03bc95b0SMateusz Piotrowskiis the index into the 65*03bc95b0SMateusz Piotrowski.Va kmemzones[] 66*03bc95b0SMateusz Piotrowskiarray used for the allocation. 67*03bc95b0SMateusz PiotrowskiIn practice, 68*03bc95b0SMateusz Piotrowski.Fa size 69*03bc95b0SMateusz Piotrowskiis the most useful parameter to trace. 70*03bc95b0SMateusz Piotrowski.Sh IMPLEMENTATION NOTES 71*03bc95b0SMateusz PiotrowskiThe 72*03bc95b0SMateusz Piotrowski.Ar function 73*03bc95b0SMateusz Piotrowskipart of the probe description in the 74*03bc95b0SMateusz Piotrowski.Nm dtmalloc 75*03bc95b0SMateusz Piotrowskiprovider is the 76*03bc95b0SMateusz Piotrowski.Xr malloc 9 77*03bc95b0SMateusz Piotrowskitype short description with all whitespace characters replaced 78*03bc95b0SMateusz Piotrowskiwith underscores. 79*03bc95b0SMateusz PiotrowskiFor example, a malloc type defined by 80*03bc95b0SMateusz Piotrowski.Bd -literal -offset indent 81*03bc95b0SMateusz PiotrowskiMALLOC_DEFINE(M_FOO_BAR, "foo bar", "FooBar subsystem"); 82*03bc95b0SMateusz Piotrowski.Ed 83*03bc95b0SMateusz Piotrowski.Pp 84*03bc95b0SMateusz Piotrowskiwill have probes called 85*03bc95b0SMateusz Piotrowski.Bd -literal -offset indent 86*03bc95b0SMateusz Piotrowskidtmalloc::foo_bar: 87*03bc95b0SMateusz Piotrowski.Ed 88*03bc95b0SMateusz Piotrowski.Sh FILES 89*03bc95b0SMateusz Piotrowski.Bl -tag -width "<sys/malloc.h>" 90*03bc95b0SMateusz Piotrowski.It In sys/malloc.h 91*03bc95b0SMateusz PiotrowskiThe header where 92*03bc95b0SMateusz Piotrowski.Vt struct malloc_type 93*03bc95b0SMateusz Piotrowskiis defined. 94*03bc95b0SMateusz Piotrowski.El 95*03bc95b0SMateusz Piotrowski.Sh EXAMPLES 96*03bc95b0SMateusz Piotrowski.Ss Example 1 : Counting Successful Memory Allocations by Type 97*03bc95b0SMateusz Piotrowski.Bd -literal -offset 2n 98*03bc95b0SMateusz Piotrowski# dtrace -n 'dtmalloc:::malloc {@[stringof args[0]->ks_shortdesc] = count()}' 99*03bc95b0SMateusz Piotrowskidtrace: description 'dtmalloc:::malloc ' matched 480 probes 100*03bc95b0SMateusz Piotrowski^C 101*03bc95b0SMateusz Piotrowski 80211node 1 102*03bc95b0SMateusz Piotrowski CAM CCB 1 103*03bc95b0SMateusz Piotrowski CAM periph 1 104*03bc95b0SMateusz Piotrowski ioctlops 1 105*03bc95b0SMateusz Piotrowski netlink 1 106*03bc95b0SMateusz Piotrowski soname 4 107*03bc95b0SMateusz Piotrowski sysctltmp 4 108*03bc95b0SMateusz Piotrowski solaris 5 109*03bc95b0SMateusz Piotrowski acpica 16 110*03bc95b0SMateusz Piotrowski temp 36 111*03bc95b0SMateusz Piotrowski lkpikmalloc 44 112*03bc95b0SMateusz Piotrowski iov 100 113*03bc95b0SMateusz Piotrowski selfd 648 114*03bc95b0SMateusz Piotrowski.Ed 115*03bc95b0SMateusz Piotrowski.Sh SEE ALSO 116*03bc95b0SMateusz Piotrowski.Xr dtrace 1 , 117*03bc95b0SMateusz Piotrowski.Xr tracing 7 , 118*03bc95b0SMateusz Piotrowski.Xr malloc 9 119*03bc95b0SMateusz Piotrowski.Sh AUTHORS 120*03bc95b0SMateusz Piotrowski.An -nosplit 121*03bc95b0SMateusz Piotrowski.Nm 122*03bc95b0SMateusz Piotrowskiwas written by 123*03bc95b0SMateusz Piotrowski.An John Birrell Aq Mt jb@FreeBSD.org . 124*03bc95b0SMateusz Piotrowski.Pp 125*03bc95b0SMateusz PiotrowskiThis manual page was written by 126*03bc95b0SMateusz Piotrowski.An Mateusz Piotrowski Aq Mt 0mp@FreeBSD.org . 127*03bc95b0SMateusz Piotrowski.Sh CAVEATS 128*03bc95b0SMateusz PiotrowskiThe 129*03bc95b0SMateusz Piotrowski.Nm dtmalloc 130*03bc95b0SMateusz Piotrowskiprovider does not trace 131*03bc95b0SMateusz Piotrowski.Xr uma 9 132*03bc95b0SMateusz Piotrowskiallocations. 133