#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>
* 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(
"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)
add_latency(links, latency);
}
-} // namespace resource
-} // namespace kernel
-} // namespace simgrid
+} // namespace simgrid::kernel::resource
#endif /* NETWORK_INTERFACE_CPP_ */