Browse Source

changed profiling algorithm

pull/200/head
orignal 10 years ago
parent
commit
09298d7457
  1. 18
      Profiling.cpp
  2. 2
      Profiling.h

18
Profiling.cpp

@ -11,7 +11,6 @@ namespace data
{ {
RouterProfile::RouterProfile (const IdentHash& identHash): RouterProfile::RouterProfile (const IdentHash& identHash):
m_IdentHash (identHash), m_LastUpdateTime (boost::posix_time::second_clock::local_time()), m_IdentHash (identHash), m_LastUpdateTime (boost::posix_time::second_clock::local_time()),
m_LastDeclinedTime (boost::posix_time::min_date_time),
m_NumTunnelsAgreed (0), m_NumTunnelsDeclined (0), m_NumTunnelsNonReplied (0), m_NumTunnelsAgreed (0), m_NumTunnelsDeclined (0), m_NumTunnelsNonReplied (0),
m_NumTimesTaken (0), m_NumTimesRejected (0) m_NumTimesTaken (0), m_NumTimesRejected (0)
{ {
@ -140,10 +139,7 @@ namespace data
{ {
UpdateTime (); UpdateTime ();
if (ret > 0) if (ret > 0)
{
m_LastDeclinedTime = m_LastUpdateTime;
m_NumTunnelsDeclined++; m_NumTunnelsDeclined++;
}
else else
m_NumTunnelsAgreed++; m_NumTunnelsAgreed++;
} }
@ -167,19 +163,15 @@ namespace data
bool RouterProfile::IsBad () bool RouterProfile::IsBad ()
{ {
auto t = GetTime (); auto isBad = IsAlwaysDeclining () || IsLowPartcipationRate () /*|| IsLowReplyRate ()*/;
auto elapsedTime = (t - m_LastUpdateTime).total_seconds (); if (isBad && m_NumTimesRejected > 10*(m_NumTimesTaken + 1))
if (elapsedTime > 1800)
{
m_NumTunnelsNonReplied = 0; // drop non-replied after 30 minutes of inactivity
if (elapsedTime > 14400) // drop agreed and declined after 4 hours of inactivity
{ {
// reset profile
m_NumTunnelsAgreed = 0; m_NumTunnelsAgreed = 0;
m_NumTunnelsDeclined = 0; m_NumTunnelsDeclined = 0;
m_NumTunnelsNonReplied = 0;
isBad = false;
} }
}
auto isBad = IsAlwaysDeclining () || IsLowPartcipationRate () || IsLowReplyRate () ||
((t - m_LastDeclinedTime).total_seconds () < 300); // declined in last 5 minutes
if (isBad) m_NumTimesRejected++; else m_NumTimesTaken++; if (isBad) m_NumTimesRejected++; else m_NumTimesTaken++;
return isBad; return isBad;
} }

2
Profiling.h

@ -51,7 +51,7 @@ namespace data
private: private:
IdentHash m_IdentHash; IdentHash m_IdentHash;
boost::posix_time::ptime m_LastUpdateTime, m_LastDeclinedTime; boost::posix_time::ptime m_LastUpdateTime;
// participation // participation
uint32_t m_NumTunnelsAgreed; uint32_t m_NumTunnelsAgreed;
uint32_t m_NumTunnelsDeclined; uint32_t m_NumTunnelsDeclined;

Loading…
Cancel
Save