0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-11 14:38:57 +02:00

ircd::server: Add stats for total bytes up and down to peer and links.

This commit is contained in:
Jason Volk 2018-03-26 17:21:24 -07:00
parent 270120c922
commit 47edaed3a6
4 changed files with 54 additions and 2 deletions

View file

@ -69,6 +69,10 @@ struct ircd::server::link
size_t read_completed() const; // see: tag::read_completed() notes
size_t read_remaining() const; // see: tag::read_remaining() notes
// stats accumulated
size_t write_total() const;
size_t read_total() const;
// stats for tags
size_t tag_count() const;
size_t tag_committed() const;

View file

@ -32,6 +32,8 @@ struct ircd::server::peer
std::list<link> links;
std::unique_ptr<err> e;
std::string server_name;
size_t write_bytes {0};
size_t read_bytes {0};
bool op_resolve {false};
bool op_fini {false};
@ -84,6 +86,10 @@ struct ircd::server::peer
size_t read_completed() const;
size_t read_remaining() const;
// stats accumulated over time
size_t write_total() const;
size_t read_total() const;
// link control panel
link &link_add(const size_t &num = 1);
link *link_get(const request &);

View file

@ -883,6 +883,20 @@ ircd::server::peer::handle_finished()
server::dock.notify_all();
}
size_t
ircd::server::peer::read_total()
const
{
return read_bytes;
}
size_t
ircd::server::peer::write_total()
const
{
return write_bytes;
}
size_t
ircd::server::peer::read_remaining()
const
@ -1365,6 +1379,8 @@ ircd::server::link::process_write_next(const const_buffer &buffer)
data(buffer), bytes
};
assert(peer);
peer->write_bytes += bytes;
return written;
}
@ -1558,6 +1574,9 @@ ircd::server::link::read(const mutable_buffer &buf)
read_one(*socket, buf)
};
assert(peer);
peer->read_bytes += received;
return const_buffer
{
data(buf), received
@ -1580,6 +1599,9 @@ ircd::server::link::discard_read()
discard_any(*socket, size_t(discard))
};
assert(peer);
peer->read_bytes += discarded;
// Shouldn't ever be hit because the read() within discard() throws
// the pending error like an eof.
log.warning("Link to %s discarded %zu of %zd unexpected bytes",
@ -1622,6 +1644,20 @@ const
return queue.size();
}
size_t
ircd::server::link::read_total()
const
{
return socket? socket->in.bytes : 0;
}
size_t
ircd::server::link::write_total()
const
{
return socket? socket->out.bytes : 0;
}
size_t
ircd::server::link::read_remaining()
const

View file

@ -613,6 +613,8 @@ html__net__peer(opt &out, const string_view &line)
out << "<td> REQS </td>";
out << "<td> ▲ BYTES Q</td>";
out << "<td> ▼ BYTES Q</td>";
out << "<td> ▲ BYTES</td>";
out << "<td> ▼ BYTES</td>";
out << "<td> ERROR </td>";
out << "</tr>";
@ -635,6 +637,8 @@ html__net__peer(opt &out, const string_view &line)
out << "<td>" << peer.tag_count() << "</td>";
out << "<td>" << peer.write_size() << "</td>";
out << "<td>" << peer.read_size() << "</td>";
out << "<td>" << peer.write_total() << "</td>";
out << "<td>" << peer.read_total() << "</td>";
out << "<td>";
if(peer.err_has() && peer.err_msg())
@ -675,8 +679,10 @@ console_cmd__net__peer(opt &out, const string_view &line)
out << " " << setw(2) << right << peer.link_count() << " L"
<< " " << setw(2) << right << peer.tag_count() << " T"
<< " " << setw(9) << right << peer.write_size() << " UP Q"
<< " " << setw(9) << right << peer.read_size() << " DN Q"
<< " " << setw(9) << right << peer.write_size() << " UP Q"
<< " " << setw(9) << right << peer.read_size() << " DN Q"
<< " " << setw(9) << right << peer.write_total() << " UP"
<< " " << setw(9) << right << peer.read_total() << " DN"
;
if(peer.err_has() && peer.err_msg())