summaryrefslogtreecommitdiff
path: root/opendc-trace/opendc-trace-api/src
AgeCommit message (Collapse)Author
2022-10-06build: Switch to Spotless for formattingFabian Mastenbroek
This change updates the build configuration to use Spotless for code formating of both Kotlin and Java.
2022-10-06style: Eliminate use of wildcard importsFabian Mastenbroek
This change updates the repository to remove the use of wildcard imports everywhere. Wildcard imports are not allowed by default by Ktlint as well as Google's Java style guide.
2022-07-29fix(trace/api): Do not cache trace formatsFabian Mastenbroek
This change updates the TraceFormat lookup algorithm to prevent caching the available trace format on first access. Since the result of ServiceLoader depends on the Thread's context ClassLoader, they may differ between different threads. Furthermore, ServiceLoader maintains its own thread-local cache, so we can instead utilize that cache and always use the results returned by it.
2022-06-07refactor(trace/api): Introduce type system for trace APIFabian Mastenbroek
This change updates the trace API by introducing a limited type system for the table columns. Previously, the table columns could have any possible type representable by the JVM. With this change, we limit the available types to a small type system.
2022-05-02feat(trace/api): Add support for projecting tablesFabian Mastenbroek
This change adds support for projecting certain columns of a table. This enables faster reading for tables with high number of columns. Currently, we support projection in the Parquet-based workload formats. Other formats are text-based and will probably not benefit much from projection.
2022-04-30feat(trace/calcite): Add Calcite (SQL) integrationFabian Mastenbroek
This change adds support for querying workload trace formats implemented using the OpenDC API through Apache Calcite. This allows users to write SQL queries to explore the workload traces.
2022-04-22refactor(trace/api): Move conventions into separate packageFabian Mastenbroek
This change moves the trace conventions (such as table and column names) in a separate conv package, so that it is separated from the main API. This also allows for a potential move into a separate module in the future.
2022-04-22feat(trace/opendc): Incorporate interference model in trace formatFabian Mastenbroek
This change updates the OpenDC VM trace format to incorporate the VM interference model in the trace format itself. This makes sense since the model is tightly coupled to the actual trace that is being simulated. This approach has as benefit that we can directly load the interference model from the workload trace, without having to resolve the model seperately (as we did before).
2021-11-02refactor(trace): Support gaps in trace dataFabian Mastenbroek
This change updates the implementation of the trace converter and SimTrace implementation to support cases where there is a gap between samples in the trace data. This change allows users to specify what to do in case samples are missing in the trace. The available options are specified in `SimTrace.FillMode`. Currently, we support either carrying the previous value forward or set the usage to zero.
2021-10-25feat(trace): Support conversion from Azure trace formatFabian Mastenbroek
This change adds support for converting the Azure VM traces into the OpenDC trace format.
2021-09-21feat(trace): Add support for writing tracesFabian Mastenbroek
This change adds a new API for writing traces in a trace format. Currently, writing is only supported by the OpenDC VM format, but over time the other formats will also have support for writing added.
2021-09-20refactor(trace): Simplify TraceFormat SPI interfaceFabian Mastenbroek
This change simplifies the TraceFormat SPI interface by reducing the number of interfaces that implementors need to implement to only TraceFormat.
2021-09-20feat(trace): Add property for describing partition keysFabian Mastenbroek
2021-09-20feat(trace): Support column lookup via indexFabian Mastenbroek
This change adds support for looking up the column value through the column index. This enables faster lookup when processing very large traces.
2021-09-20refactor(trace): Unify columns of different tablesFabian Mastenbroek
This change unifies columns of different tables used by trace formats. This concretely means that instead of having columns specific per table (e.g., RESOURCE_ID and RESOURCE_STATE_ID), with this changes these columns are shared between the tables with a single definition (RESOURCE_ID).
2021-09-19feat(trace): Update OpenDC VM trace formatFabian Mastenbroek
This change optimizes the OpenDC VM trace format by removing unnecessary columns as well as optimizing the writer settings. The new implementation still supports reading the old trace format in case users run OpenDC with older workload traces.
2021-09-12feat(trace): Support dynamic resolving of trace formatsFabian Mastenbroek
This change enables users to open traces of various trace formats by dynamically specifying the format name. The trace API will use the service loader to resolve the available trace formats on the classpath.
2021-09-12refactor(trace): Add API for accessing available table columnsFabian Mastenbroek
This change adds a new API to the Table interface for accessing the table columns that the table supports. This does not necessarily mean that the column will have a value for every row, but that the table format has defined this particular column.
2021-09-11feat(trace): Add support for WfCommons (WorkflowHub) tracesFabian Mastenbroek
This change adds support for reading WfCommons workflow traces in OpenDC. This functionality is available in the new `opendc-trace-wfformat` module.
2021-09-11perf(trace): Keep reader state in own classFabian Mastenbroek
This change removes the external class that holds the state of the reader and instead puts the state in the reader implementation. Maintaining a separate class for the state increases the complexity and has worse performance characteristics due to the bytecode produced by Kotlin for property accesses.
2021-09-02perf(trace): Improve performance of column lookupFabian Mastenbroek
2021-09-02refactor(capelin): Migrate trace reader to new trace APIFabian Mastenbroek
This change updates the trace reading classes in the Capelin experiment to use the new trace API in order to re-use many of the trace reading parts.
2021-09-01feat(trace): Add API for trace readingFabian Mastenbroek
This change introduces a new OpenDC API for reading various trace formats in a streaming manner.