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.
Configuration files for each model can be found in tests/conf, under the name
"model-net-test*.conf".
== Simplenet/Simplewan
== Simplenet/SimpleP2P
The Simplenet and Simplewan models (model-net LP names "simplenet" and
"simplewan") are basic queued point-to-point latency/bandwidth models, assuming
The Simplenet and SimpleP2P models (model-net LP names "simplenet" and
"simplep2p") are basic queued point-to-point latency/bandwidth models, assuming
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
to point. Rather than a single entry, it requires files containing a matrix of
point-to-point bandwidths and latencies.
Simplenet models require two configuration parameters: "net_startup_ns" and
"net_bw_mbps", which define the startup and bandwidth costs in nanoseconds and
megabytes per second, respectively. Simplewan requires two configuration files
for the startup and bandwidth costs: "net_startup_ns_file" and
megabytes per second, respectively. SimpleP2P requires two configuration files
for the latency and bandwidth costs: "net_latency_ns_file" and
"net_bw_mbps_file".
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.simplewan.txt, respectively.
src/models/networks/model-net/doc/README.simplep2p.txt, respectively.
== LogGP
......
......@@ -20,7 +20,7 @@
#include "net/dragonfly.h"
#include "net/loggp.h"
#include "net/simplenet-upd.h"
#include "net/simplewan.h"
#include "net/simplep2p.h"
#include "net/torus.h"
extern int model_net_base_magic;
......@@ -115,7 +115,7 @@ typedef struct model_net_wrap_msg {
terminal_message m_dfly; // dragonfly
loggp_message m_loggp; // loggp
sn_message m_snet; // simplenet
sw_message m_swan; // simplewan
sp_message m_sp2p; // simplep2p
nodes_message m_torus; // torus
// add new ones here
} msg;
......
......@@ -44,7 +44,7 @@ typedef struct mn_stats mn_stats;
// last value is sentinel
#define NETWORK_DEF \
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(DRAGONFLY, "modelnet_dragonfly", "dragonfly", &dragonfly_method)\
X(LOGGP, "modelnet_loggp", "loggp", &loggp_method)\
......
......@@ -4,24 +4,24 @@
*
*/
#ifndef SIMPLEWAN_H
#define SIMPLEWAN_H
#ifndef SIMPLEP2P_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 */
SW_MSG_START, /* initiate a transmission */
SP_MSG_READY = 1, /* sender has transmitted msg to receiver */
SP_MSG_START, /* initiate a transmission */
};
struct sw_message
struct sp_message
{
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 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 dest_mn_rel_id; /* included to make rc easier */
uint64_t net_msg_size_bytes; /* size of modeled network message */
......@@ -44,7 +44,7 @@ struct sw_message
tw_stime recv_prev_idle_all_saved;
};
#endif /* end of include guard: SIMPLEWAN_H */
#endif /* end of include guard: SIMPLEP2P_H */
/*
* Local variables:
......
......@@ -11,7 +11,7 @@ EXTRA_DIST += \
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.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
......@@ -23,7 +23,7 @@ nobase_include_HEADERS = \
codes/net/dragonfly.h \
codes/net/loggp.h \
codes/net/simplenet-upd.h \
codes/net/simplewan.h \
codes/net/simplep2p.h \
codes/net/torus.h
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/dragonfly.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-sched.c \
src/models/networks/model-net/model-net-sched-impl.h \
......
"Simplewan"
"SimpleP2P"
----------
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.
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
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
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.
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
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.
Each of the latency/bandwidth configuration files have the same format, based
......@@ -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
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
entries are 0 - modelnet currently doesn't handle self messages.
......@@ -51,13 +51,13 @@ Caveats:
--------
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
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)
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
the various categories, which doesn't work when times in certain categories may
overlap.
......@@ -223,8 +223,8 @@ void model_net_base_configure(){
// set up offsets - doesn't matter if they are actually used or not
msg_offsets[SIMPLENET] =
offsetof(model_net_wrap_msg, msg.m_snet);
msg_offsets[SIMPLEWAN] =
offsetof(model_net_wrap_msg, msg.m_swan);
msg_offsets[SIMPLEP2P] =
offsetof(model_net_wrap_msg, msg.m_sp2p);
msg_offsets[TORUS] =
offsetof(model_net_wrap_msg, msg.m_torus);
msg_offsets[DRAGONFLY] =
......@@ -461,7 +461,7 @@ void handle_sched_next(
// currently, loggp is the only network implementing the
// callback-based scheduling loop, all others schedule the next packet
// 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,
poffset+codes_local_latency(lp), lp);
model_net_wrap_msg *m_wrap = tw_event_data(e);
......@@ -487,7 +487,7 @@ void handle_sched_next_rc(
if (b->c0){
*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);
}
}
......
......@@ -18,7 +18,7 @@
#define PROC_TIME 10.0
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 dragonfly_method;
extern struct model_net_method loggp_method;
......
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-prio-sched-test
......@@ -24,9 +24,9 @@ EXTRA_DIST += tests/modelnet-test.sh \
tests/conf/modelnet-test.conf \
tests/conf/modelnet-test-dragonfly.conf \
tests/conf/modelnet-test-loggp.conf \
tests/conf/modelnet-test-simplewan.conf \
tests/conf/modelnet-test-startup.conf \
tests/conf/modelnet-test-startup-tri.conf \
tests/conf/modelnet-test-simplep2p.conf \
tests/conf/modelnet-test-latency.conf \
tests/conf/modelnet-test-latency-tri.conf \
tests/conf/modelnet-test-torus.conf \
tests/conf/ng-mpi-tukey.dat \
tests/README_MN_TEST.txt
......@@ -37,9 +37,9 @@ tests_modelnet_test_LDADD = $(testlib) ${CODES_BASE_LIBS}
tests_modelnet_test_CFLAGS = ${CODES_BASE_CFLAGS}
tests_modelnet_test_SOURCES = tests/modelnet-test.c
tests_modelnet_simplewan_test_LDADD = $(testlib) ${CODES_BASE_LIBS}
tests_modelnet_simplewan_test_CFLAGS = ${CODES_BASE_CFLAGS}
tests_modelnet_simplewan_test_SOURCES = tests/modelnet-simplewan-test.c
tests_modelnet_simplep2p_test_LDADD = $(testlib) ${CODES_BASE_LIBS}
tests_modelnet_simplep2p_test_CFLAGS = ${CODES_BASE_CFLAGS}
tests_modelnet_simplep2p_test_SOURCES = tests/modelnet-simplep2p-test.c
tests_modelnet_p2p_bw_LDADD = $(testlib) ${CODES_BASE_LIBS}
tests_modelnet_p2p_bw_CFLAGS = ${CODES_BASE_CFLAGS}
......
......@@ -4,17 +4,17 @@ LPGROUPS
{
repetitions="3";
server="1";
modelnet_simplewan="1";
modelnet_simplep2p="1";
}
}
PARAMS
{
message_size="256";
packet_size="1024";
modelnet_order=("simplewan");
modelnet_order=("simplep2p");
# scheduler options
modelnet_scheduler="fcfs";
# 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";
}
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