TAU provides a range of measurement options that extend from the default option of flat profiles at one end to event tracing at the other. Between these two extremes, the user can choose phase-based profiling, memory profiling, memory headroom profiling, callpath profiling, calldepth profiling, and use dynamic timers, phases and context events to extend the profiling information. Phase based profiles allow the user to choose a set of representative phases in an application. Timers and phases that are invoked directly or indirectly by this phase are recorded . Callpath profiles highlight the parent-child relationship between events and allow the user to set a runtime parameter (TAU_CALLPATH_DEPTH) to truncate its depth. The profiles show the timings along a branch of the program callgraph based on the leaf node. Call depth profiling allows the user to disable the instrumentation in timers that are a certain distance away from the root node. This is specified using an environment variable (TAU_DEPTH_LIMIT) and it works with all flat profiles, callpath profiles and traces. When callpath and depth profiling are enabled simultaneously and set to the same depth (k), we can see the contribution of all edges of the callgraph that are k deep from the root (instead of the leaf). Both Kojak's CUBE  and TAU's ParaProf  profile browsers support expansion and contraction of calltrees.