xref: /netbsd-src/external/cddl/dtracetoolkit/dist/Docs/Examples/py_malloc_example.txt (revision c29d51755812ace2e87aeefdb06cb2b4dac7087a)
1The following are examples of py_malloc.d
2
3This is an experimental script to identify who is calling malloc() for memory
4allocation, and to print distribution plots of the requested bytes.  Here you
5can see it running on Code/Python/func_abc.py
6
7# py_malloc.d -c ./func_abc.py
8Tracing... Hit Ctrl-C to end.
9Function A
10Function B
11Function C
12
13Python malloc byte distributions by engine caller,
14
15   libpython2.4.so.1.0`_PyUnicode_New, total bytes = 2
16           value  ------------- Distribution ------------- count
17               1 |                                         0
18               2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
19               4 |                                         0
20
21   libpython2.4.so.1.0`find_key, total bytes = 16
22           value  ------------- Distribution ------------- count
23               8 |                                         0
24              16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
25              32 |                                         0
26
27   libpython2.4.so.1.0`PyInterpreterState_New, total bytes = 36
28           value  ------------- Distribution ------------- count
29              16 |                                         0
30              32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
31              64 |                                         0
32
33   libpython2.4.so.1.0`_PyImport_Init, total bytes = 60
34           value  ------------- Distribution ------------- count
35              16 |                                         0
36              32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
37              64 |                                         0
38
39   libpython2.4.so.1.0`PyThreadState_New, total bytes = 84
40           value  ------------- Distribution ------------- count
41              32 |                                         0
42              64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
43             128 |                                         0
44
45   libpython2.4.so.1.0`pmerge, total bytes = 132
46           value  ------------- Distribution ------------- count
47               2 |                                         0
48               4 |@@                                       1
49               8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   16
50              16 |                                         0
51
52   libpython2.4.so.1.0`PyThread_allocate_lock, total bytes = 144
53           value  ------------- Distribution ------------- count
54              16 |                                         0
55              32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3
56              64 |                                         0
57
58   libpython2.4.so.1.0`convertsimple, total bytes = 210
59           value  ------------- Distribution ------------- count
60              16 |                                         0
61              32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5
62              64 |                                         0
63
64   libc.so.1`strdup, total bytes = 451
65           value  ------------- Distribution ------------- count
66               1 |                                         0
67               2 |@@@                                      1
68               4 |@@@                                      1
69               8 |                                         0
70              16 |@@@@@@@@@@@@@@@@@@@@                     8
71              32 |@@@@@@@@@@@@@@@                          6
72              64 |                                         0
73
74   libpython2.4.so.1.0`PyList_New, total bytes = 528
75           value  ------------- Distribution ------------- count
76               2 |                                         0
77               4 |@@@@@@@@@@@@@@@@@@                       22
78               8 |@@@@@@@@@@@@@@@@@                        21
79              16 |@@@@@                                    6
80              32 |                                         0
81              64 |                                         0
82             128 |@                                        1
83             256 |                                         0
84
85   libpython2.4.so.1.0`PyTokenizer_FromFile, total bytes = 1024
86           value  ------------- Distribution ------------- count
87             512 |                                         0
88            1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
89            2048 |                                         0
90
91   libpython2.4.so.1.0`_PyExc_Init, total bytes = 1058
92           value  ------------- Distribution ------------- count
93               8 |                                         0
94              16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   40
95              32 |@@                                       2
96              64 |                                         0
97
98   libpython2.4.so.1.0`tok_new, total bytes = 1832
99           value  ------------- Distribution ------------- count
100             256 |                                         0
101             512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2
102            1024 |                                         0
103
104   libpython2.4.so.1.0`fill_free_list, total bytes = 1976
105           value  ------------- Distribution ------------- count
106             256 |                                         0
107             512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2
108            1024 |                                         0
109
110   libpython2.4.so.1.0`PyParser_New, total bytes = 12024
111           value  ------------- Distribution ------------- count
112            2048 |                                         0
113            4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2
114            8192 |                                         0
115
116   libpython2.4.so.1.0`PyObject_Malloc, total bytes = 35152
117           value  ------------- Distribution ------------- count
118             128 |                                         0
119             256 |@@@@@@@@@@@@@@@@@@@                      20
120             512 |@@@@@@@                                  7
121            1024 |@@@@@@@@@@                               11
122            2048 |@@@@                                     4
123            4096 |                                         0
124
125   libpython2.4.so.1.0`PyMem_Malloc, total bytes = 50683
126           value  ------------- Distribution ------------- count
127               4 |                                         0
128               8 |@@@                                      2
129              16 |@@@@@@@                                  4
130              32 |@@                                       1
131              64 |@@@@@@@@@@@@@                            8
132             128 |@@@@@                                    3
133             256 |                                         0
134             512 |                                         0
135            1024 |                                         0
136            2048 |                                         0
137            4096 |                                         0
138            8192 |@@@@@@@@@@                               6
139           16384 |                                         0
140
141   libc.so.1`_findbuf, total bytes = 51800
142           value  ------------- Distribution ------------- count
143             256 |                                         0
144             512 |@@@@@@@@@@@@@@@                          4
145            1024 |@@@@                                     1
146            2048 |                                         0
147            4096 |@@@@@@@                                  2
148            8192 |@@@@@@@@@@@@@@@                          4
149           16384 |                                         0
150
151   libpython2.4.so.1.0`dictresize, total bytes = 178752
152           value  ------------- Distribution ------------- count
153              64 |                                         0
154             128 |@                                        1
155             256 |@@@@@@@@@@@@@@@@@@@@@                    29
156             512 |                                         0
157            1024 |@@@@@@@@@@@@@@                           19
158            2048 |@                                        1
159            4096 |@                                        2
160            8192 |                                         0
161           16384 |@                                        1
162           32768 |                                         0
163           65536 |@                                        1
164          131072 |                                         0
165
166   libpython2.4.so.1.0`new_arena, total bytes = 262208
167           value  ------------- Distribution ------------- count
168              32 |                                         0
169              64 |@@@@@@@@@@@@@@@@@@@@                     1
170             128 |                                         0
171             256 |                                         0
172             512 |                                         0
173            1024 |                                         0
174            2048 |                                         0
175            4096 |                                         0
176            8192 |                                         0
177           16384 |                                         0
178           32768 |                                         0
179           65536 |                                         0
180          131072 |                                         0
181          262144 |@@@@@@@@@@@@@@@@@@@@                     1
182          524288 |                                         0
183
184
185Python malloc byte distributions by Python file and function,
186
187   site.py, addsitepackages, bytes total = 4
188           value  ------------- Distribution ------------- count
189               2 |                                         0
190               4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
191               8 |                                         0
192
193   site.py, abs__file__, bytes total = 60
194           value  ------------- Distribution ------------- count
195              16 |                                         0
196              32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
197              64 |                                         0
198
199   posixpath.py, exists, bytes total = 83
200           value  ------------- Distribution ------------- count
201              16 |                                         0
202              32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2
203              64 |                                         0
204
205   stat.py, S_ISDIR, bytes total = 364
206           value  ------------- Distribution ------------- count
207             128 |                                         0
208             256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
209             512 |                                         0
210
211   site.py, _init_pathinfo, bytes total = 380
212           value  ------------- Distribution ------------- count
213             128 |                                         0
214             256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
215             512 |                                         0
216
217   UserDict.py, DictMixin, bytes total = 384
218           value  ------------- Distribution ------------- count
219             128 |                                         0
220             256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
221             512 |                                         0
222
223   codecs.py, StreamReader, bytes total = 384
224           value  ------------- Distribution ------------- count
225             128 |                                         0
226             256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
227             512 |                                         0
228
229   codecs.py, StreamReaderWriter, bytes total = 384
230           value  ------------- Distribution ------------- count
231             128 |                                         0
232             256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
233             512 |                                         0
234
235   codecs.py, StreamRecoder, bytes total = 384
236           value  ------------- Distribution ------------- count
237             128 |                                         0
238             256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
239             512 |                                         0
240
241   codecs.py, StreamWriter, bytes total = 384
242           value  ------------- Distribution ------------- count
243             128 |                                         0
244             256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
245             512 |                                         0
246
247   os.py, _Environ, bytes total = 384
248           value  ------------- Distribution ------------- count
249             128 |                                         0
250             256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
251             512 |                                         0
252
253   site.py, _Printer, bytes total = 384
254           value  ------------- Distribution ------------- count
255             128 |                                         0
256             256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
257             512 |                                         0
258
259   site.py, addsitedir, bytes total = 388
260           value  ------------- Distribution ------------- count
261             128 |                                         0
262             256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
263             512 |                                         0
264
265   linecache.py, ?, bytes total = 396
266           value  ------------- Distribution ------------- count
267               4 |                                         0
268               8 |@@@@@@@@@@@@@@@@@@@@                     1
269              16 |                                         0
270              32 |                                         0
271              64 |                                         0
272             128 |                                         0
273             256 |@@@@@@@@@@@@@@@@@@@@                     1
274             512 |                                         0
275
276   posixpath.py, isdir, bytes total = 608
277           value  ------------- Distribution ------------- count
278               1 |                                         0
279               2 |@@@@@@@                                  2
280               4 |                                         0
281               8 |                                         0
282              16 |@@@@@@@@@@@@@@@@@@@@@@@                  7
283              32 |@@@@@@@                                  2
284              64 |                                         0
285             128 |                                         0
286             256 |@@@                                      1
287             512 |                                         0
288
289   os.py, _get_exports_list, bytes total = 612
290           value  ------------- Distribution ------------- count
291             256 |                                         0
292             512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
293            1024 |                                         0
294
295   posixpath.py, abspath, bytes total = 728
296           value  ------------- Distribution ------------- count
297             128 |                                         0
298             256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2
299             512 |                                         0
300
301   site.py, execsitecustomize, bytes total = 790
302           value  ------------- Distribution ------------- count
303              16 |                                         0
304              32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     9
305              64 |                                         0
306             128 |                                         0
307             256 |@@@@                                     1
308             512 |                                         0
309
310   UserDict.py, UserDict, bytes total = 1920
311           value  ------------- Distribution ------------- count
312             128 |                                         0
313             256 |@@@@@@@@@@@@@@@@@@@@                     1
314             512 |                                         0
315            1024 |@@@@@@@@@@@@@@@@@@@@                     1
316            2048 |                                         0
317
318   stat.py, ?, bytes total = 1920
319           value  ------------- Distribution ------------- count
320             128 |                                         0
321             256 |@@@@@@@@@@@@@@@@@@@@                     1
322             512 |                                         0
323            1024 |@@@@@@@@@@@@@@@@@@@@                     1
324            2048 |                                         0
325
326   types.py, ?, bytes total = 2680
327           value  ------------- Distribution ------------- count
328               2 |                                         0
329               4 |@@@@@@                                   1
330               8 |@@@@@@@@@@@                              2
331              16 |                                         0
332              32 |                                         0
333              64 |                                         0
334             128 |                                         0
335             256 |@@@@@@@@@@@@@@@@@                        3
336             512 |                                         0
337            1024 |@@@@@@                                   1
338            2048 |                                         0
339
340   posixpath.py, ?, bytes total = 3306
341           value  ------------- Distribution ------------- count
342               8 |                                         0
343              16 |@@@@@@@@@@@@@@@@                         2
344              32 |                                         0
345              64 |                                         0
346             128 |                                         0
347             256 |@@@@@@@@@@@@@@@@                         2
348             512 |                                         0
349            1024 |                                         0
350            2048 |@@@@@@@@                                 1
351            4096 |                                         0
352
353   copy_reg.py, ?, bytes total = 3547
354           value  ------------- Distribution ------------- count
355               8 |                                         0
356              16 |@@@@@@@@@@@@@@@@                         2
357              32 |                                         0
358              64 |                                         0
359             128 |                                         0
360             256 |@@@@@@@@                                 1
361             512 |@@@@@@@@                                 1
362            1024 |                                         0
363            2048 |@@@@@@@@                                 1
364            4096 |                                         0
365
366   warnings.py, ?, bytes total = 3924
367           value  ------------- Distribution ------------- count
368               8 |                                         0
369              16 |@@@@@@@@                                 1
370              32 |@@@@@@@@                                 1
371              64 |                                         0
372             128 |                                         0
373             256 |@@@@@@@@@@@@@@@@                         2
374             512 |                                         0
375            1024 |                                         0
376            2048 |@@@@@@@@                                 1
377            4096 |                                         0
378
379   func_abc.py, func_a, bytes total = 5100
380           value  ------------- Distribution ------------- count
381             256 |                                         0
382             512 |@@@@@@@@@@@@@@@@@@@@                     1
383            1024 |                                         0
384            2048 |                                         0
385            4096 |@@@@@@@@@@@@@@@@@@@@                     1
386            8192 |                                         0
387
388   codecs.py, ?, bytes total = 5612
389           value  ------------- Distribution ------------- count
390              32 |                                         0
391              64 |@@@@@@                                   1
392             128 |@@@@@@                                   1
393             256 |@@@@@@@@@@@                              2
394             512 |                                         0
395            1024 |@@@@@@@@@@@@@@@@@                        3
396            2048 |                                         0
397
398   aliases.py, ?, bytes total = 8064
399           value  ------------- Distribution ------------- count
400             128 |                                         0
401             256 |@@@@@@@@@@@@@                            1
402             512 |                                         0
403            1024 |@@@@@@@@@@@@@                            1
404            2048 |                                         0
405            4096 |@@@@@@@@@@@@@                            1
406            8192 |                                         0
407
408   func_abc.py, ?, bytes total = 16105
409           value  ------------- Distribution ------------- count
410               2 |                                         0
411               4 |@@                                       1
412               8 |@@@@@                                    2
413              16 |@@@@@@@@@                                4
414              32 |@@@@@                                    2
415              64 |                                         0
416             128 |@@                                       1
417             256 |@@@@@@@                                  3
418             512 |@@                                       1
419            1024 |@@@@@                                    2
420            2048 |                                         0
421            4096 |                                         0
422            8192 |@@                                       1
423           16384 |                                         0
424
425   os.py, ?, bytes total = 58957
426           value  ------------- Distribution ------------- count
427               2 |                                         0
428               4 |@@                                       3
429               8 |@@@@@                                    6
430              16 |@                                        1
431              32 |@@                                       2
432              64 |                                         0
433             128 |@                                        1
434             256 |@@@@@@@@@@@@@@@@@@                       23
435             512 |@@                                       3
436            1024 |@@@@@                                    7
437            2048 |                                         0
438            4096 |@@@                                      4
439            8192 |@                                        1
440           16384 |                                         0
441
442   site.py, ?, bytes total = 62589
443           value  ------------- Distribution ------------- count
444               8 |                                         0
445              16 |@@@                                      2
446              32 |                                         0
447              64 |                                         0
448             128 |                                         0
449             256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@            20
450             512 |@                                        1
451            1024 |@@@                                      2
452            2048 |@                                        1
453            4096 |                                         0
454            8192 |                                         0
455           16384 |@@@                                      2
456           32768 |                                         0
457
458   __init__.py, ?, bytes total = 62593
459           value  ------------- Distribution ------------- count
460               0 |                                         0
461               1 |@@                                       1
462               2 |                                         0
463               4 |                                         0
464               8 |                                         0
465              16 |@@@                                      2
466              32 |@@                                       1
467              64 |                                         0
468             128 |                                         0
469             256 |@@@@@@@@@@@                              7
470             512 |@@@@@@@@@@@@@@@@                         10
471            1024 |@@@                                      2
472            2048 |                                         0
473            4096 |                                         0
474            8192 |                                         0
475           16384 |@@@                                      2
476           32768 |                                         0
477
478   posixpath.py, join, bytes total = 262144
479           value  ------------- Distribution ------------- count
480          131072 |                                         0
481          262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
482          524288 |                                         0
483
484   os.py, _exists, bytes total = 362768
485           value  ------------- Distribution ------------- count
486               2 |                                         0
487               4 |@                                        10
488               8 |@                                        10
489              16 |@@                                       20
490              32 |                                         0
491              64 |                                         0
492             128 |                                         0
493             256 |@                                        7
494             512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@       447
495            1024 |@@                                       20
496            2048 |                                         0
497            4096 |@                                        10
498            8192 |                                         0
499
500
501The results are divided into two sections.  If a malloc() occurred while in a
502Python function, then that function is identified as responsible; and the
503results will appear in the second section - Python malloc byte distributions
504by Python file and function.
505
506Otherwise the caller of malloc() is identified as responsible - which will be
507a function from the Python engine, and these are noted in the first section -
508Python malloc byte distributions by engine caller.
509