osukhoroslov / dslab Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
Иногда хочется делать какие-то изменения в коде, периодически проверяя, что ход симуляции не поменялся (рефакторинг). Один из вариантов -- один раз посчитать некий хеш симуляции и сделать тест на него. Здесь хешем может быть хеш последовательности обработанных event
-ов, тогда нужен будет дополнительный trait
(в идеале Hash
, но можно и любой, позволяющий дампать в строку, например Debug
)
Почему у нас нет DagSimulation.load_network()? Давайте добавим аналогично DagSimulation.load_resources()? Тогда пример из README немного упростится.
У сети надо добавить поддержку отправки события актору с задержкой равной latency (или 0 если на одном хосте). См. метод send
здесь: https://github.com/osukhoroslov/sim-project/blob/main/examples/master-workers/src/network.rs
See for example this study: https://ieeexplore.ieee.org/document/8411026
StorageResource
trait.Disk
and SharedDisk
.StorageResource
implementation in FileSystem
.Disk
and SharedDisk
into a single implementation (the only difference is concurrency level, which can be enforced based on configuration parameter).Related work:
It is licensed under GPL 2.0 or later, which is unacceptable for us. Try to use other crate for parsing dot files with more permissive license.
... that can be used in different contexts.
Encapsulates CPU and (local) storage models, can be attached to network.
The effective activity throughput (used e.g. to compute activity remaining work) is computed as throughput * factor
, where throughput is computed using the throughput sharing model.
By default factor=1. To model various phenomena (e.g. variation of throughput or dependence of throughput of activity size) it should be possible to override the factor per each activity using the provided implementation of ThrougputFactorFunction
trait, which takes activity size (volume) and SimulationContext (to access time and RNG).
This should generalize and replace BWModel
from dslab-storage.
Details of implementation in SimGrid:
На практике запрос от пользователя может приходить сразу на запуск группы ВМ. Хочется такие сценарии поддерживать, например размещать ВМ в запросе с учётом ограничений типа placement strategies.
See #88 (comment)
... that can be reused in different domain-specific models.
Physical machines -> Racks -> Network topology
... that can be reused in different contexts (e.g. modeling k8s cluster or FaaS cloud).
Should implement dynamic resource allocation and scheduling of CPU time between containers running on machine.
В сеть надо добавить привязку акторов к хостам, с тем чтобы потом учитывать её при вычислении времени передач - если акторы находятся на одном хосте, то время передачи должно вычисляться особым образом.
См. пример того, как это может выглядеть в https://github.com/osukhoroslov/sim-project/blob/main/examples/master-workers/src/network.rs. Здесь если акторы на одном хосте, то время передачи берется 0, но для общности лучше завести параметры local_latency и local_bandwidth.
@vetand дописывайте сюда задачи по мере появления идей
Throughput function implementation instantiated from table with experimental results (similar to this example)
memory_load > 1 will lead to OOMs
Currently compute and storage support only elementary activities consisting of fixed work (flops, bytes).
Real applications consist of a mix of such activities. Some typical cases can be supported as ready-to-use workload models.
See for example workloads in OpenDC:
See Figure 4 in this paper.
Implementation is SimGrid: https://github.com/simgrid/simgrid/blob/master/src/plugins/file_system/s4u_FileSystem.cpp
See also #198 for idea how to model remote storage reads/writes.
Useful links about DVFS:
Known attempts to model DVFS in simulators:
Impact on power models:
Do we need to rename crates to publish them later?
https://stackoverflow.com/questions/72348259/cargo-package-doesnt-work-with-rusts-workspace
Currently if step_for_duration
is called with duration D
and there is no event at time + D
the time after simulation equals the time of the last event. It is proposed to advance the simulation time to time + D
which is more natural.
Physical Machine -> Rack -> Cluster -> Datacenter -> AZ -> Region
Сейчас в примере iaas-traces
надо передавать тип и путь к датасету через опции командной строки, а имя конфиг файла зашито. Удобнее передавать программе путь к конфиг файлу (тогда можно написать свой конфиг), а тип и путь к датасету указывать внутри конфига. Предлагаю поддержать это и переделать пример.
See 4.1 in Millions of Tiny Databases
Possible directions:
Automate the search of simulation model parameters to optimize the simulation accuracy.
Related work:
The log output format should be consistent across the framework, system actors and user code.
Сделать отдельные счётчики для:
Также было бы полезно считать количество событий каждого типа.
Related work:
Linux CPU schedulers:
Сейчас миграция ВМ никак не влияет на её производительность, в частности нет никакого даунтайма, ВМ мгновенно переносится с одного сервера на другой. Необходимо немного усложнить модель, добавить даунтайм и увеличить использование CPU.
emit_resp(event, delay)
- send event to event source (dest=from)emit_now(event, dest)
- send event immediately (delay=0.)emit_resp_now(event)
- send event to event source immediatelyemit_self(event, delay)
- send event to self (dest=ctx.id)dot-parser
which is licensed under GPL 2.0 or laterexamples/dag
Modeling of interference between VMs in OpenDC:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.