Insight
From APIDesign
(→Instrumentation vs. Insight) |
|||
(4 intermediate revisions not shown.) | |||
Line 1: | Line 1: | ||
[[GraalVM]] [[Insight]] has been introduced in version 19.3 of [[GraalVM]]. It is a multipurpose, flexible tool that allows to dynamically apply complex [[insight]]s gathering hooks on already deployed applications running at full speed. Insight further blurs the difference between various DevOps tasks - code once, apply your insights anytime, anywhere! See [https://github.com/oracle/graal/blob/master/tools/docs/Insight.md Insight.md]. | [[GraalVM]] [[Insight]] has been introduced in version 19.3 of [[GraalVM]]. It is a multipurpose, flexible tool that allows to dynamically apply complex [[insight]]s gathering hooks on already deployed applications running at full speed. Insight further blurs the difference between various DevOps tasks - code once, apply your insights anytime, anywhere! See [https://github.com/oracle/graal/blob/master/tools/docs/Insight.md Insight.md]. | ||
- | + | === Always Improving === | |
- | [[Insight]] | + | [[Insight]] builds on the [[polyglot]] nature of [[GraalVM]] and its instrumentation capabilities. One can write [[Insight]]s in any language - e.g. [[JavaScript]], [[Ruby]], etc. and apply them to any other language including also [[C]], [[C++]], [[Fortran]], etc. The capabilities of [[Insight]] are improved with every [[GraalVM]] release. Version 20.0 for example improved embedding of [[Insight]] into custom applications. Version 20.1 added access to local variables of [[C]] and other [[Sulong]] based programs. Version 20.2 allows to modify local variables and write [[insight]] scripts in [[Python]]<!-- and also Java -->. |
- | Instrumentation has always been part of [[Truffle]] system. However, prior to invention of [[Insight]] it was necessary to write your instruments in [[Java]]. Generating a [[Truffle]]-based language implementation compiled by [[native image]] may take a while. Recompiling everytime you want to change your instrument, slows you down significantly. That's not a problem for [[GraalVM]] [[Insight]] - all the hooks are written in dynamic | + | === OpenTracing with Jaeger === |
+ | |||
+ | [[Insight]] is obviously great fit for tracing. The close co-operation with Pavol Loffay from Jaeger - the industry leading implementation of OpenTelemetry solution - has resulted in a medium post about [https://medium.com/jaegertracing/t-trace-agent-like-instrumentation-for-graalvm-d8b79b755e71 agent-like instrumentation for GraalVM]. | ||
+ | |||
+ | === Instrumentation vs. [[Insight]] === | ||
+ | |||
+ | Instrumentation has always been part of [[Truffle]] system. However, prior to invention of [[Insight]] it was necessary to write your instruments in [[Java]]. Generating a [[Truffle]]-based language implementation compiled by [[native image]] may take a while. Recompiling everytime you want to change your instrument, slows you down significantly. That's not a problem for [[GraalVM]] [[Insight]] - all the hooks are written in dynamic languages and compiled on the fly into the appropriate user code. There is no limit on what these hooks can do - [[Insight]] are fully [[Turing complete]] code snippets capable to do everything the surrounding programming language can. | ||
+ | |||
+ | === Post Mortem Debugging === | ||
A promising direction of research is usage of [[Insight]] as a harness for post-mortem debugging. Apply watchpoints dynamically, capture the state of execution whenever a program goes though them and replay the recorded stream in advanced tools like [[Chrome]] dev tools or [[NetBeans]]. | A promising direction of research is usage of [[Insight]] as a harness for post-mortem debugging. Apply watchpoints dynamically, capture the state of execution whenever a program goes though them and replay the recorded stream in advanced tools like [[Chrome]] dev tools or [[NetBeans]]. |
Current revision
GraalVM Insight has been introduced in version 19.3 of GraalVM. It is a multipurpose, flexible tool that allows to dynamically apply complex insights gathering hooks on already deployed applications running at full speed. Insight further blurs the difference between various DevOps tasks - code once, apply your insights anytime, anywhere! See Insight.md.
Contents |
Always Improving
Insight builds on the polyglot nature of GraalVM and its instrumentation capabilities. One can write Insights in any language - e.g. JavaScript, Ruby, etc. and apply them to any other language including also C, C++, Fortran, etc. The capabilities of Insight are improved with every GraalVM release. Version 20.0 for example improved embedding of Insight into custom applications. Version 20.1 added access to local variables of C and other Sulong based programs. Version 20.2 allows to modify local variables and write insight scripts in Python.
OpenTracing with Jaeger
Insight is obviously great fit for tracing. The close co-operation with Pavol Loffay from Jaeger - the industry leading implementation of OpenTelemetry solution - has resulted in a medium post about agent-like instrumentation for GraalVM.
Instrumentation vs. Insight
Instrumentation has always been part of Truffle system. However, prior to invention of Insight it was necessary to write your instruments in Java. Generating a Truffle-based language implementation compiled by native image may take a while. Recompiling everytime you want to change your instrument, slows you down significantly. That's not a problem for GraalVM Insight - all the hooks are written in dynamic languages and compiled on the fly into the appropriate user code. There is no limit on what these hooks can do - Insight are fully Turing complete code snippets capable to do everything the surrounding programming language can.
Post Mortem Debugging
A promising direction of research is usage of Insight as a harness for post-mortem debugging. Apply watchpoints dynamically, capture the state of execution whenever a program goes though them and replay the recorded stream in advanced tools like Chrome dev tools or NetBeans.