<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sunfish.git/opendc-telemetry, branch master</title>
<subtitle>The OpenDC BSc thesis repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.denounce.ai/sunfish.git/'/>
<entry>
<title>refactor(telemetry): Remove dependency on OpenTelemetry SDK</title>
<updated>2022-05-06T16:37:36+00:00</updated>
<author>
<name>Fabian Mastenbroek</name>
<email>mail.fabianm@gmail.com</email>
</author>
<published>2022-05-06T12:01:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.denounce.ai/sunfish.git/commit/?id=260e2228afea08868e8f7f07233b1861b2d7f0c7'/>
<id>260e2228afea08868e8f7f07233b1861b2d7f0c7</id>
<content type='text'>
This change removes the dependency on the OpenTelemetry SDK. Instead,
we'll only expose metrics via the OpenTelemetry API in the future via
adapter classes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change removes the dependency on the OpenTelemetry SDK. Instead,
we'll only expose metrics via the OpenTelemetry API in the future via
adapter classes.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(compute/service): Remove OpenTelemetry from "compute" modules</title>
<updated>2022-05-06T16:37:36+00:00</updated>
<author>
<name>Fabian Mastenbroek</name>
<email>mail.fabianm@gmail.com</email>
</author>
<published>2022-05-04T14:24:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.denounce.ai/sunfish.git/commit/?id=c7eec7904e08029b3ab31d3e7b21afa1ea9ab7e6'/>
<id>c7eec7904e08029b3ab31d3e7b21afa1ea9ab7e6</id>
<content type='text'>
This change removes the OpenTelemetry integration from the OpenDC
Compute modules. Previously, we chose to integrate OpenTelemetry to
provide a unified way to report metrics to the users.

Although this worked as expected, the overhead of the OpenTelemetry when
collecting metrics during simulation was considerable and lacked more
optimization opportunities (other than providing a separate API
implementation). Furthermore, since we were tied to OpenTelemetry's SDK
implementation, we experienced issues with throttling and registering
multiple instruments.

We will instead use another approach, where we expose the core metrics
in OpenDC via specialized interfaces (see the commits before) such that
access is fast and can be done without having to interface with
OpenTelemetry. In addition, we will provide an adapter to that is able
to forward these metrics to OpenTelemetry implementations, so we can
still integrate with the wider ecosystem.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change removes the OpenTelemetry integration from the OpenDC
Compute modules. Previously, we chose to integrate OpenTelemetry to
provide a unified way to report metrics to the users.

Although this worked as expected, the overhead of the OpenTelemetry when
collecting metrics during simulation was considerable and lacked more
optimization opportunities (other than providing a separate API
implementation). Furthermore, since we were tied to OpenTelemetry's SDK
implementation, we experienced issues with throttling and registering
multiple instruments.

