Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 123 lines (77 sloc) 3.806 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
c5fcb80 @nniclausse update doc
nniclausse authored
15 * ts_os_mon (gen_server). Use to monitor remote node activity (cpu,
16 memory, network traffic). Currently, use an erlang agent on remote nodes.
17
5ecc4db @nniclausse - update design doc
nniclausse authored
18 * 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
19
20 servers used to construct messages:
21
22 * ts_msg_server (gen_server)
c5fcb80 @nniclausse update doc
nniclausse authored
23 * ts_user_server (gen_server) used by jabber_* for unicity of users id
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 ** 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
26
5ecc4db @nniclausse - update design doc
nniclausse authored
27 This application is simpler:
28
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
29 * ts_launcher (gen_fsm) launch simulated users.
30
a3a0628 @nniclausse update
nniclausse authored
31 * ts_session_cache (gen_server) cache the sessions's definition (ask
32 the config_server if it's not yet in the cache)
33
5ecc4db @nniclausse - update design doc
nniclausse authored
34 * 2 process per simultated client (ts_client, ts_client_rcv), under
35 the supervision of ts_clients_sup ( using simple_one_for_one )
36
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
37 Main modules:
38 ============
39
5ecc4db @nniclausse - update design doc
nniclausse authored
40 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
41
42 1.1/ client processes: at each simulated client correspond 2 erlang
43 process:
44
c5fcb80 @nniclausse update doc
nniclausse authored
45 a/one that will initiate TCP|UDP|SSL connection and will send
5ecc4db @nniclausse - update design doc
nniclausse authored
46 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
47 ts_launcher (using an sleeping time between two clients
48 following an exponential distribution).
49
50 b/ Each of these process will spawn a new process to handle
51 incoming data from the server (ts_client_rcv module).
52
c5fcb80 @nniclausse update doc
nniclausse authored
53 1.2/ monitoring process (ts_mon)
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
54
c5fcb80 @nniclausse update doc
nniclausse authored
55 2/ statistical module (ts_stats)
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
56
c5fcb80 @nniclausse update doc
nniclausse authored
57 3/ protocol-specific modules (ts_jabber and ts_http, for
58 example).
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
59
c5fcb80 @nniclausse update doc
nniclausse authored
60 IDX-TSUNAMI use different types of acknoledgements to determine
61 when a the response of a request is over. For each requests, 4
62 options are possible:
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
63
c5fcb80 @nniclausse update doc
nniclausse authored
64 * parse -> the receiving process parse the response from the
65 server dans can warn the sending process when the response is
66 finish (function parse/2). This is used for HTTP.
67
68 * no_ack: as soon as the request has been sent, the next one is
69 executed (it can be a thinktime)
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
70
c5fcb80 @nniclausse update doc
nniclausse authored
71 * local: the request is acknoledge once a packet is received
72
73 * global: the request is acknoledge once all clients has
74 received an acknoledgement. This has been introduced for
75 Jabber: with that, you can set that users starts talking when
76 everyone is connected.
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
77
78
79 How to add a new protocol, or extend an existing one:
80 ====================================================
81
c5fcb80 @nniclausse update doc
nniclausse authored
82 To add a new protocol, you have to create a module that implement and
83 exports:
84
85 init_dynparams/0,
86 add_dynparams/2,
87 get_message/1,
88 parse/2,
89 parse_config/2,
90 new_session/0
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
91
5ecc4db @nniclausse - update design doc
nniclausse authored
92
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
93 References:
94 ==========
95
96 - Erlang
97
98 http://www.erlang.org/
99
100 Design principles:
40a27bb @nniclausse update doc (typos)
nniclausse authored
101 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
102
103 - Jabber
104
105 http://docs.jabber.org/general/html/protocol.html
106
107
108 - Stochastics models:
109
110 For more details on stochastics models and application to Web
c5fcb80 @nniclausse update doc
nniclausse authored
111 workload generators, have a look at:
da16c35 @nniclausse import version publique du client de test de mont�e en charge.
nniclausse authored
112
113 Nicolas Niclausse. Modélisation, analyse de performance et
114 dimensionnement du World Wide Web. Thèse de Doctorat (PhD), Université
115 de Nice - Sophia Antipolis, Juin 1999.
116 http://www-sop.inria.fr/mistral/personnel/Nicolas.Niclausse/these.html
117
118 Z. Liu, N. Niclausse, C. Jalpa-Villanueva & S. Barbier. Traffic
119 Model and Performance Evaluation of Web Servers Rapport de
120 recherche INRIA, RR-3840 (http://www.inria.fr/rrrt/rr-3840.html)
121
122
Something went wrong with that request. Please try again.