Coder Social home page Coder Social logo

dslab's People

Contributors

amgfrthsp avatar anthonyudovichenko avatar kik0s avatar ksenia-c avatar kuskarov avatar ladypython avatar maksim1744 avatar nogokama avatar osukhoroslov avatar syury avatar vetand avatar zedroman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

dslab's Issues

Simulation hash?

Иногда хочется делать какие-то изменения в коде, периодически проверяя, что ход симуляции не поменялся (рефакторинг). Один из вариантов -- один раз посчитать некий хеш симуляции и сделать тест на него. Здесь хешем может быть хеш последовательности обработанных event-ов, тогда нужен будет дополнительный trait (в идеале Hash, но можно и любой, позволяющий дампать в строку, например Debug)

Network model

  • Простая модель с разделением общей пропускной способности сети, без учета топологии
  • Сетевые хосты и привязка акторов к хостам
  • Поддержка моделирования топологии сети (хосты, каналы, коммутаторы...)
  • Моделирование передач данных с учётом топологии (маршруты, разделение пропускной способности каналов)

DagSimulation.load_network()

Почему у нас нет DagSimulation.load_network()? Давайте добавим аналогично DagSimulation.load_resources()? Тогда пример из README немного упростится.

Storage models refactoring

  • Create generic StorageResource trait.
  • Implement this trait for Disk and SharedDisk.
  • Support mounting arbitrary StorageResource implementation in FileSystem.
  • Try to merge Disk and SharedDisk into a single implementation (the only difference is concurrency level, which can be enforced based on configuration parameter).

Experimental study of disk storage models

  • Perform series of experiments to analyze the performance of I/O operations on different kinds of disks.
  • Validate and calibrate the used disk storage models.
  • Identify possible improvements of these models.

Related work:

Get rid of dot-parser dependency

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.

Model of cloud storage

  • Implement a model for cloud storage service, such as S3
  • The internal implementation of service is unknown (black box)
  • Use empirical distribution of bandwidth?

Modeling DAG applications

  • Сделать базовый lib crate с моделью DAG и пример использования
  • Разбить текущий runner на generic runner + интерфейс scheduler-а, с помощью которого можно будет реализовывать разные алгоритмы планирования DAG
  • Добавить реализации нескольких алгоритмов (см. примеры из pysimgrid)
  • Реализовать визуализацию расписания выполнения DAG (пример)
  • Поддержать чтение DAG из файлов в основных legacy-форматах (DAX, DOT, что-то еще?)
  • Поддержкать чтение конфигурации системы (ресурсы, сеть) из файла (здесь формат можно сделать свой)
  • Поддержать запуск пакетных экспериментов (пример) и обработку их результатов (пример)

Support configurable multiplicative factor in ThroughputModel

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:

Support passing multiple VMs in allocation request

На практике запрос от пользователя может приходить сразу на запуск группы ВМ. Хочется такие сценарии поддерживать, например размещать ВМ в запросе с учётом ограничений типа placement strategies.

Generic model of containers

... 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.

Network: support binding actors to hosts and consider actor locations when computing delay

В сеть надо добавить привязку акторов к хостам, с тем чтобы потом учитывать её при вычислении времени передач - если акторы находятся на одном хосте, то время передачи должно вычисляться особым образом.

См. пример того, как это может выглядеть в https://github.com/osukhoroslov/sim-project/blob/main/examples/master-workers/src/network.rs. Здесь если акторы на одном хосте, то время передачи берется 0, но для общности лучше завести параметры local_latency и local_bandwidth.

Cloud simulator

  • Реализовать базовую модель с хостами и планировщиком
  • Реализовать продвинутую модель с несколькими планировщиками и placement store
  • Добавить поддержку моделирования динамического потребления ресурсов ВМ, сбор и передачу этой информации планировщикам через мониторинг
  • Реализовать несколько алгоритмов размещения и миграции ВМ
  • Поддержать чтение и использование открытых датасетов (Azure, Huawei)
  • Поддержать чтение конфигурации облака из файла
  • Поддержать проведение пакетных экспериментов (конфиг системы + датасет + набор алгоритмов)
  • Добавить тесты на корректность учёта используемых ресурсов (например, что в конце во всех store свободные ресурсы равны суммарным)

@vetand дописывайте сюда задачи по мере появления идей

Educational examples and labs

DHT

BitTorrent

Gossip & Epidemic Protocols

Load Balancing

Caching

Tail Latency

Circuit Breaker

Cluster Scheduler

Replication

Consensus

Other

Workload models

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:

Advance time in step_for_duration to expected end time

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.

Support specifying dataset type and path in config

Сейчас в примере iaas-traces надо передавать тип и путь к датасету через опции командной строки, а имя конфиг файла зашито. Удобнее передавать программе путь к конфиг файлу (тогда можно написать свой конфиг), а тип и путь к датасету указывать внутри конфига. Предлагаю поддержать это и переделать пример.

Support testing of real distributed applications (SimWorld)

See 4.1 in Millions of Tiny Databases

Possible directions:

Storage model

  • Простой API + модель хранилища с вычислением времен операций только по объему данных (см. master-workers)
  • Файловый API в духе SimGrid
  • Продвинутая модель с эмпирическим распределением bandwidth и зависимостью от числа конкурентных операций (см. статью)

SimGrid

Separate event counters

Сделать отдельные счётчики для:

  • всех событий (уже есть)
  • сработавших событий
  • отмененных событий

Также было бы полезно считать количество событий каждого типа.

Improve modeling of VM migration

Сейчас миграция ВМ никак не влияет на её производительность, в частности нет никакого даунтайма, ВМ мгновенно переносится с одного сервера на другой. Необходимо немного усложнить модель, добавить даунтайм и увеличить использование CPU.

Add convenient emit() versions

  • 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 immediately
  • emit_self(event, delay)- send event to self (dest=ctx.id)

Support dot format again

  • Currently we cannot use dot-parser which is licensed under GPL 2.0 or later
  • Implement new dot parser using other library or own solution
  • Uncomment montage example in examples/dag

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.