-
Notifications
You must be signed in to change notification settings - Fork 405
/
Desing.txt
102 lines (65 loc) · 3.11 KB
/
Desing.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
OTP Supervision tree:
====================
* ts_mon (gen_server)
* ts_timer (used by ts_client_rcv when ack is global) (gen_fsm)
* ts_client_sup -> ts_client, ts_client_rcv
servers used to construct messages:
* ts_req_server (gen_server) can generate messages extracted from an external file
* ts_msg_server (gen_server)
* ts_user_server (gen_server) used by ts_launcher and jabber_* for unicity of users id
main server
* ts_launcher (gen_fsm) launch simulated users.
Main modules:
============
1/ ts_launcher. the master process that spawns other processes:
1.1/ client processes: at each simulated client correspond 2 erlang
process:
a/one that will initiate TCP (UDP) connection and will send
messages (ts_client module). These process are spawns by
ts_launcher (using an sleeping time between two clients
following an exponential distribution).
b/ Each of these process will spawn a new process to handle
incoming data from the server (ts_client_rcv module).
The total number of clients (NCLIENTS) can be changed in the
config file. It represent the total number of clients that
will be launched, and not the maximal simultaneous number of
client.
Warning: All the messages for a user session are computed by
ts_launcher, just before spawning the user process (in a
list). Therefore, if the number of messages is huge, it can
takes A LOT of memory. If you want to do very long experiments,
use a single 'dynamic' messages (see jabber_dynamic and
Jabber.txt for an exemple), which will be send over and over by
the user.
Important parameters for Jabber :
1/ chat messages size, in bytes (250 by default)
2/ mean time elapsed between two consecutives messages sent by a user
3/ number of messages sent by a user during a session
1.2/ monitoring process (ts_mon)
2/ statistical module (ts_stats)
3/ a generic module for building user sessions (ts_profile)
4/ protocol-specific modules (jabber_online for example).
How to add a new protocol, or extend an existing one:
====================================================
A protocol has to implement the API defined in profile.erl, ie.
must implement these functions:
- get_client/2
- get_random_message/1
References:
==========
- Erlang
http://www.erlang.org/
Design principles:
http://www.erlang.org/doc/r7b/doc/design_principles/part_first.html
- Jabber
http://docs.jabber.org/general/html/protocol.html
- Stochastics models:
For more details on stochastics models and application to Web
workload generators, take a look at:
Nicolas Niclausse. Modélisation, analyse de performance et
dimensionnement du World Wide Web. Thèse de Doctorat (PhD), Université
de Nice - Sophia Antipolis, Juin 1999.
http://www-sop.inria.fr/mistral/personnel/Nicolas.Niclausse/these.html
Z. Liu, N. Niclausse, C. Jalpa-Villanueva & S. Barbier. Traffic
Model and Performance Evaluation of Web Servers Rapport de
recherche INRIA, RR-3840 (http://www.inria.fr/rrrt/rr-3840.html)