Skip to main content

A small example package

Project description

Quick Start Guide

Installation

PyCloudSIm can be easily installed via pip with:

pip install -U PyCloudSim

Its dependencies will be automatically installed!

Basic Example

Let's sceipt a basic example of simulation that consists five vHost, one switch and two vMicroservice. To start, we firstly import the modules:

from PyCloudSim.entity import vDefaultMicroservice, vHost, vSwitch

Then, we can create a core switch that connects all the simulated hosts:

core_switch = vSwitch(
    ipc=1,
    frequency=5000,
    num_cores=4,
    cpu_tdps=150,
    cpu_mode=1,
    ram=8,
    rom=16,
    subnet=IPv4Network("192.168.0.0/24"),
    label="Core",
    create_at=0,
)
core_switch.power_on(0)

Remeber you must call the power on function to actualy power on the simulated switch. Then, we create our hosts and link them with the switch:

hosts: List[vHost] = []
for i in range(5):
    host = vHost(
        ipc=1,
        frequency=5000,
        num_cores=4,
        cpu_tdps=150,
        cpu_mode=2,
        ram=2,
        rom=16,
        label=str(i),
        create_at=0,
    )

    host.power_on(0)
    simulation.network.add_link(host, core_switch, 1, 0)
    hosts.append(host)

Next, we create our microservices:

ms_1 = vDefaultMicroservice(
    cpu=100,
    cpu_limit=500,
    ram=500,
    ram_limit=1000,
    label="test 1",
    image_size=100,
    create_at=0,
    deamon=True,
    min_num_instances=2,
    max_num_instances=4,
)

ms_2 = vDefaultMicroservice(
    cpu=100,
    cpu_limit=500,
    ram=500,
    ram_limit=1000,
    label="test 2",
    image_size=100,
    create_at=0,
    deamon=True,
    min_num_instances=3,
    max_num_instances=4,
)

The "vDefaultMicroservice" is similar to a Kubernetes deployment that the number of container instances schedule up and down based on the utilization threshold. The default configuration is scale up whenever CPU or RAM reach 80% and scale down when they reach 20%.

Next, we create simulated API calls that engages with the microservice:

from Akatosh import instant_event

@instant_event(at=0.11)
def test():
    test = vAPICall(
        src=ms_1,
        dst=ms_2,
        src_process_length=10,
        dst_process_length=10,
        ack_process_length=10,
        num_src_packets=10,
        num_ret_packets=10,
        num_ack_packets=10,
        src_packet_size=100,
        ret_packet_size=100,
        ack_packet_size=100,
        priority=1,
        create_at=0.11,
        label="test",
    )
    
    post_test = vAPICall(
        src=ms_2,
        dst=ms_1,
        src_process_length=10,
        dst_process_length=10,
        ack_process_length=10,
        num_src_packets=10,
        num_ret_packets=10,
        num_ack_packets=10,
        src_packet_size=100,
        ret_packet_size=100,
        ack_packet_size=100,
        priority=1,
        create_at=0.11,
        label="Post test",
        precursor=test,
    )

In this simple example, we simply one API call after another. You can create a SFC process with a group of API Calls chaining together. This example can be considered as an SFC with two microservices only.

Next, we set the container scheduler and use a built in container monitor:

from PyCloudSim.monitor.container_monitor import LoggingContainerMonitor
from PyCloudSim.scheduler import DefaultContainerScheduler

DefaultContainerScheduler()

LoggingContainerMonitor(label="Container Monitor", sample_period=0.01)

Finally, we start the simulation:

simulation.debug(False)
simulation.simulate(1.5)

Change log

10.01.2024

  1. Implemented Dataframe monitors for container and hosts. These monitors collect the telemetries as pandas dataframe.

12.12.2023

  1. Updated with newest version of Akatosh to speed up the simulation.
  2. Implemeted simulated user and it association with simulated gateway.
  3. Default microservice is now able to recover failed container instances automatically.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyCloudSim-1.0.6.tar.gz (26.9 kB view details)

Uploaded Source

Built Distribution

PyCloudSim-1.0.6-py3-none-any.whl (40.8 kB view details)

Uploaded Python 3

File details

Details for the file PyCloudSim-1.0.6.tar.gz.

File metadata

  • Download URL: PyCloudSim-1.0.6.tar.gz
  • Upload date:
  • Size: 26.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for PyCloudSim-1.0.6.tar.gz
Algorithm Hash digest
SHA256 a1aa164bc54cd406ed48932864026c31b8b428136dec95db261dbe270f5c7ac9
MD5 9cb1df0506e71d3a477443d558b69985
BLAKE2b-256 a3047e596bfe834bbb10e3d8a6dfe5b8302b76c6b48d6e52b30bbdb38e5d7e78

See more details on using hashes here.

File details

Details for the file PyCloudSim-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: PyCloudSim-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 40.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for PyCloudSim-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a231160952464c8ecbc63e71bba9c0e0987465d54fbaeeb63d27098ca767af82
MD5 31d35a51376c7eae32776b11699034b9
BLAKE2b-256 4100e535c4321c2c74cdc4f1f739a2b2ed5ddbfcbd1b40f085ec85205589618d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page