Youngjoon Lee 3d14319588
Targeted experiments for queuing mechanism
Targeted experiments for queuing mechanism

gather series into dataframe

put exp_id to the CSV path

revert iterations back to num_nodes/2

add missing print and decrease msg_interval_sec

change param sequence for readability

use struct instead of pickle for fixed-size & faster serde

include dtime series into dataframe

optimize: choose optimized connection type according to latency setting

add skip_sending_noise option

optimize filling up the queue with noises

move queue_type to the end of param set, and build CSV gradually row by row

fix: consider num_senders when waiting until all messages are disseminated

fix: sample senders without duplicate

fix: build param combinations correctly

add plot script

initialize MinSizeMixQueue with noises

define SessionParameterSet and add paramset for session2

improve topology connectivity check to avoid "maxmimum recursions depth exceeded" error

fix: the correct parameter set constructor

store individual series to separate CSV files

reorganize files and draw plot automatically

start series file id from 1 (not 0)

add queue_type CLI argument for parallelization

pretty format of elapsed time

pretty format of elapsed time

add merge CLI and draw multiple plots

split functions

do not draw plot for each session

use concurrent.futures to utilize multiprocessing

add from_paramset argument

fix: count num of finished iterations correctly

draw plots for num_sent_msgs and num_senders for specific experiments
2024-08-02 11:38:17 +09:00

54 lines
2.1 KiB
YAML

simulation:
# Desired duration of the simulation in seconds
# Since the simulation uses discrete time steps, the actual duration may be longer or shorter.
duration_sec: 1000
# Show all plots that have been drawn during the simulation
show_plots: false
network:
# Total number of nodes in the entire network.
num_nodes: 6
latency:
# Minimum/maximum network latency between nodes in seconds.
# A constant latency will be chosen randomly for each connection within the range [min_latency_sec, max_latency_sec].
min_latency_sec: 0
max_latency_sec: 0.1
# Seed for the random number generator used to determine the network latencies.
seed: 0
gossip:
# Expected number of peers each node must connect to if there are enough peers available in the network.
peering_degree: 3
topology:
# Seed for the random number generator used to determine the network topology.
seed: 1
mix:
# Global constant transmission rate of each connection in messages per second.
transmission_rate_per_sec: 10
# Maximum size of a message in bytes that can be encapsulated in a single Sphinx packet.
max_message_size: 1007
mix_path:
# Minimum number of mix nodes to be chosen for a Sphinx packet.
min_length: 5
# Maximum number of mix nodes to be chosen for a Sphinx packet.
max_length: 5
# Seed for the random number generator used to determine the mix path.
seed: 3
temporal_mix:
# none | pure-coin-flipping | pure-random-sampling | permuted-coin-flipping
mix_type: "pure-coin-flipping"
# The minimum size of queue to be mixed.
# If the queue size is less than this value, noise messages are added.
min_queue_size: 5
# Generate the seeds used to create the RNG for each queue that will be created.
seed_generator: 100
logic:
sender_lottery:
# Interval between lottery draws in seconds.
interval_sec: 1
# Probability of a node being selected as a sender in each lottery draw.
probability: 0.001
# Seed for the random number generator used to determine the lottery winners.
seed: 10