Output format¶
HEAPLINE_OUTPUT receives one record per process. This page describes
version 1.
Layout¶
A record is a small CSV file of three lines:
# heapline 1
rank,host,pid,job,elapsed_s,allocs,frees,peak_heap_bytes,peak_heap_time_s,live_heap_at_exit_bytes,vmhwm_bytes,vmrss_at_exit_bytes
3,node-a,51234,1655310,12.480,4153,4123,302268416,4.211,483532,331431936,9175040
The first line names the format and its version. Tools must check it and
refuse versions they do not know: heapline-report does. Adding a column or
changing the meaning of one raises the version.
Columns¶
Column |
Unit |
Meaning |
|---|---|---|
|
MPI rank from |
|
|
Host name; commas, quotes and line breaks are replaced with |
|
|
Process id |
|
|
|
|
|
s |
Time from the loading of the library to the end of the process; written with three decimals and a dot, whatever the locale of the program |
|
Successful allocations; a |
|
|
Released blocks; a |
|
|
bytes |
Highest heap in use, in usable sizes; see the precision below |
|
s |
Time of that peak since the loading of the library, read from a coarse clock (one kernel tick, 1 to 10 ms); written with three decimals and a dot, whatever the locale of the program |
|
bytes |
Heap still in use at exit |
|
bytes |
Peak resident set size of the process ( |
|
bytes |
Resident set size at exit ( |
The peak is exact as long as only one thread of the process has allocated or
released memory. When several threads do, each thread counts in its own
counters and publishes its changes in batches, so that threads do not wait for
each other. The peak may then differ from the true peak by up to
(ceil(log2 N) + 1)/8192 of it, N being the number of threads that have
allocated or released memory: 0.037% with 4 threads, 0.061% with 16, 0.085%
with 64, or 3.5 MiB for a 4 GiB peak with 64 threads. In both cases, as
before, blocks that other threads are allocating or releasing at that instant
may be missing. allocs, frees and live_heap_at_exit_bytes count every
thread exactly, threads still running at exit included, except for operations
in progress at that instant. The peak and its time are stored separately:
under concurrent allocation, the time may belong to a slightly different peak
than the one reported, and with several threads it may be the time of an
earlier moment, before bytes held back by threads were published.
File names¶
In HEAPLINE_OUTPUT, %p is replaced with the process id, %r with the
rank and %h with the host name. Any other % sequence is kept as is. The
directory must exist; when the file cannot be opened, the record goes to
stderr.