sssimulator @ 4123e0f7
Name | Size | Revision | Age | Author | Comment |
---|---|---|---|---|---|
EventScheduler | bf3d3ebd | over 5 years | Luca Baldesi | refactor action event initialization and standa... | |
Matrix | d6fa79fc | over 5 years | Luca Baldesi | fix bug in matrix_shrink function. bug affects ... | |
Test | 4d4d1b40 | about 5 years | Luca Baldesi | fix test case missing global variable and windo... | |
.gitignore | 49 Bytes | 80fb408d | about 4 years | Luca Baldesi | add .test and .edges to gitignore |
Makefile | 946 Bytes | b15bb747 | over 5 years | luca | add peer scheduling function for selecting on t... |
README | 2.54 KB | 86681e55 | over 5 years | luca | first version |
config.h | 83 Bytes | 86681e55 | over 5 years | luca | first version |
core.h | 1.56 KB | 4136f032 | over 5 years | Luca Baldesi | add important annotation. reminds that the buff... |
ed.c | 6.64 KB | 4123e0f7 | about 4 years | Luca Baldesi | add per-link events. Add a new flag (-E) to tu... |
ed.h | 1.01 KB | 659ba19d | over 5 years | Luca Baldesi | add copyright banner to "event driven" files |
gpl-3.0.txt | 34.3 KB | 86681e55 | over 5 years | luca | first version |
graph.c | 7.66 KB | c02ceab4 | over 5 years | Luca Baldesi | apply small bufixes |
graph.h | 441 Bytes | 86681e55 | over 5 years | luca | first version |
overlay.c | 7.29 KB | 4123e0f7 | about 4 years | Luca Baldesi | add per-link events. Add a new flag (-E) to tu... |
overlay.h | 612 Bytes | 72616bda | over 5 years | luca | add copyright banner to overlay files |
peer_event.c | 5.4 KB | 4123e0f7 | about 4 years | Luca Baldesi | add per-link events. Add a new flag (-E) to tu... |
peer_event.h | 677 Bytes | 4123e0f7 | about 4 years | Luca Baldesi | add per-link events. Add a new flag (-E) to tu... |
proc-time.c | 8.26 KB | 6b38058b | over 5 years | luca | Add tests and Dl/ELp scheduling algorithm |
sched.c | 21.1 KB | 4123e0f7 | about 4 years | Luca Baldesi | add per-link events. Add a new flag (-E) to tu... |
sched.h | 503 Bytes | 4123e0f7 | about 4 years | Luca Baldesi | add per-link events. Add a new flag (-E) to tu... |
sssim.c | 5.94 KB | 4123e0f7 | about 4 years | Luca Baldesi | add per-link events. Add a new flag (-E) to tu... |
stats.c | 7.09 KB | 4d4d1b40 | about 5 years | Luca Baldesi | fix test case missing global variable and windo... |
stats.h | 790 Bytes | f850347b | over 5 years | Luca Baldesi | add windowed analysis mode add tests for conver... |
td.c | 4.29 KB | 80f4c362 | about 5 years | Luca Baldesi | add delay logging functionality |
td.h | 83 Bytes | 86681e55 | over 5 years | luca | first version |
test.sh | 15.5 KB | 6b38058b | over 5 years | luca | Add tests and Dl/ELp scheduling algorithm |
Latest revisions
View all revisions | View revisions
README
This is SSSim, the Simple & Scalable Simulator for P2P scheduling
algorithms.
SSSim is not a real event-based simulator, but a tool for comparing
the schedules generated by different chunk/peer selection algorithms
(called "chunk scheduling algorithms" and "peer scheduling algorithms"
in SSSim). To simplify such comparisons and to make the schedules easier
to predict/analyse, SSSim is based on some simplifying assumptions (which
explain why the simulator is "simple & stupid"):
1) All peers are synchronised
2) All the peers have the same output bandwidth, which is equal to the
stream bitrate. Times are normalised dividing everything by the time
needed to send a chunk (hence, the stream bitrate and the output
bandwidths are equal to 1).
3) All the peers have a very large (modeled as infinite) input bandwidth
4) All the peers have the possibility to know the internal state of all
the other peers in the system (the scheduling algorithms can be clairvoyant)
Based on these assumptions, at every time unit:
1) Each peer receives all the chunks that have been sent to it at the previos
time unit
2) The source selects a target peer (peer scheduling) and sends a new chunk
to it
3) Each peer selects a chunk C (chunk scheduling) and target peer P (peer
scheduling) and sends C to P.
Note that the peer can select first the chunk and then the peer or
vice-versa (or can select chunk and peer simultaneously, but these
algorithms have not been tested yet).
SSSim can generate a trace showing the chunks exchanged between peers at
each time unit.
To compile the simulator, just type "make" and a "sssim" executable should
be built. To build the simulator with different scheduling algorithms, you
can use the "PEER_SCHED" and "CHUNK_SCHED" variables: for example,
"make CHUNK_SCHED=latest_blind_chunk". To remove the playout delay (and
limited-size chunk buffer), compile with the "NO_BUFF" variable defined:
for example, "make NO_BUFF=YesPlease".
The program accepts a "-n " option to set the number of peers (100
is the default), while the number of chunks to send can be configured by
using the "-c " option.
The complete syntax for the sssim program is available by using the "-h"
(help) option.
It is possible to specify an optional argument indicates the
name of a file where the trace of all the exchanged chunks is written, and
an optional argument which indicates the name of a file
where the chunks' diffusion times (the maximum time needed by a chunk
to reach a peer) are saved as soon as chunks arrive.
Also available in: Atom