xref: /freebsd/share/man/man4/dtrace_dtmalloc.4 (revision 03bc95b060a91ed9d410270d00d1dd4f8edcdcc7)
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