You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* `cffi_backend` module changes requested from PR review
- remove a spurious `darshan_free` from `_log_get_heatmap_record()`
- fix the scoping of the `darshan_free` of `buf` object used with
`darshan_accumulator_inject` in `log_get_derived_metrics`
- adding a missing `log_close()` to `log_get_derived_metrics` (maybe
we can wrap in Python contexts in the future though)
- use a separate buffer for `darshan_accumulator_emit()` inside
`log_get_derived_metrics`
* note that making the above CFFI/free-related changes caused
a segfault in the testuite, so in the end I adjusted the location
of the memory freeing as I saw fit to avoid segfaults--I'd say at this
point please provide concrete evidence with a memory leak plot or
failing test for additional adjustments there, or just push the change
in
* in the end, there is a slightly more concise usage of `darshan_free()`
but no meaningful change in the free operations
* I also reverted the suggested changed to `darshan_accumulator_emit()`
usage--there was no testable evidence of an issue, and it was also
causing segfaults..
* address many of the discussion points that came up in gh-868:
- `log_get_derived_metrics()` now uses an LRU cache, which effectively
means that we use memoization to return derived metrics data
rather than doing another pass over the log file if the same
log path and module name have already been accumulated from; we
still need to pass over a given log twice in most cases--once at
initial read-in and once for using `log_get_derived_metrics`; how
we decide to add filtering of records prior to accumulation
interface in Python is probably a deeper discussion/for later
- `log_get_bytes_bandwidth()` and its associated testing have been
migrated to modules not named after "CFFI", like the in the above
PR, because I think we should only use the "CFFI" named modules
for direct CFFI interaction/testing, and for other analyses we
should probably use more distinct names. Also, to some extent
everything depends on the CFFI layer, so trying to restrict
"CFFI" modules to direct rather than direct interaction will
help keep them manageably sized, especially given the proclivity
for surprising memory issues/segfaults in those parts of the code.
- add a proper docstring with examples for `log_get_bytes_bandwidth()`
0 commit comments