xref: /netbsd-src/external/cddl/dtracetoolkit/dist/Docs/Examples/pl_malloc_example.txt (revision c29d51755812ace2e87aeefdb06cb2b4dac7087a)
1The following are examples of pl_malloc.d.
2
3This is an expiremental script that attepmts to identify who is calling
4malloc() from Perl, and to print byte distribution plots.
5
6Here it traces the example program, Code/Perl/func_malloc.pl.
7
8# pl_malloc.d -c ./func_malloc.pl
9Function A
10Function B
11Function C
12Tracing... Hit Ctrl-C to end.
13
14Perl malloc byte distributions by engine caller,
15
16   perl`perl_alloc, total bytes = 1
17           value  ------------- Distribution ------------- count
18               0 |                                         0
19               1 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
20               2 |                                         0
21
22   libc.so.1`_findbuf, total bytes = 520
23           value  ------------- Distribution ------------- count
24             256 |                                         0
25             512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
26            1024 |                                         0
27
28   perl`Perl_safesysmalloc, total bytes = 72106
29           value  ------------- Distribution ------------- count
30               1 |                                         0
31               2 |@@                                       26
32               4 |@@@@@                                    72
33               8 |@@@@@@                                   101
34              16 |@@@@@@@@@@@@@@                           216
35              32 |@@@@@@@@@@@                              178
36              64 |@                                        21
37             128 |                                         6
38             256 |                                         2
39             512 |                                         4
40            1024 |                                         1
41            2048 |@                                        11
42            4096 |                                         1
43            8192 |                                         0
44
45
46Perl malloc byte distributions by Perl file and subroutine,
47
48   func_malloc.pl, func_a, bytes total = 42504
49           value  ------------- Distribution ------------- count
50           16384 |                                         0
51           32768 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
52           65536 |                                         0
53
54   func_malloc.pl, func_b, bytes total = 100008
55           value  ------------- Distribution ------------- count
56               2 |                                         0
57               4 |@@@@@@@@@@@@@@@@@@@@                     1
58               8 |                                         0
59              16 |                                         0
60              32 |                                         0
61              64 |                                         0
62             128 |                                         0
63             256 |                                         0
64             512 |                                         0
65            1024 |                                         0
66            2048 |                                         0
67            4096 |                                         0
68            8192 |                                         0
69           16384 |                                         0
70           32768 |                                         0
71           65536 |@@@@@@@@@@@@@@@@@@@@                     1
72          131072 |                                         0
73
74The func_malloc.pl program allocated around 100 Kbytes by creating a
75variable ($b) and populating it with 100,000 "b" characters. This has been
76identified in the last distribution plot printed, with one malloc event
77of between 64 Kbytes and 128 Kbytes in size. There was also a malloc event
78of between 4 and 7 bytes in size.
79
80