Skip to content

Memprof record

MaoJiaping edited this page Jul 22, 2026 · 4 revisions

If we have a module like:

 hot_entry
           \
             ---> foo --> baz --> bar --> malloc
           /
 cold_entry

For the regular MemProf pipeline, we will get the following result:

hot_entry --> foo --> baz --> bar --> malloc [memprof=notcold]
cold_entry --> foo.memprof.1 --> baz.memprof.1 --> bar.memprof.1 --> malloc [memprof=cold]

With MTPC, MemProf behaves as follows:

After splitting the module:

P0: hot_entry --> foo (external) --> baz (external) --> bar (external)
P1: cold_entry --> foo (available_externally) --> baz (available_externally) --> bar (available_externally)

After MemProf:

P0: hot_entry --> foo (external) --> baz (external) --> bar (external)

It also contains foo.memprof.1 (external), baz.memprof.1 (external), and bar.memprof.1 (external).


P1: cold_entry --> foo.memprof.1 (available_externally) --> baz.memprof.1 (available_externally) --> bar.memprof.1 (available_externally)

It also contains foo (available_externally), baz (available_externally), and bar (available_externally).

After eliminating available_externally definitions, the remaining definitions in each partition are:

P0: hot_entry, foo, baz, bar, foo.memprof.1, baz.memprof.1, bar.memprof.1

P1: cold_entry

Clone this wiki locally