gem5
v21.1.0.1
|
#include <Throttle.hh>
Classes | |
struct | ThrottleStats |
Public Member Functions | |
Throttle (int sID, RubySystem *rs, NodeID node, Cycles link_latency, int link_bandwidth_multiplier, int endpoint_bandwidth, Switch *em) | |
~Throttle () | |
std::string | name () |
void | addLinks (const std::vector< MessageBuffer * > &in_vec, const std::vector< MessageBuffer * > &out_vec) |
void | wakeup () |
const statistics::Scalar & | getUtilization () const |
const statistics::Vector & | getMsgCount (unsigned int type) const |
int | getLinkBandwidth () const |
Cycles | getLatency () const |
void | clearStats () |
void | collateStats () |
void | regStats () |
void | print (std::ostream &out) const |
![]() | |
Consumer (ClockedObject *_em) | |
virtual | ~Consumer () |
virtual void | storeEventInfo (int info) |
bool | alreadyScheduled (Tick time) |
ClockedObject * | getObject () |
void | scheduleEventAbsolute (Tick timeAbs) |
void | scheduleEvent (Cycles timeDelta) |
Private Member Functions | |
void | init (NodeID node, Cycles link_latency, int link_bandwidth_multiplier, int endpoint_bandwidth) |
void | operateVnet (int vnet, int &bw_remainin, bool &schedule_wakeup, MessageBuffer *in, MessageBuffer *out) |
Throttle (const Throttle &obj) | |
Throttle & | operator= (const Throttle &obj) |
Private Attributes | |
std::vector< MessageBuffer * > | m_in |
std::vector< MessageBuffer * > | m_out |
unsigned int | m_vnets |
std::vector< int > | m_units_remaining |
const int | m_switch_id |
Switch * | m_switch |
NodeID | m_node |
int | m_link_bandwidth_multiplier |
Cycles | m_link_latency |
int | m_wakeups_wo_switch |
int | m_endpoint_bandwidth |
RubySystem * | m_ruby_system |
double | m_link_utilization_proxy |
gem5::ruby::Throttle::ThrottleStats | throttleStats |
Definition at line 58 of file Throttle.hh.
gem5::ruby::Throttle::Throttle | ( | int | sID, |
RubySystem * | rs, | ||
NodeID | node, | ||
Cycles | link_latency, | ||
int | link_bandwidth_multiplier, | ||
int | endpoint_bandwidth, | ||
Switch * | em | ||
) |
Definition at line 55 of file Throttle.cc.
References m_endpoint_bandwidth, m_link_bandwidth_multiplier, m_link_latency, m_link_utilization_proxy, m_vnets, and m_wakeups_wo_switch.
|
inline |
Definition at line 64 of file Throttle.hh.
|
private |
void gem5::ruby::Throttle::addLinks | ( | const std::vector< MessageBuffer * > & | in_vec, |
const std::vector< MessageBuffer * > & | out_vec | ||
) |
Definition at line 76 of file Throttle.cc.
References m_in, m_node, m_out, m_switch_id, m_units_remaining, m_vnets, gem5::ruby::MessageBuffer::setConsumer(), and sc_dt::to_string().
void gem5::ruby::Throttle::clearStats | ( | ) |
Definition at line 236 of file Throttle.cc.
References m_link_utilization_proxy.
void gem5::ruby::Throttle::collateStats | ( | ) |
Definition at line 242 of file Throttle.cc.
References gem5::Clocked::curCycle(), gem5::ruby::RubySystem::getStartCycle(), gem5::ruby::Throttle::ThrottleStats::m_link_utilization, m_link_utilization_proxy, m_ruby_system, and throttleStats.
|
inline |
Definition at line 82 of file Throttle.hh.
References m_link_latency.
|
inline |
Definition at line 79 of file Throttle.hh.
References m_endpoint_bandwidth, and m_link_bandwidth_multiplier.
Referenced by operateVnet(), print(), and wakeup().
|
inline |
Definition at line 76 of file Throttle.hh.
References gem5::ruby::Throttle::ThrottleStats::m_msg_counts, throttleStats, and gem5::X86ISA::type.
|
inline |
Definition at line 74 of file Throttle.hh.
References gem5::ruby::Throttle::ThrottleStats::m_link_utilization, and throttleStats.
|
private |
Referenced by regStats().
|
inline |
Definition at line 66 of file Throttle.hh.
References gem5::csprintf(), and m_switch_id.
|
private |
Definition at line 98 of file Throttle.cc.
References gem5::ruby::MessageBuffer::areNSlotsAvailable(), gem5::Clocked::clockEdge(), gem5::Clocked::curCycle(), gem5::Clocked::cyclesToTicks(), gem5::ruby::MessageBuffer::dequeue(), DPRINTF, gem5::ruby::MessageBuffer::enqueue(), getLinkBandwidth(), gem5::ruby::Message::getMessageSize(), gem5::ruby::MessageBuffer::isReady(), m_link_latency, m_node, m_ruby_system, m_switch, m_units_remaining, gem5::ruby::network_message_to_size(), gem5::ruby::MessageBuffer::peekMsgPtr(), and throttleStats.
Referenced by wakeup().
|
virtual |
Implements gem5::ruby::Consumer.
Definition at line 252 of file Throttle.cc.
References gem5::ccprintf(), getLinkBandwidth(), and m_node.
Referenced by gem5::ruby::operator<<().
void gem5::ruby::Throttle::regStats | ( | ) |
Definition at line 210 of file Throttle.cc.
References gem5::statistics::constant(), gem5::csprintf(), gem5::ruby::Network::getNumberOfVirtualNetworks(), init(), gem5::ruby::Throttle::ThrottleStats::m_msg_bytes, gem5::ruby::Throttle::ThrottleStats::m_msg_counts, gem5::ruby::Network::MessageSizeType_to_int(), gem5::statistics::nozero, throttleStats, and gem5::X86ISA::type.
|
virtual |
Implements gem5::ruby::Consumer.
Definition at line 154 of file Throttle.cc.
References DPRINTF, getLinkBandwidth(), m_in, m_link_utilization_proxy, m_out, m_vnets, m_wakeups_wo_switch, operateVnet(), gem5::ruby::PRIORITY_SWITCH_LIMIT, and gem5::ruby::Consumer::scheduleEvent().
|
private |
Definition at line 111 of file Throttle.hh.
Referenced by getLinkBandwidth(), and Throttle().
|
private |
Definition at line 99 of file Throttle.hh.
Referenced by addLinks(), and wakeup().
|
private |
Definition at line 108 of file Throttle.hh.
Referenced by getLinkBandwidth(), and Throttle().
|
private |
Definition at line 109 of file Throttle.hh.
Referenced by getLatency(), operateVnet(), and Throttle().
|
private |
Definition at line 114 of file Throttle.hh.
Referenced by clearStats(), collateStats(), Throttle(), and wakeup().
|
private |
Definition at line 106 of file Throttle.hh.
Referenced by addLinks(), operateVnet(), and print().
|
private |
Definition at line 100 of file Throttle.hh.
Referenced by addLinks(), and wakeup().
|
private |
Definition at line 112 of file Throttle.hh.
Referenced by collateStats(), and operateVnet().
|
private |
Definition at line 105 of file Throttle.hh.
Referenced by operateVnet().
|
private |
Definition at line 104 of file Throttle.hh.
Referenced by addLinks(), and name().
|
private |
Definition at line 102 of file Throttle.hh.
Referenced by addLinks(), and operateVnet().
|
private |
Definition at line 101 of file Throttle.hh.
Referenced by addLinks(), Throttle(), and wakeup().
|
private |
Definition at line 110 of file Throttle.hh.
Referenced by Throttle(), and wakeup().
|
private |
Referenced by collateStats(), getMsgCount(), getUtilization(), operateVnet(), and regStats().