Console: Show smoothed receive BPS for SSU peers

Don't show zero send/receive BPS after 15 sec idle; show smoothed value,
so display isn't mostly zeros.
BPS sorters will now work correctly and totals are more accurate.
Pass now to send/receive BPS methods and BW estimator
Comment out UDPTransport.noteSend()
Fix alignment issue in NTCP peers table
Show 0 instead of 0.00 for zero BPS
Change rounding mode of formatters
This commit is contained in:
zzz
2023-01-15 08:17:09 -05:00
parent 65d99d2082
commit d6891d4b7a
6 changed files with 46 additions and 17 deletions

View File

@@ -3,6 +3,7 @@ package net.i2p.router.web.helpers;
import java.io.IOException;
import java.io.Serializable;
import java.io.Writer;
import java.math.RoundingMode;
import java.util.Comparator;
import java.text.DecimalFormat;
import java.text.NumberFormat;
@@ -418,8 +419,8 @@ public class PeerHelper extends HelperBase {
.append("\">").append(_t("Dir")).append("</a></th>" +
"<th>").append(_t("IPv6")).append("</th>" +
"<th>").append(_t("Version")).append("</th>" +
"<th align=\"right\"><a href=\"#def.idle\">").append(_t("Idle")).append("</a></th>" +
"<th align=\"right\"><a href=\"#def.rate\">").append(_t("In/Out")).append("</a></th>" +
"<th><a href=\"#def.idle\">").append(_t("Idle")).append("</a></th>" +
"<th><a href=\"#def.rate\">").append(_t("In/Out")).append("</a></th>" +
"<th align=\"right\"><a href=\"#def.up\">").append(_t("Up")).append("</a></th>" +
"<th align=\"right\"><a href=\"#def.skew\">").append(_t("Skew")).append("</a></th>" +
"<th align=\"right\"><a href=\"#def.recv\">").append(_t("RX")).append("</a></th>" +
@@ -518,8 +519,13 @@ public class PeerHelper extends HelperBase {
}
private static final NumberFormat _rateFmt = new DecimalFormat("#,##0.00");
static {
_rateFmt.setRoundingMode(RoundingMode.HALF_UP);
}
private static String formatRate(float rate) {
if (rate < 0.005f)
return "0";
synchronized (_rateFmt) { return _rateFmt.format(rate); }
}
@@ -704,8 +710,8 @@ public class PeerHelper extends HelperBase {
buf.append("<span class=\"left\">").append(DataHelper.formatDuration2(idleOut));
buf.append("</span></td>");
int recvBps = (idleIn > 15*1000 ? 0 : peer.getReceiveBps());
int sendBps = (idleOut > 15*1000 ? 0 : peer.getSendBps());
int recvBps = peer.getReceiveBps(now);
int sendBps = peer.getSendBps(now);
buf.append("<td class=\"cells\" align=\"center\" nowrap><span class=\"right\">");
buf.append(formatKBps(recvBps));
@@ -892,8 +898,13 @@ public class PeerHelper extends HelperBase {
}
private static final DecimalFormat _fmt = new DecimalFormat("#,##0.00");
static {
_fmt.setRoundingMode(RoundingMode.HALF_UP);
}
private static final String formatKBps(int bps) {
if (bps < 5)
return "0";
synchronized (_fmt) {
return _fmt.format((float)bps/1000);
}

View File

@@ -4,6 +4,7 @@ import java.io.Serializable;
import java.util.Collections;
import java.util.Comparator;
import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper;
import net.i2p.router.transport.udp.PeerState;
@@ -120,9 +121,11 @@ class UDPSorters {
}
static class RateInComparator extends PeerComparator {
private final long now = I2PAppContext.getGlobalContext().clock().now();
@Override
public int compare(PeerState l, PeerState r) {
int rv = l.getReceiveBps() - r.getReceiveBps();
int rv = l.getReceiveBps(now) - r.getReceiveBps(now);
if (rv == 0) // fallback on alpha
return super.compare(l, r);
else
@@ -131,9 +134,11 @@ class UDPSorters {
}
static class RateOutComparator extends PeerComparator {
private final long now = I2PAppContext.getGlobalContext().clock().now();
@Override
public int compare(PeerState l, PeerState r) {
int rv = l.getSendBps() - r.getSendBps();
int rv = l.getSendBps(now) - r.getSendBps(now);
if (rv == 0) // fallback on alpha
return super.compare(l, r);
else