We will instead use another approach, where we expose the core metrics
in OpenDC via specialized interfaces (see the commits before) such that
access is fast and can be done without having to interface with
OpenTelemetry. In addition, we will provide an adapter to that is able
to forward these metrics to OpenTelemetry implementations, so we can
still integrate with the wider ecosystem.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(telemetry/compute): Support direct metric access</title>
<updated>2022-05-06T15:45:23+00:00</updated>
<author>
<name>Fabian Mastenbroek</name>
<email>mail.fabianm@gmail.com</email>
</author>
<published>2022-05-06T15:45:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.denounce.ai/sunfish.git/commit/?id=7981e9aa3e6854ad593a5af85f8eb56874299d7e'/>
<id>7981e9aa3e6854ad593a5af85f8eb56874299d7e</id>
<content type='text'>
This change introduces a `ComputeMetricReader` class that can be used as
a replacement for the `CoroutineMetricReader` class when reading metrics
from the Compute service. This implementation operates directly on a
`ComputeService` instance, providing better performance.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change introduces a `ComputeMetricReader` class that can be used as
a replacement for the `CoroutineMetricReader` class when reading metrics
from the Compute service. This implementation operates directly on a
`ComputeService` instance, providing better performance.
</pre>
</div>
</content>
</entry>
<entry>
<title>build: Move modules into subgroups</title>
<updated>2022-04-24T10:32:20+00:00</updated>
<author>
<name>Fabian Mastenbroek</name>
<email>mail.fabianm@gmail.com</email>
</author>
<published>2022-04-23T10:11:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.denounce.ai/sunfish.git/commit/?id=e1a5b581ae957cc5b07c6083557cd3bcc137894b'/>
<id>e1a5b581ae957cc5b07c6083557cd3bcc137894b</id>
<content type='text'>
This change updates the Gradle build configuration of the project to
publish the different type of modules (e.g., opendc-compute,
opendc-simulator) into their own groups.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change updates the Gradle build configuration of the project to
publish the different type of modules (e.g., opendc-compute,
opendc-simulator) into their own groups.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(telemetry): Fix reporting of CPU time</title>
<updated>2022-02-18T15:47:45+00:00</updated>
<author>
<name>Fabian Mastenbroek</name>
<email>mail.fabianm@gmail.com</email>
</author>
<published>2022-01-11T12:44:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.denounce.ai/sunfish.git/commit/?id=2615c1c3e6c3f79bc14386398bb1d14d65c17512'/>
<id>2615c1c3e6c3f79bc14386398bb1d14d65c17512</id>
<content type='text'>
This change fixes an issue with the CPU time aggregation for VMs in the
ComputeMetricAggregator, leading to incorrect values.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change fixes an issue with the CPU time aggregation for VMs in the
ComputeMetricAggregator, leading to incorrect values.
</pre>
</div>
</content>
</entry>
<entry>
<title>build: Remove opendc-platform module</title>
<updated>2022-02-18T13:53:12+00:00</updated>
<author>
<name>Fabian Mastenbroek</name>
<email>mail.fabianm@gmail.com</email>
</author>
<published>2022-02-18T13:53:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.denounce.ai/sunfish.git/commit/?id=77aaf078650c054ccbaf5f46a71ab218390a571e'/>
<id>77aaf078650c054ccbaf5f46a71ab218390a571e</id>
<content type='text'>
This change removes the opendc-platform module from the project. This
module represented a Java platform which was previously used for sharing
a set of dependency versions between subprojects. However, with the
version catalogue that was added by Gradle, we currently do not use the
platform anymore.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change removes the opendc-platform module from the project. This
module represented a Java platform which was previously used for sharing
a set of dependency versions between subprojects. However, with the
version catalogue that was added by Gradle, we currently do not use the
platform anymore.
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor: Update OpenTelemetry to version 1.11</title>
<updated>2022-02-15T17:08:37+00:00</updated>
<author>
<name>Fabian Mastenbroek</name>
<email>mail.fabianm@gmail.com</email>
</author>
<published>2021-10-09T14:10:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.denounce.ai/sunfish.git/commit/?id=02c215ad57e1e4d56c54d22be58e1845bdeebf25'/>
<id>02c215ad57e1e4d56c54d22be58e1845bdeebf25</id>
<content type='text'>
This change updates the OpenDC codebase to use OpenTelemetry v1.11,
which stabilizes the metrics API. This stabilization brings quite a few
breaking changes, so significant changes are necessary inside the OpenDC
codebase.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change updates the OpenDC codebase to use OpenTelemetry v1.11,
which stabilizes the metrics API. This stabilization brings quite a few
breaking changes, so significant changes are necessary inside the OpenDC
codebase.
</pre>
</div>
</content>
</entry>
<entry>
<title>perf(telemetry): Prevent allocations during collection cycle</title>
<updated>2021-10-25T15:58:54+00:00</updated>
<author>
<name>Fabian Mastenbroek</name>
<email>mail.fabianm@gmail.com</email>
</author>
<published>2021-10-15T13:32:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.denounce.ai/sunfish.git/commit/?id=17951889c6d805b907d936d54e7e66efb7376879'/>
<id>17951889c6d805b907d936d54e7e66efb7376879</id>
<content type='text'>
This change redesigns the ComputeMonitor interface to reduce the number
of memory allocations necessary during a collection cycle.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change redesigns the ComputeMonitor interface to reduce the number
of memory allocations necessary during a collection cycle.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(telemetry): Report provisioning time of virtual machines</title>
<updated>2021-10-25T15:58:53+00:00</updated>
<author>
<name>Fabian Mastenbroek</name>
<email>mail.fabianm@gmail.com</email>
</author>
<published>2021-10-13T13:42:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.denounce.ai/sunfish.git/commit/?id=f565afb1ef7b940804af62aa73b6859dcb78a847'/>
<id>f565afb1ef7b940804af62aa73b6859dcb78a847</id>
<content type='text'>
This change adds support for collecting the provisioning time of virtual
machines in addition to their boot time.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change adds support for collecting the provisioning time of virtual
machines in addition to their boot time.
</pre>
</div>
</content>
</entry>
<entry>
<title>perf(telemetry): Do not allocate lambda in fast-path</title>
<updated>2021-10-25T15:58:49+00:00</updated>
<author>
<name>Fabian Mastenbroek</name>
<email>mail.fabianm@gmail.com</email>
</author>
<published>2021-10-14T15:00:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.denounce.ai/sunfish.git/commit/?id=a1be58f1013697223a339a6a49302e1e42a6662d'/>
<id>a1be58f1013697223a339a6a49302e1e42a6662d</id>
<content type='text'>
This commit changes the lookup for host and server aggregators to use
`getOrPut` instead of `computeIfAbsent`. The former will inline the
lambda and not cause any memory allocation in the fast-path (e.g., the
key exists), while the latter always allocates lambda for constructing
the aggregator.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit changes the lookup for host and server aggregators to use
`getOrPut` instead of `computeIfAbsent`. The former will inline the
lambda and not cause any memory allocation in the fast-path (e.g., the
key exists), while the latter always allocates lambda for constructing
the aggregator.
</pre>
</div>
</content>
</entry>
</feed>
