-
Notifications
You must be signed in to change notification settings - Fork 7
Distributed processing emulation tool
License
tomcucinotta/distwalk
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
DistWalk - Distributed processing emulation tool for Linux Copyright 2016-2021 by Tommaso Cucinotta firstname dot lastname at santannapisa dot it ====================================================================== DESCRIPTION ---------------------------------------------------------------------- DistWalk is a simple command-line tool useful to emulate distributed processing scenarios, where a client submits requests to be processed by one or more server nodes, in a distributed environment. The client can be configured to send requests according to a pre-defined pattern (e.g., periodically or exponentially distributed), where requests may ask the server to perform processing for a time that is configurable according to a pre-defined pattern (e.g., constant or exponentially distributed processing time), or performing disk operations by reading or writing a configurable amount of data. The client provides, at the end of the experiment, all the end-to-end processing times for all submitted requests. The client establishes one or more TCP connections to the server, which is capable of handling multiple client connections via epoll(7). The client can submit concurrent traffic by spawning multiple threads. Furthermore, each thread can emulate different sessions where the connection is closed and re-established for each new session. COMPILING ---------------------------------------------------------------------- This program has been developed and tested on a Linux Ubuntu system, versions from 16.xx to 21.xx. Therefore, please, use Linux. In order to compile the client and the server, just type, from the root folder: make two executables are created: - src/dw_client: the client program, try typing ./client -h - src/dw_node: the server program, try typing ./server -h EXAMPLES OF USE ---------------------------------------------------------------------- The classic and simplest scenario is the one of a client-server scenario with client submitting periodically packets of a given size, and expecting back responses of a different fixed size. This example scenario is achieved launching on the server the simple command: [myuser@myserver distwalk/src]$ ./dw_node then launching on the client the following command, with which we are submitting 10 packets at a rate of 1000 pkt/s [myuser@myclient distwalk/src]$ ./src/dw_client -n 10 -r 1000 -C 1000 -ps 512 -sn myserver Configuration: bind=0.0.0.0:0 hostname=127.0.0.1:7891 num_threads: 1 num_pkts=10 (COMPUTE:0, STORE:0, LOAD:0) rate=1000, exp_arrivals=0 waitspin=0 ramp_num_steps=0, ramp_delta_rate=0, ramp_step_secs=0 comptime_us=1000, exp_comptimes=0 pkt_size=512 (578 with headers), exp_pkt_size=0 resp_size=128 (194 with headers), exp_resp_size=0 min packet size due to header: send=44, reply=12 max packet size: 16777216 no_delay: 1 num_sessions: 1 pkts_per_session: 10 per_session_output: 0 t: 635 us, elapsed: 1259 us, req_id: 0, thr_id: 0, sess_id: 0 t: 1756 us, elapsed: 1224 us, req_id: 1, thr_id: 0, sess_id: 0 t: 2749 us, elapsed: 1265 us, req_id: 2, thr_id: 0, sess_id: 0 t: 3754 us, elapsed: 1293 us, req_id: 3, thr_id: 0, sess_id: 0 t: 4749 us, elapsed: 1307 us, req_id: 4, thr_id: 0, sess_id: 0 t: 5752 us, elapsed: 1312 us, req_id: 5, thr_id: 0, sess_id: 0 t: 6720 us, elapsed: 1361 us, req_id: 6, thr_id: 0, sess_id: 0 t: 7723 us, elapsed: 1363 us, req_id: 7, thr_id: 0, sess_id: 0 t: 8724 us, elapsed: 1391 us, req_id: 8, thr_id: 0, sess_id: 0 t: 9720 us, elapsed: 1402 us, req_id: 9, thr_id: 0, sess_id: 0 The following command spawns 4 threads submitting concurrently requests to the same server (each thread submits 5000 requests needing a 1ms of processing time each, at a rate of 250 pkt/s): [myuser@myclient distwalk/src]$ ./dw_client -nt 4 -c 5000 -r 250 -C 1000 The following command spawns 3 threads, with each of them using 10 sessions to submit the 5000 packets as in the above command, so each session will send 500 requests at a rate of 250 pkt/s (at the end of each session, each client thread closes the connection and establishes a new connection for the subsequent session) [myuser@myclient distwalk/src]$ ./dw_client -nt 3 -ns 10 -c 5000 -r 250 -C 1000
About
Distributed processing emulation tool
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published