1 / 38

“Paranormal Tracktivity ”

“Paranormal Tracktivity ”. Transparent instrumentation and software telemetry using GhostWriter. Norbert Sram. Who am I?. Norbert Sram Software engineer at AdNovum Member of application engineering. The importance of tracing!. Why tracing?.

Download Presentation

“Paranormal Tracktivity ”

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. “Paranormal Tracktivity” Transparent instrumentation and software telemetry using GhostWriter Norbert Sram

  2. Who am I? • Norbert Sram • Software engineer at AdNovum • Member of application engineering

  3. The importance of tracing!

  4. Why tracing?

  5. Why tracing?Because debuggers are not your best friend! Period.

  6. “... for most of the real problems (...) a debugger doesn't much help. And the real problems are what I worry about. The rest is just details.“ • -- Linus Torvalds • "Debuggers are evil"

  7. "The kinds of bugs I have to troubleshoot are easily isolated by my unit tests, and can be quickly found through inspection and a few judiciously placed print statements” • -- Robert C. Martin ("Uncle Bob") "Debuggers are a wasteful Timesink"

  8. Why tracing?Because debuggers are not your best only friend!

  9. Why not just use ...? • Categorization factors • Low or high level • Manual or automated • Runtime or compile time • Online service or standalone solution • Open source or proprietary • Is there a gap?

  10. Popular solutions • High level • Automated and Manual • Runtime • Online • Closed • Low level • Automated • Online • Runtime • Closed ? • Low level • Automated and Manual • Compile time • Online and Offline • Open and Closed

  11. Popular solutions • High level • Automated and Manual • Runtime • Online • Closed • Low level • Automated • Online • Runtime • Closed • Low level • Automated and Manual • Compile time • Online and Offline • Open and Closed

  12. How did we get here?

  13. Partial tracing is not tracing!

  14. Requirements • Same performance profile • No boilerplate • Reuse existing logging API

  15. No source mangling!

  16. JSR-269 + OpenJDK Magic annotation!

  17. We reached our goals! … or did we?

  18. JSR-269 + OpenJDK • JSR-269 used for hooking • Internal OpenJDK API for everything else • Create tracing AST • Mold it into the AST of the compiled application JSR-269 GhostWriter OpenJDK

  19. “Here be dragons” I’m not proud of this!

  20. @AdnTrace- configuration by exception • Getting started with GhostWriter: • The two main factors: • Easier application to existing projects • Partial tracing is no longer an issue out of the box!

  21. GhostWriter vs. Accidental Complexity We’ll never know what we did here…

  22. GhostWriter vs. Accidental Complexity • Experimental feature: state tracing Unless we trace the initializations!

  23. Ok. Nice. But how does tracing help me in a production environment?

  24. GhostWriter in “Production Land” • Pareto principle applied to tracing: • Capture always, serialize and store in case of errors Detect and capture unhandled error Delegate to runtime

  25. GhostWriter Runtime • Job of the runtime is to serialize and store the snapshots provided by the compile time component. • Simple extension point:

  26. GhostWriter in the cloud • Look to the future! Support the handling of extensive amounts of tracing. GW - Runtime GW - Tracing

  27. GhostWriter in the cloud • Look to the future! Support the handling of extensive amounts of tracing. … …

  28. Impact on non-functional requirements • How does it affect my application? What if I pull the plug? • Determinism, resilience ... am I asking for too much?

  29. Minimizing impact • Dedicated thread, fixed memory consumption, low latency • Isolated, compartmentalized runtimes

  30. “Use the source, Luke!”ghostwriter.io

  31. Are we there yet?Stable release planned for the end of this year.

  32. Demo:Bootstrapping GhostWriter

  33. Contributors:GáborGinterGyörgy KovácsNorbert SramPál Könyves

  34. Thank you for your attention!

More Related