mirror of
https://github.com/Stichting-MINIX-Research-Foundation/netbsd.git
synced 2025-09-12 08:36:05 -04:00
509 lines
29 KiB
Plaintext
509 lines
29 KiB
Plaintext
The following are examples of py_malloc.d
|
|
|
|
This is an experimental script to identify who is calling malloc() for memory
|
|
allocation, and to print distribution plots of the requested bytes. Here you
|
|
can see it running on Code/Python/func_abc.py
|
|
|
|
# py_malloc.d -c ./func_abc.py
|
|
Tracing... Hit Ctrl-C to end.
|
|
Function A
|
|
Function B
|
|
Function C
|
|
|
|
Python malloc byte distributions by engine caller,
|
|
|
|
libpython2.4.so.1.0`_PyUnicode_New, total bytes = 2
|
|
value ------------- Distribution ------------- count
|
|
1 | 0
|
|
2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
4 | 0
|
|
|
|
libpython2.4.so.1.0`find_key, total bytes = 16
|
|
value ------------- Distribution ------------- count
|
|
8 | 0
|
|
16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
32 | 0
|
|
|
|
libpython2.4.so.1.0`PyInterpreterState_New, total bytes = 36
|
|
value ------------- Distribution ------------- count
|
|
16 | 0
|
|
32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
64 | 0
|
|
|
|
libpython2.4.so.1.0`_PyImport_Init, total bytes = 60
|
|
value ------------- Distribution ------------- count
|
|
16 | 0
|
|
32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
64 | 0
|
|
|
|
libpython2.4.so.1.0`PyThreadState_New, total bytes = 84
|
|
value ------------- Distribution ------------- count
|
|
32 | 0
|
|
64 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
128 | 0
|
|
|
|
libpython2.4.so.1.0`pmerge, total bytes = 132
|
|
value ------------- Distribution ------------- count
|
|
2 | 0
|
|
4 |@@ 1
|
|
8 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 16
|
|
16 | 0
|
|
|
|
libpython2.4.so.1.0`PyThread_allocate_lock, total bytes = 144
|
|
value ------------- Distribution ------------- count
|
|
16 | 0
|
|
32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 3
|
|
64 | 0
|
|
|
|
libpython2.4.so.1.0`convertsimple, total bytes = 210
|
|
value ------------- Distribution ------------- count
|
|
16 | 0
|
|
32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5
|
|
64 | 0
|
|
|
|
libc.so.1`strdup, total bytes = 451
|
|
value ------------- Distribution ------------- count
|
|
1 | 0
|
|
2 |@@@ 1
|
|
4 |@@@ 1
|
|
8 | 0
|
|
16 |@@@@@@@@@@@@@@@@@@@@ 8
|
|
32 |@@@@@@@@@@@@@@@ 6
|
|
64 | 0
|
|
|
|
libpython2.4.so.1.0`PyList_New, total bytes = 528
|
|
value ------------- Distribution ------------- count
|
|
2 | 0
|
|
4 |@@@@@@@@@@@@@@@@@@ 22
|
|
8 |@@@@@@@@@@@@@@@@@ 21
|
|
16 |@@@@@ 6
|
|
32 | 0
|
|
64 | 0
|
|
128 |@ 1
|
|
256 | 0
|
|
|
|
libpython2.4.so.1.0`PyTokenizer_FromFile, total bytes = 1024
|
|
value ------------- Distribution ------------- count
|
|
512 | 0
|
|
1024 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
2048 | 0
|
|
|
|
libpython2.4.so.1.0`_PyExc_Init, total bytes = 1058
|
|
value ------------- Distribution ------------- count
|
|
8 | 0
|
|
16 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 40
|
|
32 |@@ 2
|
|
64 | 0
|
|
|
|
libpython2.4.so.1.0`tok_new, total bytes = 1832
|
|
value ------------- Distribution ------------- count
|
|
256 | 0
|
|
512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2
|
|
1024 | 0
|
|
|
|
libpython2.4.so.1.0`fill_free_list, total bytes = 1976
|
|
value ------------- Distribution ------------- count
|
|
256 | 0
|
|
512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2
|
|
1024 | 0
|
|
|
|
libpython2.4.so.1.0`PyParser_New, total bytes = 12024
|
|
value ------------- Distribution ------------- count
|
|
2048 | 0
|
|
4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2
|
|
8192 | 0
|
|
|
|
libpython2.4.so.1.0`PyObject_Malloc, total bytes = 35152
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@ 20
|
|
512 |@@@@@@@ 7
|
|
1024 |@@@@@@@@@@ 11
|
|
2048 |@@@@ 4
|
|
4096 | 0
|
|
|
|
libpython2.4.so.1.0`PyMem_Malloc, total bytes = 50683
|
|
value ------------- Distribution ------------- count
|
|
4 | 0
|
|
8 |@@@ 2
|
|
16 |@@@@@@@ 4
|
|
32 |@@ 1
|
|
64 |@@@@@@@@@@@@@ 8
|
|
128 |@@@@@ 3
|
|
256 | 0
|
|
512 | 0
|
|
1024 | 0
|
|
2048 | 0
|
|
4096 | 0
|
|
8192 |@@@@@@@@@@ 6
|
|
16384 | 0
|
|
|
|
libc.so.1`_findbuf, total bytes = 51800
|
|
value ------------- Distribution ------------- count
|
|
256 | 0
|
|
512 |@@@@@@@@@@@@@@@ 4
|
|
1024 |@@@@ 1
|
|
2048 | 0
|
|
4096 |@@@@@@@ 2
|
|
8192 |@@@@@@@@@@@@@@@ 4
|
|
16384 | 0
|
|
|
|
libpython2.4.so.1.0`dictresize, total bytes = 178752
|
|
value ------------- Distribution ------------- count
|
|
64 | 0
|
|
128 |@ 1
|
|
256 |@@@@@@@@@@@@@@@@@@@@@ 29
|
|
512 | 0
|
|
1024 |@@@@@@@@@@@@@@ 19
|
|
2048 |@ 1
|
|
4096 |@ 2
|
|
8192 | 0
|
|
16384 |@ 1
|
|
32768 | 0
|
|
65536 |@ 1
|
|
131072 | 0
|
|
|
|
libpython2.4.so.1.0`new_arena, total bytes = 262208
|
|
value ------------- Distribution ------------- count
|
|
32 | 0
|
|
64 |@@@@@@@@@@@@@@@@@@@@ 1
|
|
128 | 0
|
|
256 | 0
|
|
512 | 0
|
|
1024 | 0
|
|
2048 | 0
|
|
4096 | 0
|
|
8192 | 0
|
|
16384 | 0
|
|
32768 | 0
|
|
65536 | 0
|
|
131072 | 0
|
|
262144 |@@@@@@@@@@@@@@@@@@@@ 1
|
|
524288 | 0
|
|
|
|
|
|
Python malloc byte distributions by Python file and function,
|
|
|
|
site.py, addsitepackages, bytes total = 4
|
|
value ------------- Distribution ------------- count
|
|
2 | 0
|
|
4 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
8 | 0
|
|
|
|
site.py, abs__file__, bytes total = 60
|
|
value ------------- Distribution ------------- count
|
|
16 | 0
|
|
32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
64 | 0
|
|
|
|
posixpath.py, exists, bytes total = 83
|
|
value ------------- Distribution ------------- count
|
|
16 | 0
|
|
32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2
|
|
64 | 0
|
|
|
|
stat.py, S_ISDIR, bytes total = 364
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
|
|
site.py, _init_pathinfo, bytes total = 380
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
|
|
UserDict.py, DictMixin, bytes total = 384
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
|
|
codecs.py, StreamReader, bytes total = 384
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
|
|
codecs.py, StreamReaderWriter, bytes total = 384
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
|
|
codecs.py, StreamRecoder, bytes total = 384
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
|
|
codecs.py, StreamWriter, bytes total = 384
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
|
|
os.py, _Environ, bytes total = 384
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
|
|
site.py, _Printer, bytes total = 384
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
|
|
site.py, addsitedir, bytes total = 388
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
|
|
linecache.py, ?, bytes total = 396
|
|
value ------------- Distribution ------------- count
|
|
4 | 0
|
|
8 |@@@@@@@@@@@@@@@@@@@@ 1
|
|
16 | 0
|
|
32 | 0
|
|
64 | 0
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
|
|
posixpath.py, isdir, bytes total = 608
|
|
value ------------- Distribution ------------- count
|
|
1 | 0
|
|
2 |@@@@@@@ 2
|
|
4 | 0
|
|
8 | 0
|
|
16 |@@@@@@@@@@@@@@@@@@@@@@@ 7
|
|
32 |@@@@@@@ 2
|
|
64 | 0
|
|
128 | 0
|
|
256 |@@@ 1
|
|
512 | 0
|
|
|
|
os.py, _get_exports_list, bytes total = 612
|
|
value ------------- Distribution ------------- count
|
|
256 | 0
|
|
512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
1024 | 0
|
|
|
|
posixpath.py, abspath, bytes total = 728
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2
|
|
512 | 0
|
|
|
|
site.py, execsitecustomize, bytes total = 790
|
|
value ------------- Distribution ------------- count
|
|
16 | 0
|
|
32 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 9
|
|
64 | 0
|
|
128 | 0
|
|
256 |@@@@ 1
|
|
512 | 0
|
|
|
|
UserDict.py, UserDict, bytes total = 1920
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
1024 |@@@@@@@@@@@@@@@@@@@@ 1
|
|
2048 | 0
|
|
|
|
stat.py, ?, bytes total = 1920
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
1024 |@@@@@@@@@@@@@@@@@@@@ 1
|
|
2048 | 0
|
|
|
|
types.py, ?, bytes total = 2680
|
|
value ------------- Distribution ------------- count
|
|
2 | 0
|
|
4 |@@@@@@ 1
|
|
8 |@@@@@@@@@@@ 2
|
|
16 | 0
|
|
32 | 0
|
|
64 | 0
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@ 3
|
|
512 | 0
|
|
1024 |@@@@@@ 1
|
|
2048 | 0
|
|
|
|
posixpath.py, ?, bytes total = 3306
|
|
value ------------- Distribution ------------- count
|
|
8 | 0
|
|
16 |@@@@@@@@@@@@@@@@ 2
|
|
32 | 0
|
|
64 | 0
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@ 2
|
|
512 | 0
|
|
1024 | 0
|
|
2048 |@@@@@@@@ 1
|
|
4096 | 0
|
|
|
|
copy_reg.py, ?, bytes total = 3547
|
|
value ------------- Distribution ------------- count
|
|
8 | 0
|
|
16 |@@@@@@@@@@@@@@@@ 2
|
|
32 | 0
|
|
64 | 0
|
|
128 | 0
|
|
256 |@@@@@@@@ 1
|
|
512 |@@@@@@@@ 1
|
|
1024 | 0
|
|
2048 |@@@@@@@@ 1
|
|
4096 | 0
|
|
|
|
warnings.py, ?, bytes total = 3924
|
|
value ------------- Distribution ------------- count
|
|
8 | 0
|
|
16 |@@@@@@@@ 1
|
|
32 |@@@@@@@@ 1
|
|
64 | 0
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@ 2
|
|
512 | 0
|
|
1024 | 0
|
|
2048 |@@@@@@@@ 1
|
|
4096 | 0
|
|
|
|
func_abc.py, func_a, bytes total = 5100
|
|
value ------------- Distribution ------------- count
|
|
256 | 0
|
|
512 |@@@@@@@@@@@@@@@@@@@@ 1
|
|
1024 | 0
|
|
2048 | 0
|
|
4096 |@@@@@@@@@@@@@@@@@@@@ 1
|
|
8192 | 0
|
|
|
|
codecs.py, ?, bytes total = 5612
|
|
value ------------- Distribution ------------- count
|
|
32 | 0
|
|
64 |@@@@@@ 1
|
|
128 |@@@@@@ 1
|
|
256 |@@@@@@@@@@@ 2
|
|
512 | 0
|
|
1024 |@@@@@@@@@@@@@@@@@ 3
|
|
2048 | 0
|
|
|
|
aliases.py, ?, bytes total = 8064
|
|
value ------------- Distribution ------------- count
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@ 1
|
|
512 | 0
|
|
1024 |@@@@@@@@@@@@@ 1
|
|
2048 | 0
|
|
4096 |@@@@@@@@@@@@@ 1
|
|
8192 | 0
|
|
|
|
func_abc.py, ?, bytes total = 16105
|
|
value ------------- Distribution ------------- count
|
|
2 | 0
|
|
4 |@@ 1
|
|
8 |@@@@@ 2
|
|
16 |@@@@@@@@@ 4
|
|
32 |@@@@@ 2
|
|
64 | 0
|
|
128 |@@ 1
|
|
256 |@@@@@@@ 3
|
|
512 |@@ 1
|
|
1024 |@@@@@ 2
|
|
2048 | 0
|
|
4096 | 0
|
|
8192 |@@ 1
|
|
16384 | 0
|
|
|
|
os.py, ?, bytes total = 58957
|
|
value ------------- Distribution ------------- count
|
|
2 | 0
|
|
4 |@@ 3
|
|
8 |@@@@@ 6
|
|
16 |@ 1
|
|
32 |@@ 2
|
|
64 | 0
|
|
128 |@ 1
|
|
256 |@@@@@@@@@@@@@@@@@@ 23
|
|
512 |@@ 3
|
|
1024 |@@@@@ 7
|
|
2048 | 0
|
|
4096 |@@@ 4
|
|
8192 |@ 1
|
|
16384 | 0
|
|
|
|
site.py, ?, bytes total = 62589
|
|
value ------------- Distribution ------------- count
|
|
8 | 0
|
|
16 |@@@ 2
|
|
32 | 0
|
|
64 | 0
|
|
128 | 0
|
|
256 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 20
|
|
512 |@ 1
|
|
1024 |@@@ 2
|
|
2048 |@ 1
|
|
4096 | 0
|
|
8192 | 0
|
|
16384 |@@@ 2
|
|
32768 | 0
|
|
|
|
__init__.py, ?, bytes total = 62593
|
|
value ------------- Distribution ------------- count
|
|
0 | 0
|
|
1 |@@ 1
|
|
2 | 0
|
|
4 | 0
|
|
8 | 0
|
|
16 |@@@ 2
|
|
32 |@@ 1
|
|
64 | 0
|
|
128 | 0
|
|
256 |@@@@@@@@@@@ 7
|
|
512 |@@@@@@@@@@@@@@@@ 10
|
|
1024 |@@@ 2
|
|
2048 | 0
|
|
4096 | 0
|
|
8192 | 0
|
|
16384 |@@@ 2
|
|
32768 | 0
|
|
|
|
posixpath.py, join, bytes total = 262144
|
|
value ------------- Distribution ------------- count
|
|
131072 | 0
|
|
262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1
|
|
524288 | 0
|
|
|
|
os.py, _exists, bytes total = 362768
|
|
value ------------- Distribution ------------- count
|
|
2 | 0
|
|
4 |@ 10
|
|
8 |@ 10
|
|
16 |@@ 20
|
|
32 | 0
|
|
64 | 0
|
|
128 | 0
|
|
256 |@ 7
|
|
512 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 447
|
|
1024 |@@ 20
|
|
2048 | 0
|
|
4096 |@ 10
|
|
8192 | 0
|
|
|
|
|
|
The results are divided into two sections. If a malloc() occurred while in a
|
|
Python function, then that function is identified as responsible; and the
|
|
results will appear in the second section - Python malloc byte distributions
|
|
by Python file and function.
|
|
|
|
Otherwise the caller of malloc() is identified as responsible - which will be
|
|
a function from the Python engine, and these are noted in the first section -
|
|
Python malloc byte distributions by engine caller.
|