The following is an example of anonprofile.d. As processes use anonymous memory their current totals are printed out (bytes). # ./anonprofile.d UID PID TOTAL ARGS 0 14380 4169728 /usr/sbin/dtrace -s ./anonprofile.d 100 14382 4096 bash 100 14382 8192 ls -l 100 14382 12288 ls -l 100 14382 20480 ls -l 100 14382 24576 ls -l 100 14382 28672 ls -l 100 14382 57344 ls -l 100 14382 65536 ls -l 100 14382 73728 ls -l 100 14382 106496 ls -l 100 14382 110592 ls -l 100 14382 118784 ls -l 100 14382 126976 ls -l 100 14382 131072 ls -l 100 14382 135168 ls -l 100 14382 143360 ls -l anonprofile.d was written to analyse memory usage issues during software development, in particular peak memory usage and whether memory cleanup is performed. The following example analyses ps, # ./anonprofile.d UID PID TOTAL ARGS 0 14380 4169728 /usr/sbin/dtrace -s ./anonprofile.d 100 14433 4096 bash 100 14433 8192 ps -ef 100 14433 16384 ps -ef 100 14433 20480 ps -ef 100 14433 24576 ps -ef 100 14433 53248 ps -ef 100 14433 61440 ps -ef 100 14433 69632 ps -ef 100 14433 61440 ps -ef 100 14433 57344 ps -ef 100 14433 49152 ps -ef 100 14433 20480 ps -ef 100 14433 12288 ps -ef 100 14433 4096 ps -ef 100 14433 0 ps -ef 100 14433 4096 ps -ef 100 14433 8192 ps -ef 100 14433 16384 ps -ef 100 14433 20480 ps -ef 100 14433 24576 ps -ef 100 14433 53248 ps -ef 100 14433 61440 ps -ef 100 14433 69632 ps -ef 100 14433 77824 ps -ef 100 14433 81920 ps -ef 100 14433 90112 ps -ef 100 14433 98304 ps -ef This is an example of a different format of output. This includes the time written in microseconds, and is selected by editing the "FORMAT" variable in the script, # ./anonprofile.d TIME UID PID TOTAL ARGS 1397711322326 0 14460 4169728 /usr/sbin/dtrace -s ./anonprofile.d 1397677484336 100 14459 4096 bash 1397677484464 100 14459 8192 uname -a 1397677484684 100 14459 16384 uname -a 1397677484776 100 14459 20480 uname -a 1397677485047 100 14459 24576 uname -a 1397677485291 100 14459 53248 uname -a 1397677485380 100 14459 61440 uname -a 1397677486845 100 14459 69632 uname -a 1397677487089 100 14459 73728 uname -a The following example analyses some software I am writing. I'm trying to reduce the memory usage. I began by adding breakpoints where I could stop the program and then examine the current usage, but I couldn't be sure that I had the breakpoints at the peak of memory usage. DTrace solved this nicely by printing out the entire profile for anonymous memory, each line triggered by a reservation or unreservation of anonymous memory. # ./anonprofile.d UID PID TOTAL ARGS 0 14380 4169728 /usr/sbin/dtrace -s ./anonprofile.d 100 14494 4096 bash 100 14494 8192 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 16384 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 20480 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 24576 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 81920 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 86016 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 90112 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 110592 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 143360 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 163840 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 192512 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 200704 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 204800 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 200704 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 204800 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 212992 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 221184 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 229376 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 237568 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 278528 /usr/bin/perl ../../chaosreader ../../snoop01 [...] 100 14494 3518464 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3526656 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3543040 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3559424 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3567616 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3584000 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3592192 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3600384 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3624960 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3641344 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3649536 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3674112 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3690496 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3706880 /usr/bin/perl ../../chaosreader ../../snoop01 100 14494 3731456 /usr/bin/perl ../../chaosreader ../../snoop01 The last line, 3731456, would be the peak usage in bytes.