]> AND Public Git Repository - simgrid.git/blobdiff - src/kernel/resource/NetworkModel.cpp
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge network/bandwidth-factor and smpi/bw-factor (and same for latency)
[simgrid.git] / src / kernel / resource / NetworkModel.cpp
index 354489e754a2ad5a3c376ae121de1c8311842321..0e5aa79569e49db90e29186472e70d89d26cd5b8 100644 (file)
@@ -8,6 +8,7 @@
 #include "simgrid/sg_config.hpp"
 #include "src/kernel/resource/NetworkModel.hpp"
 #include "src/kernel/resource/profile/Profile.hpp"
+#include "src/smpi/include/smpi_utils.hpp"
 #include "src/surf/surf_interface.hpp"
 
 #include <numeric>
@@ -21,9 +22,31 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(res_network, ker_resource, "Network resources, t
  * Model *
  *********/
 
-namespace simgrid {
-namespace kernel {
-namespace resource {
+namespace simgrid::kernel::resource {
+static smpi::utils::FactorSet cfg_latency_factor("network/latency-factor");
+static smpi::utils::FactorSet cfg_bandwidth_factor("network/bandwidth-factor");
+
+config::Flag<std::string> cfg_latency_factor_str(
+    "network/latency-factor", {{"smpi/lat-factor"}},
+    "Correction factor to apply to the provided latency (default value overridden by network model)", "1.0");
+static config::Flag<std::string> cfg_bandwidth_factor_str(
+    "network/bandwidth-factor", {{"smpi/bw-factor"}},
+    "Correction factor to apply to the provided bandwidth (default value overridden by network model)", "1.0");
+
+double NetworkModel::get_latency_factor(double size)
+{
+  if (not cfg_latency_factor.is_initialized()) // lazy initiaization to avoid initialization fiasco
+    cfg_latency_factor.parse(cfg_latency_factor_str.get());
+
+  return cfg_latency_factor(size);
+}
+double NetworkModel::get_bandwidth_factor(double size)
+{
+  if (not cfg_bandwidth_factor.is_initialized())
+    cfg_bandwidth_factor.parse(cfg_bandwidth_factor_str.get());
+
+  return cfg_bandwidth_factor(size);
+}
 
 /** @brief Command-line option 'network/TCP-gamma' -- see @ref options_model_network_gamma */
 config::Flag<double> NetworkModel::cfg_tcp_gamma(
@@ -37,6 +60,10 @@ config::Flag<bool> NetworkModel::cfg_crosstraffic(
     "network/crosstraffic",
     "Activate the interferences between uploads and downloads for fluid max-min models (LV08, CM02)", "yes");
 
+config::Flag<double> NetworkModel::cfg_weight_S_parameter(
+    "network/weight-S",
+    "Correction factor to apply to the weight of competing streams (default value set by network model)", 0.0);
+
 NetworkModel::~NetworkModel() = default;
 
 double NetworkModel::next_occurring_event_full(double now)
@@ -110,8 +137,6 @@ void insert_link_latency(std::vector<StandardLinkImpl*>& result, const std::vect
   add_latency(links, latency);
 }
 
-} // namespace resource
-} // namespace kernel
-} // namespace simgrid
+} // namespace simgrid::kernel::resource
 
 #endif /* NETWORK_INTERFACE_CPP_ */