| .ocamlformat: 0.21 -> 0.24.1
Signed-off-by: Hao Lian <hi@haolian.org>
| 3 年前 |
| Updated perf decoding to process event types and periods and use event names for classification
`perf script` has support to pass the field `event` which actually outputs the
type of the event. This actually helps improve classification by not just
matching the perf line against regex and instead parsing the name of the event.
And this also helps us recognize the new sampled events which we would not be
able to differentiate otherwise. This commit just reworks the decoding to
support parsing these event names and also the periods that can be outputted.
Additionally all the tests are updated to support this.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Fix stairstepping OCaml traces when exceptions are involved
This commit fixes two bugs:
* `caml_raise_exn` modifies the stack and then `ret`s into an
`entertrap`, so we need to also do `entertrap` fixups on returns.
* Trap callstacks would often have the symbol of the parent frame
re-inferred, which would result in doubling up of that frame. We fix
this by seeding the trap callstack with a synthetic frame, which we
make sure to delete before outputting trace events.
A more principled approach would be to have `Callstack` know about
traps directly and avoid creating new `Callstack.t`s for them, but
that work is deferred to someday that isn't today.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 2 年前 |
| Allow magic-trace with run perf with sampling if Intel PT is unavailable.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Added decoding/trace writing tests for sampling extra events
The goal of this PR is to allow support to sample other events from perf, e.g.
`branch-misses`, `cache-misses`. Although this is a nice feature, the goal is
also to already have support for processing these events through sampling, so
that when we have PEBS-via-PT available, we can also have these events in the
processor trace stream.
Now the user can pass `-events` along with a comma separated list of either
names like `branch-misses` or sexps which allow the user to control the event
period. These will then show up on separate tracks along with the actual trace
as arrows representing every sample.
I also drafted a [new wiki
page](https://github.com/Lamoreauxaj/magic-trace/wiki/Sampling-extra-events) and
referenced in the help docs for `-events` which would need to be updated along
with this PR.
This commit solely adds new tests which include both branch-misses and
cache-misses as well as the Intel PT stream or a stacktrace sampled stream.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Merge `core` and `src` directories
The split made sense back when we were pursuing a direct backend, but
now it only serves to confuse.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 1 年前 |
| add -events-output flag and output callstacks along events
Signed-off-by: Fredrik Ekholm <fekholm@janestreet.com>
| 3 年前 |
| Add proper abort handling for Intel Transactional Synchronization Extensions (TSX)
This also makes a minor change which corrects error printing, where a
flush was intended (%!) but the % accidentally omitted.
Closes #284.
Signed-off-by: Brian Nigito <bnigito@janestreet.com>
| 1 年前 |
| Notice and handle decode errors in perf traces
This makes spans look good when we flush on decode errors. This embeds
a fairly large refactor of trace_writer.ml because it was impossible
to figure out what was going on without it.
Testing: Loaded up a trace with 115 (!) decode errors and it actually
looked pretty good.
| 4 年前 |
| Merge `core` and `src` directories
The split made sense back when we were pursuing a direct backend, but
now it only serves to confuse.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 1 年前 |
| Fix stairstepping OCaml traces when exceptions are involved
This commit fixes two bugs:
* `caml_raise_exn` modifies the stack and then `ret`s into an
`entertrap`, so we need to also do `entertrap` fixups on returns.
* Trap callstacks would often have the symbol of the parent frame
re-inferred, which would result in doubling up of that frame. We fix
this by seeding the trap callstack with a synthetic frame, which we
make sure to delete before outputting trace events.
A more principled approach would be to have `Callstack` know about
traps directly and avoid creating new `Callstack.t`s for them, but
that work is deferred to someday that isn't today.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 2 年前 |
| Added decoding/trace writing tests for sampling extra events
The goal of this PR is to allow support to sample other events from perf, e.g.
`branch-misses`, `cache-misses`. Although this is a nice feature, the goal is
also to already have support for processing these events through sampling, so
that when we have PEBS-via-PT available, we can also have these events in the
processor trace stream.
Now the user can pass `-events` along with a comma separated list of either
names like `branch-misses` or sexps which allow the user to control the event
period. These will then show up on separate tracks along with the actual trace
as arrows representing every sample.
I also drafted a [new wiki
page](https://github.com/Lamoreauxaj/magic-trace/wiki/Sampling-extra-events) and
referenced in the help docs for `-events` which would need to be updated along
with this PR.
This commit solely adds new tests which include both branch-misses and
cache-misses as well as the Intel PT stream or a stacktrace sampled stream.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Added decoding/trace writing tests for sampling extra events
The goal of this PR is to allow support to sample other events from perf, e.g.
`branch-misses`, `cache-misses`. Although this is a nice feature, the goal is
also to already have support for processing these events through sampling, so
that when we have PEBS-via-PT available, we can also have these events in the
processor trace stream.
Now the user can pass `-events` along with a comma separated list of either
names like `branch-misses` or sexps which allow the user to control the event
period. These will then show up on separate tracks along with the actual trace
as arrows representing every sample.
I also drafted a [new wiki
page](https://github.com/Lamoreauxaj/magic-trace/wiki/Sampling-extra-events) and
referenced in the help docs for `-events` which would need to be updated along
with this PR.
This commit solely adds new tests which include both branch-misses and
cache-misses as well as the Intel PT stream or a stacktrace sampled stream.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Added decoding/trace writing tests for sampling extra events
The goal of this PR is to allow support to sample other events from perf, e.g.
`branch-misses`, `cache-misses`. Although this is a nice feature, the goal is
also to already have support for processing these events through sampling, so
that when we have PEBS-via-PT available, we can also have these events in the
processor trace stream.
Now the user can pass `-events` along with a comma separated list of either
names like `branch-misses` or sexps which allow the user to control the event
period. These will then show up on separate tracks along with the actual trace
as arrows representing every sample.
I also drafted a [new wiki
page](https://github.com/Lamoreauxaj/magic-trace/wiki/Sampling-extra-events) and
referenced in the help docs for `-events` which would need to be updated along
with this PR.
This commit solely adds new tests which include both branch-misses and
cache-misses as well as the Intel PT stream or a stacktrace sampled stream.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Added decoding/trace writing tests for sampling extra events
The goal of this PR is to allow support to sample other events from perf, e.g.
`branch-misses`, `cache-misses`. Although this is a nice feature, the goal is
also to already have support for processing these events through sampling, so
that when we have PEBS-via-PT available, we can also have these events in the
processor trace stream.
Now the user can pass `-events` along with a comma separated list of either
names like `branch-misses` or sexps which allow the user to control the event
period. These will then show up on separate tracks along with the actual trace
as arrows representing every sample.
I also drafted a [new wiki
page](https://github.com/Lamoreauxaj/magic-trace/wiki/Sampling-extra-events) and
referenced in the help docs for `-events` which would need to be updated along
with this PR.
This commit solely adds new tests which include both branch-misses and
cache-misses as well as the Intel PT stream or a stacktrace sampled stream.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Merge `core` and `src` directories
The split made sense back when we were pursuing a direct backend, but
now it only serves to confuse.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 1 年前 |
| Fix stairstepping OCaml traces when exceptions are involved
This commit fixes two bugs:
* `caml_raise_exn` modifies the stack and then `ret`s into an
`entertrap`, so we need to also do `entertrap` fixups on returns.
* Trap callstacks would often have the symbol of the parent frame
re-inferred, which would result in doubling up of that frame. We fix
this by seeding the trap callstack with a synthetic frame, which we
make sure to delete before outputting trace events.
A more principled approach would be to have `Callstack` know about
traps directly and avoid creating new `Callstack.t`s for them, but
that work is deferred to someday that isn't today.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 2 年前 |
| Add a test for musl hello world, statically linked
It's a pretty small test and covers lots of basic functionality.
I've confirmed in the trace viewer that this trace looks good.
| 4 年前 |
| Updated perf decoding to process event types and periods and use event names for classification
`perf script` has support to pass the field `event` which actually outputs the
type of the event. This actually helps improve classification by not just
matching the perf line against regex and instead parsing the name of the event.
And this also helps us recognize the new sampled events which we would not be
able to differentiate otherwise. This commit just reworks the decoding to
support parsing these event names and also the periods that can be outputted.
Additionally all the tests are updated to support this.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Fix stairstepping OCaml traces when exceptions are involved
This commit fixes two bugs:
* `caml_raise_exn` modifies the stack and then `ret`s into an
`entertrap`, so we need to also do `entertrap` fixups on returns.
* Trap callstacks would often have the symbol of the parent frame
re-inferred, which would result in doubling up of that frame. We fix
this by seeding the trap callstack with a synthetic frame, which we
make sure to delete before outputting trace events.
A more principled approach would be to have `Callstack` know about
traps directly and avoid creating new `Callstack.t`s for them, but
that work is deferred to someday that isn't today.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 2 年前 |
| Add tests based on saved perf script traces
This gives us the ability to copy and paste perf script output to write
regression tests.
| 4 年前 |
| Updated perf decoding to process event types and periods and use event names for classification
`perf script` has support to pass the field `event` which actually outputs the
type of the event. This actually helps improve classification by not just
matching the perf line against regex and instead parsing the name of the event.
And this also helps us recognize the new sampled events which we would not be
able to differentiate otherwise. This commit just reworks the decoding to
support parsing these event names and also the periods that can be outputted.
Additionally all the tests are updated to support this.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Updated perf decoding to process event types and periods and use event names for classification
`perf script` has support to pass the field `event` which actually outputs the
type of the event. This actually helps improve classification by not just
matching the perf line against regex and instead parsing the name of the event.
And this also helps us recognize the new sampled events which we would not be
able to differentiate otherwise. This commit just reworks the decoding to
support parsing these event names and also the periods that can be outputted.
Additionally all the tests are updated to support this.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Fix stairstepping OCaml traces when exceptions are involved
This commit fixes two bugs:
* `caml_raise_exn` modifies the stack and then `ret`s into an
`entertrap`, so we need to also do `entertrap` fixups on returns.
* Trap callstacks would often have the symbol of the parent frame
re-inferred, which would result in doubling up of that frame. We fix
this by seeding the trap callstack with a synthetic frame, which we
make sure to delete before outputting trace events.
A more principled approach would be to have `Callstack` know about
traps directly and avoid creating new `Callstack.t`s for them, but
that work is deferred to someday that isn't today.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 2 年前 |
| Allow magic-trace with run perf with sampling if Intel PT is unavailable.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Added decoding/trace writing tests for sampling extra events
The goal of this PR is to allow support to sample other events from perf, e.g.
`branch-misses`, `cache-misses`. Although this is a nice feature, the goal is
also to already have support for processing these events through sampling, so
that when we have PEBS-via-PT available, we can also have these events in the
processor trace stream.
Now the user can pass `-events` along with a comma separated list of either
names like `branch-misses` or sexps which allow the user to control the event
period. These will then show up on separate tracks along with the actual trace
as arrows representing every sample.
I also drafted a [new wiki
page](https://github.com/Lamoreauxaj/magic-trace/wiki/Sampling-extra-events) and
referenced in the help docs for `-events` which would need to be updated along
with this PR.
This commit solely adds new tests which include both branch-misses and
cache-misses as well as the Intel PT stream or a stacktrace sampled stream.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Merge `core` and `src` directories
The split made sense back when we were pursuing a direct backend, but
now it only serves to confuse.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 1 年前 |
| Implement proper exception handling for OCaml programs
This is accomplished by having an OCaml compiler patch that tracks where
it emits pushtrap, poptrap, and entertrap directives. We can then walk
them as we execute the program to figure out the state of the OCaml
exception stack.
The old stacktrace-based approach is maintained for binaries that are
compiled without this section.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 3 年前 |
| Updated perf decoding to process event types and periods and use event names for classification
`perf script` has support to pass the field `event` which actually outputs the
type of the event. This actually helps improve classification by not just
matching the perf line against regex and instead parsing the name of the event.
And this also helps us recognize the new sampled events which we would not be
able to differentiate otherwise. This commit just reworks the decoding to
support parsing these event names and also the periods that can be outputted.
Additionally all the tests are updated to support this.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Fix stairstepping OCaml traces when exceptions are involved
This commit fixes two bugs:
* `caml_raise_exn` modifies the stack and then `ret`s into an
`entertrap`, so we need to also do `entertrap` fixups on returns.
* Trap callstacks would often have the symbol of the parent frame
re-inferred, which would result in doubling up of that frame. We fix
this by seeding the trap callstack with a synthetic frame, which we
make sure to delete before outputting trace events.
A more principled approach would be to have `Callstack` know about
traps directly and avoid creating new `Callstack.t`s for them, but
that work is deferred to someday that isn't today.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 2 年前 |
| Add proper abort handling for Intel Transactional Synchronization Extensions (TSX)
This also makes a minor change which corrects error printing, where a
flush was intended (%!) but the % accidentally omitted.
Closes #284.
Signed-off-by: Brian Nigito <bnigito@janestreet.com>
| 1 年前 |
| Notice and handle decode errors in perf traces
This makes spans look good when we flush on decode errors. This embeds
a fairly large refactor of trace_writer.ml because it was impossible
to figure out what was going on without it.
Testing: Loaded up a trace with 115 (!) decode errors and it actually
looked pretty good.
| 4 年前 |
| Updated perf decoding to process event types and periods and use event names for classification
`perf script` has support to pass the field `event` which actually outputs the
type of the event. This actually helps improve classification by not just
matching the perf line against regex and instead parsing the name of the event.
And this also helps us recognize the new sampled events which we would not be
able to differentiate otherwise. This commit just reworks the decoding to
support parsing these event names and also the periods that can be outputted.
Additionally all the tests are updated to support this.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Merge `core` and `src` directories
The split made sense back when we were pursuing a direct backend, but
now it only serves to confuse.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 1 年前 |
| Merge `core` and `src` directories
The split made sense back when we were pursuing a direct backend, but
now it only serves to confuse.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 1 年前 |
| Fix stairstepping OCaml traces when exceptions are involved
This commit fixes two bugs:
* `caml_raise_exn` modifies the stack and then `ret`s into an
`entertrap`, so we need to also do `entertrap` fixups on returns.
* Trap callstacks would often have the symbol of the parent frame
re-inferred, which would result in doubling up of that frame. We fix
this by seeding the trap callstack with a synthetic frame, which we
make sure to delete before outputting trace events.
A more principled approach would be to have `Callstack` know about
traps directly and avoid creating new `Callstack.t`s for them, but
that work is deferred to someday that isn't today.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 2 年前 |
| Add Go-specific hacks to make demo.go trace
See the comment in trace_writer.ml for more details about what this
entails. The gist of what I've done here is review every call to
`gogo` within demo.go and make sure the stack returns to the right
spot.
Fixes #100
| 4 年前 |
| Updated perf decoding to process event types and periods and use event names for classification
`perf script` has support to pass the field `event` which actually outputs the
type of the event. This actually helps improve classification by not just
matching the perf line against regex and instead parsing the name of the event.
And this also helps us recognize the new sampled events which we would not be
able to differentiate otherwise. This commit just reworks the decoding to
support parsing these event names and also the periods that can be outputted.
Additionally all the tests are updated to support this.
Signed-off-by: Aaron Lamoreaux <alamoreaux@janestreet.com>
| 3 年前 |
| Accept expect-test changes due to updated version of `Quickcheck`
Signed-off-by: Kevin Svetlitski <ksvetlitski@janestreet.com>
| 5 个月前 |
| v0.15~preview.126.09+236
| 4 年前 |
| Fix stairstepping OCaml traces when exceptions are involved
This commit fixes two bugs:
* `caml_raise_exn` modifies the stack and then `ret`s into an
`entertrap`, so we need to also do `entertrap` fixups on returns.
* Trap callstacks would often have the symbol of the parent frame
re-inferred, which would result in doubling up of that frame. We fix
this by seeding the trap callstack with a synthetic frame, which we
make sure to delete before outputting trace events.
A more principled approach would be to have `Callstack` know about
traps directly and avoid creating new `Callstack.t`s for them, but
that work is deferred to someday that isn't today.
Signed-off-by: Tudor Brindus <tbrindus@janestreet.com>
| 2 年前 |
| add -events-output flag and output callstacks along events
Signed-off-by: Fredrik Ekholm <fekholm@janestreet.com>
| 3 年前 |