summaryrefslogtreecommitdiff
path: root/simulator/opendc-runner-web/src/main
AgeCommit message (Collapse)Author
2021-04-25build: Migrate to flat project structureFabian Mastenbroek
This change updates the project structure to become flattened. Previously, the simulator, frontend and API each lived into their own directory. With this change, all modules of the project live in the top-level directory of the repository. This should improve discoverability of modules of the project.
2021-04-21simulator: Introduce SimulationCoroutineDispatcher (#120)Fabian Mastenbroek
This change introduces the SimulationCoroutineDispatcher implementation which replaces the TestCoroutineDispatcher for running single-threaded simulations.
2021-04-21simulator: Migrate to SimulationCoroutineDispatcherFabian Mastenbroek
This change migrates the remainder of the codebase to the SimulationCoroutineDispatcher implementation.
2021-04-21simulator: Introduce SimulationCoroutineDispatcherFabian Mastenbroek
This change introduces the SimulationCoroutineDispatcher implementation which replaces the TestCoroutineDispatcher for running single-threaded simulations. Previously, we used the TestCoroutineDispatcher from the kotlinx-coroutines-test modules for running simulations. However, this module is aimed at coroutine tests and not at simulations. In particular, having to construct a Clock object each time for the TestCoroutineDispatcher caused a lot of unnecessary lines. With the new approach, the SimulationCoroutineDispatcher automatically exposes a usable Clock object. In addition to ergonomic benefits, the SimulationCoroutineDispatcher is much faster than the TestCoroutineDispatcher due to the assumption that simulations run in only a single thread. As a result, the dispatcher does not need to perform synchronization and can use the fast PriorityQueue implementation.
2021-04-15exp: Re-use topology across repeatsFabian Mastenbroek
This change modifies the web runner to construct the topology only once per repeat, given that the construction does not depend on the repeat number.
2021-04-14exp: Fix incorrect filter scheduler weightsFabian Mastenbroek
This change fixes an issue where incorrect scheduling weights were applied to the filter scheduler.
2021-04-14exp: Simplify power usage calculationFabian Mastenbroek
This change simplifies the conversion from power to energy consumption used in the web runner. Now, we convert straight from J to Wh.
2021-04-14harness: Enable failures only on requestFabian Mastenbroek
This changes fixes a bug where the simulator obtained the incorrect failure frequency causing failures to be enabled even when the user disabled it.
2021-04-08compute: Migrate to new FilterSchedulerFabian Mastenbroek
This change migrates the OpenDC codebase to use the new FilterScheduler for scheduling virtual machines. This removes the old allocation policies as well.
2021-04-08exp: Simplify metric reporting via monitorFabian Mastenbroek
This change simplifies the way metrics are reported to the monitor. Previously, power draw was collected separately from the other metrics. However, with the migration to OpenTelemetry, we collect all metrics every 5 minutes, which drastically simplifies the metric gathering logic.
2021-03-27compute: Migrate compute service simulator to OpenTelemetryFabian Mastenbroek
This change updates the compute service simulator to use OpenTelemetry for reporting metrics of the (simulated) hosts as opposed to using custom event flows. This approach is more generic, flexible and possibly offers better performance as we can collect metrics of all services in a single sweep, as opposed to listening to several services and each invoking the handlers.
2021-03-26compute: Integrate OpenTelemetry Metrics in OpenDC ComputeFabian Mastenbroek
This change integrates the OpenTelemetry Metrics API in the OpenDC Compute Service implementation. This replaces the old infrastructure for gathering metrics.
2021-03-26compute: Remove dependency on event tracerFabian Mastenbroek
This change removes the dependency on the event tracer in `opendc-trace`, since we are in the process of migrating OpenDC to use OpenTelemetry for distributed tracing and metrics.
2021-03-26compute: Hide internals of compute service implementationFabian Mastenbroek
This change changes the compute service and users of the compute service to not rely on the internals of `ComputeServiceImpl` and instead use its public API.
2021-03-26compute: Add test suite for ComputeServiceFabian Mastenbroek
This change adds a test suite for the OpenDC compute service.
2021-03-24simulator: Move power models to simulator moduleFabian Mastenbroek
This change moves the power models from the `opendc-compute-simulator` to the `opendc-simulator-compute` module, since it better fits the scope of the models and allows them to be re-used for other purposes.
2021-03-22simulator: Remove generic resource constraint from resource modelFabian Mastenbroek
This change removes the generic resource constraint (e.g., SimResource) and replaces it by a simple capacity property. In the future, users should handle the resource properties on a higher level. This change simplifies compositions of consumers and providers by not requiring a translation from resource to capacity.
2021-03-16simulator: Add generic framework for resource consumption modelingFabian Mastenbroek
This change adds a generic framework for modeling resource consumptions and adapts opendc-simulator-compute to model machines and VMs on top of this framework. This framework anticipates the addition of additional resource types such as memory, disk and network to the OpenDC codebase.
2021-03-08compute: Remove use of bare-metal provisioning from compute moduleFabian Mastenbroek
This change removes the usage of bare-metal provisioning from the OpenDC Compute module. This significantly simplifies the experiment setup.
2021-03-07compute: Move bare-metal provisioning in separate moduleFabian Mastenbroek
This change moves the bare-metal provisioning packages outside the compute module since these modules represent different layers in the ecosystem and should not be mixed.
2021-03-07compute: Move ComputeService implementation in service moduleFabian Mastenbroek
This change introduces the ComputeService interface (previously VirtProvisioningService) and provides a central implementation in opendc-compute-service. Previously, the implementation of this interface was bound to the simulator package, which meant that independent business logic could not be re-used without importing the simulator code.
2021-03-07compute: Extract API from compute serviceFabian Mastenbroek
This change extracts the API for the OpenDC Compute service into a separate module to establish a clearer boundary between the interface meant for consumers and interfaces meant for the the serve implementation.
2021-03-07compute: Convert Server to stateful interfaceFabian Mastenbroek
This change converts the Server data class which can be used as a stateful object to control an instance running in the cloud.
2021-03-07compute: Make VirtProvisoningService responsible for Server lifecycleFabian Mastenbroek
This change refactors the OpenDC Compute module so that the VirtProvisioningService is now responsible for managing the lifecycle of Server objects as opposed to the VirtDriver and BareMetalDriver previously.
2021-03-07compute: Separate cloud compute layer from bare-metal layerFabian Mastenbroek
This change separates the cloud compute layer in OpenDC (e.g., Server) from the bare-metal layer (e.g., Node), such that Node and BareMetalDriver are unaware of the existence of Server and co.
2021-03-06sim: Implement energy models from CloudSim (#79)Hongyu
This commit implements the energy models that are present in CloudSim: 1. Constant 2. Linear 3. Cubic 4. Square root 5. Interpolation based on data.
2021-02-23exp: Add support for running Capelin experiments in IntelliJFabian Mastenbroek
2021-01-03Integrate event tracer in SimVirtProvisioningServiceFabian Mastenbroek
2020-11-12Add timeout for experiments run by web runnerFabian Mastenbroek
This change adds a timeout for experiments that are run by the web runner in order to prevent buggy/long simulations from consuming one of the CPU cores forever.
2020-11-11Take into account energy consumption of CPUs in topologyFabian Mastenbroek
2020-11-11Add support for simulator error reporting via SentryFabian Mastenbroek
2020-10-29Eliminate Spark dependencies from Web RunnerFabian Mastenbroek
This change eliminates the large Spark dependencies from the web runner. Instead, we perform on the fly aggregation of the data and report directly to MongoDB.
2020-10-29Support non-ObjectIds and empty tracesFabian Mastenbroek
2020-10-29Add support for ObjectId in simulatorFabian Mastenbroek
2020-10-05Address compilation warningsFabian Mastenbroek
2020-10-04Extract simulation-related code from OpenDC Compute (core)Fabian Mastenbroek
This change splits the opendc-compute module into two modules: 1. opendc-compute-core The interfaces and APIs that represent a IaaS platform. 2. opendc-compute-simulator The implementation of these interfaces using simulation components from opendc-simulator-compute.
2020-10-04Migrate codebase to opendc-simulator-computeFabian Mastenbroek
This change updates the remainder of the codebase to use the opendc-simulator-compute module for the simulation of workloads.
2020-10-02Add opendc-simulator-compute moduleFabian Mastenbroek
This change adds an opendc-simulator-compute module which contains interfaces related to simulating compute workloads. For future changes, we intend to decouple the simulation part from the opendc-compute module.
2020-10-01Add explicit API visibilityFabian Mastenbroek
This change adds explicit visibility modifiers to the public interfaces and enables Kotlin 1.4's explicit API mode.
2020-10-01Migrate to org.opendc namespaceFabian Mastenbroek
This change moves the OpenDC simulator codebase to the org.opendc namespace of which we control the domain. Previously, we used the com.atlarge package of which we did not control the domain, which might lead to difficulties in the future.
2020-10-01Move OpenDC modules into simulator rootFabian Mastenbroek
This change moves the OpenDC modules previously living in the simulator/opendc directory to the simulator directory itself given that we do not make a distinction between OpenDC and odcsim anymore.