Distributed Latency Profiling through Critical Path Tracing