Commit bd8f90c6 authored by Jonathan Jenkins's avatar Jonathan Jenkins

simplewan -> simplep2p

Tired of explaining that it's not a good representation of a WAN. Instead, it's
now a simple point-to-point latency/bandwidth model.
parent b4eba540
...@@ -80,25 +80,25 @@ models for high-performance networking, with an HPC bent. ...@@ -80,25 +80,25 @@ models for high-performance networking, with an HPC bent.
Configuration files for each model can be found in tests/conf, under the name Configuration files for each model can be found in tests/conf, under the name
"model-net-test*.conf". "model-net-test*.conf".
== Simplenet/Simplewan == Simplenet/SimpleP2P
The Simplenet and Simplewan models (model-net LP names "simplenet" and The Simplenet and SimpleP2P models (model-net LP names "simplenet" and
"simplewan") are basic queued point-to-point latency/bandwidth models, assuming "simplep2p") are basic queued point-to-point latency/bandwidth models, assuming
infinite packet buffering when routing. These are best used for models that infinite packet buffering when routing. These are best used for models that
require little fidelity out of the network performance. Simplewan is the same require little fidelity out of the network performance. SimpleP2P is the same
model as Simplenet, except it provides heterogeneous link capacities from point model as Simplenet, except it provides heterogeneous link capacities from point
to point. Rather than a single entry, it requires files containing a matrix of to point. Rather than a single entry, it requires files containing a matrix of
point-to-point bandwidths and latencies. point-to-point bandwidths and latencies.
Simplenet models require two configuration parameters: "net_startup_ns" and Simplenet models require two configuration parameters: "net_startup_ns" and
"net_bw_mbps", which define the startup and bandwidth costs in nanoseconds and "net_bw_mbps", which define the startup and bandwidth costs in nanoseconds and
megabytes per second, respectively. Simplewan requires two configuration files megabytes per second, respectively. SimpleP2P requires two configuration files
for the startup and bandwidth costs: "net_startup_ns_file" and for the latency and bandwidth costs: "net_latency_ns_file" and
"net_bw_mbps_file". "net_bw_mbps_file".
More details about the models can be found at More details about the models can be found at
src/models/networks/model-net/doc/README.simplenet.txt and src/models/networks/model-net/doc/README.simplenet.txt and
src/models/networks/model-net/doc/README.simplewan.txt, respectively. src/models/networks/model-net/doc/README.simplep2p.txt, respectively.
== LogGP == LogGP
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include "net/dragonfly.h" #include "net/dragonfly.h"
#include "net/loggp.h" #include "net/loggp.h"
#include "net/simplenet-upd.h" #include "net/simplenet-upd.h"
#include "net/simplewan.h" #include "net/simplep2p.h"
#include "net/torus.h" #include "net/torus.h"
extern int model_net_base_magic; extern int model_net_base_magic;
...@@ -115,7 +115,7 @@ typedef struct model_net_wrap_msg { ...@@ -115,7 +115,7 @@ typedef struct model_net_wrap_msg {
terminal_message m_dfly; // dragonfly terminal_message m_dfly; // dragonfly
loggp_message m_loggp; // loggp loggp_message m_loggp; // loggp
sn_message m_snet; // simplenet sn_message m_snet; // simplenet
sw_message m_swan; // simplewan sp_message m_sp2p; // simplep2p
nodes_message m_torus; // torus nodes_message m_torus; // torus
// add new ones here // add new ones here
} msg; } msg;
......
...@@ -44,7 +44,7 @@ typedef struct mn_stats mn_stats; ...@@ -44,7 +44,7 @@ typedef struct mn_stats mn_stats;
// last value is sentinel // last value is sentinel
#define NETWORK_DEF \ #define NETWORK_DEF \
X(SIMPLENET, "modelnet_simplenet", "simplenet", &simplenet_method)\ X(SIMPLENET, "modelnet_simplenet", "simplenet", &simplenet_method)\
X(SIMPLEWAN, "modelnet_simplewan", "simplewan", &simplewan_method)\ X(SIMPLEP2P, "modelnet_simplep2p", "simplep2p", &simplep2p_method)\
X(TORUS, "modelnet_torus", "torus", &torus_method)\ X(TORUS, "modelnet_torus", "torus", &torus_method)\
X(DRAGONFLY, "modelnet_dragonfly", "dragonfly", &dragonfly_method)\ X(DRAGONFLY, "modelnet_dragonfly", "dragonfly", &dragonfly_method)\
X(LOGGP, "modelnet_loggp", "loggp", &loggp_method)\ X(LOGGP, "modelnet_loggp", "loggp", &loggp_method)\
......
...@@ -4,24 +4,24 @@ ...@@ -4,24 +4,24 @@
* *
*/ */
#ifndef SIMPLEWAN_H #ifndef SIMPLEP2P_H
#define SIMPLEWAN_H #define SIMPLEP2P_H
typedef struct sw_message sw_message; typedef struct sp_message sp_message;
enum sw_event_type enum sp_event_type
{ {
SW_MSG_READY = 1, /* sender has transmitted msg to receiver */ SP_MSG_READY = 1, /* sender has transmitted msg to receiver */
SW_MSG_START, /* initiate a transmission */ SP_MSG_START, /* initiate a transmission */
}; };
struct sw_message struct sp_message
{ {
int magic; /* magic number */ int magic; /* magic number */
enum sw_event_type event_type; enum sp_event_type event_type;
tw_lpid src_gid; /* who transmitted this msg? */ tw_lpid src_gid; /* who transmitted this msg? */
tw_lpid final_dest_gid; /* who is eventually targetted with this msg? */ tw_lpid final_dest_gid; /* who is eventually targetted with this msg? */
/* relative ID of the sending simplewan message (for latency/bandwidth lookup) */ /* relative ID of the sending simplep2p message (for latency/bandwidth lookup) */
int src_mn_rel_id; int src_mn_rel_id;
int dest_mn_rel_id; /* included to make rc easier */ int dest_mn_rel_id; /* included to make rc easier */
uint64_t net_msg_size_bytes; /* size of modeled network message */ uint64_t net_msg_size_bytes; /* size of modeled network message */
...@@ -44,7 +44,7 @@ struct sw_message ...@@ -44,7 +44,7 @@ struct sw_message
tw_stime recv_prev_idle_all_saved; tw_stime recv_prev_idle_all_saved;
}; };
#endif /* end of include guard: SIMPLEWAN_H */ #endif /* end of include guard: SIMPLEP2P_H */
/* /*
* Local variables: * Local variables:
......
...@@ -11,7 +11,7 @@ EXTRA_DIST += \ ...@@ -11,7 +11,7 @@ EXTRA_DIST += \
src/models/networks/model-net/doc/README.dragonfly.txt \ src/models/networks/model-net/doc/README.dragonfly.txt \
src/models/networks/model-net/doc/README.loggp.txt \ src/models/networks/model-net/doc/README.loggp.txt \
src/models/networks/model-net/doc/README.simplenet.txt \ src/models/networks/model-net/doc/README.simplenet.txt \
src/models/networks/model-net/doc/README.simplewan.txt \ src/models/networks/model-net/doc/README.simplep2p.txt \
src/models/networks/model-net/MN_TODO src/models/networks/model-net/MN_TODO
...@@ -23,7 +23,7 @@ nobase_include_HEADERS = \ ...@@ -23,7 +23,7 @@ nobase_include_HEADERS = \
codes/net/dragonfly.h \ codes/net/dragonfly.h \
codes/net/loggp.h \ codes/net/loggp.h \
codes/net/simplenet-upd.h \ codes/net/simplenet-upd.h \
codes/net/simplewan.h \ codes/net/simplep2p.h \
codes/net/torus.h codes/net/torus.h
src_libcodes_net_a_SOURCES = \ src_libcodes_net_a_SOURCES = \
...@@ -32,7 +32,7 @@ src_libcodes_net_a_SOURCES = \ ...@@ -32,7 +32,7 @@ src_libcodes_net_a_SOURCES = \
src/models/networks/model-net/torus.c \ src/models/networks/model-net/torus.c \
src/models/networks/model-net/dragonfly.c \ src/models/networks/model-net/dragonfly.c \
src/models/networks/model-net/loggp.c \ src/models/networks/model-net/loggp.c \
src/models/networks/model-net/simplewan.c \ src/models/networks/model-net/simplep2p.c \
src/models/networks/model-net/model-net-lp.c \ src/models/networks/model-net/model-net-lp.c \
src/models/networks/model-net/model-net-sched.c \ src/models/networks/model-net/model-net-sched.c \
src/models/networks/model-net/model-net-sched-impl.h \ src/models/networks/model-net/model-net-sched-impl.h \
......
"Simplewan" "SimpleP2P"
---------- ----------
Model overview: Model overview:
--------------- ---------------
Simplewan is an extension of simplenet to allow for arbitrary point-to-point SimpleP2P is an extension of simplenet to allow for arbitrary point-to-point
capacities. capacities.
Simplewan has nearly the same duplex queued transmission semantics as SimpleP2P has nearly the same duplex queued transmission semantics as
simplenet, though with a few important differences. First, point-to-point simplenet, though with a few important differences. First, point-to-point
latencies and bandwidths are different. Second, each unique link is given its latencies and bandwidths are different. Second, each unique link is given its
own queue that do not interfere with the others. The use case for this model is own queue that do not interfere with the others. The use case for this model is
a set of sites with internal networks, with each site communicating via a set of sites with internal networks, with each site communicating via
simplewan; we assume the internal network is capable of servicing all simplep2p; we assume the internal network is capable of servicing all
outgoing/incoming WAN transmissions at their full capacities. outgoing/incoming WAN transmissions at their full capacities.
Additional configuration is needed to initialize the link latencies/capacities. Additional configuration is needed to initialize the link latencies/capacities.
In the codes-configuration file, the variables "net_startup_ns_file" and In the codes-configuration file, the variables "net_latency_ns_file" and
"net_bw_mbps_file" must be set under the PARAMS group. They point (in a path "net_bw_mbps_file" must be set under the PARAMS group. They point (in a path
relative to the configuration file) to configurations for the startup and relative to the configuration file) to configurations for the latency and
bandwidth costs, respectively. bandwidth costs, respectively.
Each of the latency/bandwidth configuration files have the same format, based Each of the latency/bandwidth configuration files have the same format, based
...@@ -32,7 +32,7 @@ N:1 N:2 ... N:N ...@@ -32,7 +32,7 @@ N:1 N:2 ... N:N
where x:y is the latency or bandwidth between components x and y. Whitespace is where x:y is the latency or bandwidth between components x and y. Whitespace is
ignored, but linebreaks are not, and delimit rows of the matrix. The relative ignored, but linebreaks are not, and delimit rows of the matrix. The relative
simplewan identifiers 1..N are assigned to simplewan LPs in the order of simplep2p identifiers 1..N are assigned to simplep2p LPs in the order of
their appearance in the codes-configuration file. It is expected that all i:i their appearance in the codes-configuration file. It is expected that all i:i
entries are 0 - modelnet currently doesn't handle self messages. entries are 0 - modelnet currently doesn't handle self messages.
...@@ -51,13 +51,13 @@ Caveats: ...@@ -51,13 +51,13 @@ Caveats:
-------- --------
The model-net statistics are slightly more complex than in other model-net The model-net statistics are slightly more complex than in other model-net
implementations because there are in essence multiple queues per simplewan implementations because there are in essence multiple queues per simplep2p
instance. In particular, the "send time" and "recv time" stats are computed as instance. In particular, the "send time" and "recv time" stats are computed as
ranges of time in which the simplewan LP is actively sending/receiving data ranges of time in which the simplep2p LP is actively sending/receiving data
from *any* link. Hence, simple bandwidth calculations (send bytes / send time) from *any* link. Hence, simple bandwidth calculations (send bytes / send time)
may not be accurate due to skew in message issuance. may not be accurate due to skew in message issuance.
Having more than one category in simplewan will cause the times in the Having more than one category in simplep2p will cause the times in the
derived "all" category to be off. "all" is currently implemented as the sum of derived "all" category to be off. "all" is currently implemented as the sum of
the various categories, which doesn't work when times in certain categories may the various categories, which doesn't work when times in certain categories may
overlap. overlap.
...@@ -223,8 +223,8 @@ void model_net_base_configure(){ ...@@ -223,8 +223,8 @@ void model_net_base_configure(){
// set up offsets - doesn't matter if they are actually used or not // set up offsets - doesn't matter if they are actually used or not
msg_offsets[SIMPLENET] = msg_offsets[SIMPLENET] =
offsetof(model_net_wrap_msg, msg.m_snet); offsetof(model_net_wrap_msg, msg.m_snet);
msg_offsets[SIMPLEWAN] = msg_offsets[SIMPLEP2P] =
offsetof(model_net_wrap_msg, msg.m_swan); offsetof(model_net_wrap_msg, msg.m_sp2p);
msg_offsets[TORUS] = msg_offsets[TORUS] =
offsetof(model_net_wrap_msg, msg.m_torus); offsetof(model_net_wrap_msg, msg.m_torus);
msg_offsets[DRAGONFLY] = msg_offsets[DRAGONFLY] =
...@@ -461,7 +461,7 @@ void handle_sched_next( ...@@ -461,7 +461,7 @@ void handle_sched_next(
// currently, loggp is the only network implementing the // currently, loggp is the only network implementing the
// callback-based scheduling loop, all others schedule the next packet // callback-based scheduling loop, all others schedule the next packet
// immediately // immediately
else if (ns->net_id == SIMPLEWAN || ns->net_id == TORUS){ else if (ns->net_id == SIMPLEP2P || ns->net_id == TORUS){
tw_event *e = codes_event_new(lp->gid, tw_event *e = codes_event_new(lp->gid,
poffset+codes_local_latency(lp), lp); poffset+codes_local_latency(lp), lp);
model_net_wrap_msg *m_wrap = tw_event_data(e); model_net_wrap_msg *m_wrap = tw_event_data(e);
...@@ -487,7 +487,7 @@ void handle_sched_next_rc( ...@@ -487,7 +487,7 @@ void handle_sched_next_rc(
if (b->c0){ if (b->c0){
*in_sched_loop = 1; *in_sched_loop = 1;
} }
else if (ns->net_id == SIMPLEWAN || ns->net_id == TORUS){ else if (ns->net_id == SIMPLEP2P || ns->net_id == TORUS){
codes_local_latency_reverse(lp); codes_local_latency_reverse(lp);
} }
} }
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#define PROC_TIME 10.0 #define PROC_TIME 10.0
extern struct model_net_method simplenet_method; extern struct model_net_method simplenet_method;
extern struct model_net_method simplewan_method; extern struct model_net_method simplep2p_method;
extern struct model_net_method torus_method; extern struct model_net_method torus_method;
extern struct model_net_method dragonfly_method; extern struct model_net_method dragonfly_method;
extern struct model_net_method loggp_method; extern struct model_net_method loggp_method;
......
check_PROGRAMS += tests/modelnet-test tests/modelnet-p2p-bw \ check_PROGRAMS += tests/modelnet-test tests/modelnet-p2p-bw \
tests/concurrent-msg-recv tests/modelnet-simplewan-test \ tests/concurrent-msg-recv tests/modelnet-simplep2p-test \
tests/modelnet-test-collective \ tests/modelnet-test-collective \
tests/modelnet-prio-sched-test tests/modelnet-prio-sched-test
...@@ -24,9 +24,9 @@ EXTRA_DIST += tests/modelnet-test.sh \ ...@@ -24,9 +24,9 @@ EXTRA_DIST += tests/modelnet-test.sh \
tests/conf/modelnet-test.conf \ tests/conf/modelnet-test.conf \
tests/conf/modelnet-test-dragonfly.conf \ tests/conf/modelnet-test-dragonfly.conf \
tests/conf/modelnet-test-loggp.conf \ tests/conf/modelnet-test-loggp.conf \
tests/conf/modelnet-test-simplewan.conf \ tests/conf/modelnet-test-simplep2p.conf \
tests/conf/modelnet-test-startup.conf \ tests/conf/modelnet-test-latency.conf \
tests/conf/modelnet-test-startup-tri.conf \ tests/conf/modelnet-test-latency-tri.conf \
tests/conf/modelnet-test-torus.conf \ tests/conf/modelnet-test-torus.conf \
tests/conf/ng-mpi-tukey.dat \ tests/conf/ng-mpi-tukey.dat \
tests/README_MN_TEST.txt tests/README_MN_TEST.txt
...@@ -37,9 +37,9 @@ tests_modelnet_test_LDADD = $(testlib) ${CODES_BASE_LIBS} ...@@ -37,9 +37,9 @@ tests_modelnet_test_LDADD = $(testlib) ${CODES_BASE_LIBS}
tests_modelnet_test_CFLAGS = ${CODES_BASE_CFLAGS} tests_modelnet_test_CFLAGS = ${CODES_BASE_CFLAGS}
tests_modelnet_test_SOURCES = tests/modelnet-test.c tests_modelnet_test_SOURCES = tests/modelnet-test.c
tests_modelnet_simplewan_test_LDADD = $(testlib) ${CODES_BASE_LIBS} tests_modelnet_simplep2p_test_LDADD = $(testlib) ${CODES_BASE_LIBS}
tests_modelnet_simplewan_test_CFLAGS = ${CODES_BASE_CFLAGS} tests_modelnet_simplep2p_test_CFLAGS = ${CODES_BASE_CFLAGS}
tests_modelnet_simplewan_test_SOURCES = tests/modelnet-simplewan-test.c tests_modelnet_simplep2p_test_SOURCES = tests/modelnet-simplep2p-test.c
tests_modelnet_p2p_bw_LDADD = $(testlib) ${CODES_BASE_LIBS} tests_modelnet_p2p_bw_LDADD = $(testlib) ${CODES_BASE_LIBS}
tests_modelnet_p2p_bw_CFLAGS = ${CODES_BASE_CFLAGS} tests_modelnet_p2p_bw_CFLAGS = ${CODES_BASE_CFLAGS}
......
...@@ -4,17 +4,17 @@ LPGROUPS ...@@ -4,17 +4,17 @@ LPGROUPS
{ {
repetitions="3"; repetitions="3";
server="1"; server="1";
modelnet_simplewan="1"; modelnet_simplep2p="1";
} }
} }
PARAMS PARAMS
{ {
message_size="256"; message_size="256";
packet_size="1024"; packet_size="1024";
modelnet_order=("simplewan"); modelnet_order=("simplep2p");
# scheduler options # scheduler options
modelnet_scheduler="fcfs"; modelnet_scheduler="fcfs";
# modelnet_scheduler="round-robin"; # modelnet_scheduler="round-robin";
net_startup_ns_file="modelnet-test-startup.conf"; net_latency_ns_file="modelnet-test-latency.conf";
net_bw_mbps_file="modelnet-test-bw.conf"; net_bw_mbps_file="modelnet-test-bw.conf";
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment