All, I'm in the process of integrating a custom WPA/ETW "Event Tracing for Windows" provider into OSVR (as an optional thing until we measure performance impacts, etc.) with a platform-independent wrapper over it so we can hook into other platforms' tracing stuff over time. It seems to be very low overhead, but I have it set up so it will compile out if we need zero overhead. (If you haven't used ETW, it's pretty slick even without custom providers - see https://github.com/google/UIforETW )
We can report events with a lot finer granularity than even a really fast sampling profiler, so it's a very useful tool for development. My question is this - what events do we want to report to the tracing provider? The way we have it set up right now, we can basically report things that happen over time (duration with begin/end), as well as just "marks". The goal of course is to be able to provide performance data to a: verify there are no unexpected costs we're incurring, and b: track down bad behavior when we find it. Here were my thoughts: Server side: * Duration: server update iteration (already done) * Mark: Path tree broadcast * Mark: Hardware detect triggered (or maybe this is a duration? or a separate duration for each plugin that registers a hardware detect callback?) * Possibly a duration: device update callbacks, particularly sync devices since those impact total latency Client side: * Duration: lifetime of a client context (to verify you aren't creating extra that you don't need) * Duration: Client context update * Duration: lifetime of an interface object (to ensure you're holding on to them instead of using them as throw-away) * Mark: resolution of an alias - tied to lifetime of interface object though, so maybe not as useful * Mark: new data on an interface (with the interface path as data to be able to filter, I think - still learning the WPA gui) * Mark: access of state of an interface? (maybe? to see relative frequency of getting state vs. updates?) And, ones last question, which I bet I know the answer to already: I'm assuming that a git submodule for the parts of UIforETW that we're re-using (under Apache 2.0 license) is preferred to an external dependency, right? Any thoughts on source submodule vs. vendored binaries? I don't really like having binaries in a git repo, but... Ryan -- Ryan A. Pavlik, Ph.D. Senior Software Engineer Sensics, Inc. www.sensics.com <http://www.sensics.com>
-- OSVR-devel mailing list osvr-de...@getosvr.org Options and Unsubscribe: http://lists.getosvr.org/options.cgi/osvr-devel-getosvr.org/archive%40mail-archive.com Archives: http://dir.gmane.org/gmane.comp.vr.osvr.devel List homepage: http://lists.getosvr.org/listinfo.cgi/osvr-devel-getosvr.org