[NOT WORKING] Start of "Probability of rejection" for performance measures.
This commit is contained in:
parent
57d7a303b1
commit
ddda393095
2 changed files with 83 additions and 0 deletions
BIN
perf-om2m/img/network.png
Normal file
BIN
perf-om2m/img/network.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
83
perf-om2m/simulation.py
Executable file
83
perf-om2m/simulation.py
Executable file
|
@ -0,0 +1,83 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
import argparse
|
||||||
|
import math
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
'''
|
||||||
|
Rappel des notations:
|
||||||
|
H -> HTTP Server
|
||||||
|
R -> Resource
|
||||||
|
D -> Database
|
||||||
|
T -> Thread
|
||||||
|
---
|
||||||
|
LAMBDA -> Entrée
|
||||||
|
MU -> Sortie
|
||||||
|
|
||||||
|
'''
|
||||||
|
|
||||||
|
def rejection_probability():
|
||||||
|
# Counter when T is empty
|
||||||
|
kappa = 0
|
||||||
|
# Initially, N thread is given
|
||||||
|
X_T = N
|
||||||
|
# Number of message received
|
||||||
|
msg_recu = 0
|
||||||
|
proba_sortie = 0
|
||||||
|
|
||||||
|
for _ in range(STEPS):
|
||||||
|
entree_proba = np.random.exponential(1/LAMBDA_H)
|
||||||
|
sortie_proba = np.random.exponential(1/MU_H)
|
||||||
|
|
||||||
|
# If an arrival occurs first
|
||||||
|
if entree_proba < sortie_proba:
|
||||||
|
msg_recu += 1
|
||||||
|
if X_T > 0:
|
||||||
|
X_T -= 1
|
||||||
|
else:
|
||||||
|
kappa += 1
|
||||||
|
else:
|
||||||
|
proba_sortie += 1
|
||||||
|
if X_T < N:
|
||||||
|
X_T += 1
|
||||||
|
|
||||||
|
print(msg_recu)
|
||||||
|
print(kappa)
|
||||||
|
print(proba_sortie)
|
||||||
|
return kappa/msg_recu
|
||||||
|
|
||||||
|
def create_network():
|
||||||
|
STATE_VECTOR[0] = N
|
||||||
|
|
||||||
|
def simulate_network():
|
||||||
|
print(f"Simating for {STEPS} steps:")
|
||||||
|
for _ in range(STEPS):
|
||||||
|
msg_received = np.random.exponential(1/LAMBDA_H)
|
||||||
|
msg_send = np.random.exponential(1/MU_H)
|
||||||
|
= np.random.exponential(1/MU_R)
|
||||||
|
sortie_proba = np.random.exponential(1/MU_D)
|
||||||
|
|
||||||
|
|
||||||
|
# General variables
|
||||||
|
STATE_VECTOR = [0,0,0,0]
|
||||||
|
STEPS = 100000
|
||||||
|
|
||||||
|
LAMBDA_H = 3
|
||||||
|
MU_H = 1
|
||||||
|
MU_R = 1
|
||||||
|
MU_D = 1
|
||||||
|
# Tokens (Processors) for Resources
|
||||||
|
C = 1
|
||||||
|
# Available Token (Thread) for the HTTP Server
|
||||||
|
N = 1
|
||||||
|
|
||||||
|
def parse():
|
||||||
|
# Parsing arguments
|
||||||
|
parser = argparse.ArgumentParser(description="A simple script to parse the -n argument with a number.")
|
||||||
|
parser.add_argument('-n', '--number', type=int, required=True, help='The size of the queue')
|
||||||
|
args = parser.parse_args()
|
||||||
|
# Access the number
|
||||||
|
return args.number
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
create_network()
|
||||||
|
print(f"Probability of rejection: {rejection_probability():.4f}")
|
Loading…
Add table
Reference in a new issue