mirror of
https://github.com/aristocratos/btop.git
synced 2024-09-29 16:51:40 +13:00
Fixed: Account for system rolling over net speeds in Net::collect()
This commit is contained in:
parent
2171789675
commit
56deec4988
4 changed files with 23 additions and 7 deletions
|
@ -517,8 +517,8 @@ namespace Input {
|
||||||
ndev.stat.at("upload").offset = 0;
|
ndev.stat.at("upload").offset = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ndev.stat.at("download").offset = ndev.stat.at("download").last;
|
ndev.stat.at("download").offset = ndev.stat.at("download").last + ndev.stat.at("download").rollover;
|
||||||
ndev.stat.at("upload").offset = ndev.stat.at("upload").last;
|
ndev.stat.at("upload").offset = ndev.stat.at("upload").last + ndev.stat.at("upload").rollover;
|
||||||
}
|
}
|
||||||
no_update = false;
|
no_update = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -171,7 +171,7 @@ namespace Net {
|
||||||
extern unordered_flat_map<string, uint64_t> graph_max;
|
extern unordered_flat_map<string, uint64_t> graph_max;
|
||||||
|
|
||||||
struct net_stat {
|
struct net_stat {
|
||||||
uint64_t speed = 0, top = 0, total = 0, last = 0, offset = 0;
|
uint64_t speed = 0, top = 0, total = 0, last = 0, offset = 0, rollover = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct net_info {
|
struct net_info {
|
||||||
|
|
|
@ -1103,10 +1103,18 @@ namespace Net {
|
||||||
catch (const std::out_of_range&) {}
|
catch (const std::out_of_range&) {}
|
||||||
|
|
||||||
//? Update speed, total and top values
|
//? Update speed, total and top values
|
||||||
|
if (val < saved_stat.last) {
|
||||||
|
saved_stat.rollover += saved_stat.last;
|
||||||
|
saved_stat.last = 0;
|
||||||
|
}
|
||||||
|
if (cmp_greater((unsigned long long)saved_stat.rollover + (unsigned long long)val, numeric_limits<uint64_t>::max())) {
|
||||||
|
saved_stat.rollover = 0;
|
||||||
|
saved_stat.last = 0;
|
||||||
|
}
|
||||||
saved_stat.speed = round((double)(val - saved_stat.last) / ((double)(new_timestamp - timestamp) / 1000));
|
saved_stat.speed = round((double)(val - saved_stat.last) / ((double)(new_timestamp - timestamp) / 1000));
|
||||||
if (saved_stat.speed > saved_stat.top) saved_stat.top = saved_stat.speed;
|
if (saved_stat.speed > saved_stat.top) saved_stat.top = saved_stat.speed;
|
||||||
if (saved_stat.offset > val) saved_stat.offset = 0;
|
if (saved_stat.offset > val + saved_stat.rollover) saved_stat.offset = 0;
|
||||||
saved_stat.total = val - saved_stat.offset;
|
saved_stat.total = (val + saved_stat.rollover) - saved_stat.offset;
|
||||||
saved_stat.last = val;
|
saved_stat.last = val;
|
||||||
|
|
||||||
//? Add values to graph
|
//? Add values to graph
|
||||||
|
|
|
@ -927,10 +927,18 @@ namespace Net {
|
||||||
}
|
}
|
||||||
|
|
||||||
//? Update speed, total and top values
|
//? Update speed, total and top values
|
||||||
|
if (val < saved_stat.last) {
|
||||||
|
saved_stat.rollover += saved_stat.last;
|
||||||
|
saved_stat.last = 0;
|
||||||
|
}
|
||||||
|
if (cmp_greater((unsigned long long)saved_stat.rollover + (unsigned long long)val, numeric_limits<uint64_t>::max())) {
|
||||||
|
saved_stat.rollover = 0;
|
||||||
|
saved_stat.last = 0;
|
||||||
|
}
|
||||||
saved_stat.speed = round((double)(val - saved_stat.last) / ((double)(new_timestamp - timestamp) / 1000));
|
saved_stat.speed = round((double)(val - saved_stat.last) / ((double)(new_timestamp - timestamp) / 1000));
|
||||||
if (saved_stat.speed > saved_stat.top) saved_stat.top = saved_stat.speed;
|
if (saved_stat.speed > saved_stat.top) saved_stat.top = saved_stat.speed;
|
||||||
if (saved_stat.offset > val) saved_stat.offset = 0;
|
if (saved_stat.offset > val + saved_stat.rollover) saved_stat.offset = 0;
|
||||||
saved_stat.total = val - saved_stat.offset;
|
saved_stat.total = (val + saved_stat.rollover) - saved_stat.offset;
|
||||||
saved_stat.last = val;
|
saved_stat.last = val;
|
||||||
|
|
||||||
//? Add values to graph
|
//? Add values to graph
|
||||||
|
|
Loading…
Reference in a new issue