Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 109 lines (67 sloc) 3.379 kb
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
1
2 OTP Supervision tree:
3 ====================
4
4b876b8 @nniclausse add graph of idx-tsunami internals
nniclausse authored
5 The application is now split in two (see tsunami-inside.png for an overview):
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
6
5ecc4db @nniclausse - update design doc
nniclausse authored
7 ** a single controller (tsunami_controller)
8
a3a0628 @nniclausse update
nniclausse authored
9 * ts_config_server (gen_server). Configuration server. Session's
10 definitions are kept by the config server.
11
5ecc4db @nniclausse - update design doc
nniclausse authored
12 * ts_mon (gen_server). Each client send reports of stats to this
13 server. Several types of messages are handled by ts_mon.
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
14
5ecc4db @nniclausse - update design doc
nniclausse authored
15 * ts_timer (used by ts_client_rcv when ack is global) (gen_fsm)
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
16
17 servers used to construct messages:
18
19 * ts_req_server (gen_server) can generate messages extracted from an external file
20 * ts_msg_server (gen_server)
21 * ts_user_server (gen_server) used by ts_launcher and jabber_* for unicity of users id
22
5ecc4db @nniclausse - update design doc
nniclausse authored
23 ** several clients (tsunami) Several nodes can be used simultaneously
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
24
5ecc4db @nniclausse - update design doc
nniclausse authored
25 This application is simpler:
26
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
27 * ts_launcher (gen_fsm) launch simulated users.
28
a3a0628 @nniclausse update
nniclausse authored
29 * ts_session_cache (gen_server) cache the sessions's definition (ask
30 the config_server if it's not yet in the cache)
31
5ecc4db @nniclausse - update design doc
nniclausse authored
32 * 2 process per simultated client (ts_client, ts_client_rcv), under
33 the supervision of ts_clients_sup ( using simple_one_for_one )
34
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
35 Main modules:
36 ============
37
5ecc4db @nniclausse - update design doc
nniclausse authored
38 1/ ts_launcher. the master process that spawns other simulated clients:
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
39
40 1.1/ client processes: at each simulated client correspond 2 erlang
41 process:
42
43 a/one that will initiate TCP (UDP) connection and will send
5ecc4db @nniclausse - update design doc
nniclausse authored
44 messages (ts_client module). These processes are spawns by
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
45 ts_launcher (using an sleeping time between two clients
46 following an exponential distribution).
47
48 b/ Each of these process will spawn a new process to handle
49 incoming data from the server (ts_client_rcv module).
50
51 Important parameters for Jabber :
52 1/ chat messages size, in bytes (250 by default)
53
54 2/ mean time elapsed between two consecutives messages sent by a user
55
56 3/ number of messages sent by a user during a session
57
58 1.2/ monitoring process (ts_mon)
59
60 2/ statistical module (ts_stats)
61
62 3/ a generic module for building user sessions (ts_profile)
63
5ecc4db @nniclausse - update design doc
nniclausse authored
64 4/ protocol-specific modules (jabber_online or ts_http, for example).
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
65
66 How to add a new protocol, or extend an existing one:
67 ====================================================
68
69 A protocol has to implement the API defined in profile.erl, ie.
70 must implement these functions:
71 - get_client/2
72 - get_random_message/1
73
5ecc4db @nniclausse - update design doc
nniclausse authored
74 If you have to parse the responses from the server, two other
75 functions has to be implemented:
76 - parse/2
77 - new_session/0
78
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
79 References:
80 ==========
81
82 - Erlang
83
84 http://www.erlang.org/
85
86 Design principles:
40a27bb @nniclausse update doc (typos)
nniclausse authored
87 http://www.erlang.org/doc/r7b/doc/design_principles/part_frame.html
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
88
89 - Jabber
90
91 http://docs.jabber.org/general/html/protocol.html
92
93
94 - Stochastics models:
95
96 For more details on stochastics models and application to Web
97 workload generators, take a look at:
98
99 Nicolas Niclausse. Modélisation, analyse de performance et
100 dimensionnement du World Wide Web. Thèse de Doctorat (PhD), Université
101 de Nice - Sophia Antipolis, Juin 1999.
102 http://www-sop.inria.fr/mistral/personnel/Nicolas.Niclausse/these.html
103
104 Z. Liu, N. Niclausse, C. Jalpa-Villanueva & S. Barbier. Traffic
105 Model and Performance Evaluation of Web Servers Rapport de
106 recherche INRIA, RR-3840 (http://www.inria.fr/rrrt/rr-3840.html)
107
108
Something went wrong with that request. Please try again.