I/O metrics (#224)

* feat: Proxy Node IO stats to the FE

* chore: Sync up FE

* feat: Charts for cache sizes

* feat: All graphs are in

* chore: Remove browserlist
This commit is contained in:
Maciej Hirsz
2020-01-30 15:03:19 +01:00
committed by GitHub
parent 668065c1a8
commit 19f57d71be
14 changed files with 211 additions and 21 deletions
+35 -2
View File
@@ -1,7 +1,7 @@
use serde::ser::{Serialize, Serializer, SerializeTuple};
use serde::Deserialize;
use crate::util::MeanList;
use crate::util::{MeanList, now};
pub type NodeId = usize;
pub type BlockNumber = u64;
@@ -18,12 +18,20 @@ pub struct NodeDetails {
pub network_id: Option<Box<str>>,
}
#[derive(Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
#[derive(Deserialize, Debug, Clone, Copy, PartialEq, Eq, Default)]
pub struct NodeStats {
pub peers: u64,
pub txcount: u64,
}
#[derive(Default)]
pub struct NodeIO {
pub used_state_cache_size: MeanList<f32>,
pub used_db_cache_size: MeanList<f32>,
pub disk_read_per_sec: MeanList<f32>,
pub disk_write_per_sec: MeanList<f32>,
}
#[derive(Deserialize, Debug, Clone, Copy)]
pub struct Block {
#[serde(rename = "best")]
@@ -39,6 +47,17 @@ pub struct BlockDetails {
pub propagation_time: Option<u64>,
}
impl Default for BlockDetails {
fn default() -> Self {
BlockDetails {
block: Block::zero(),
block_timestamp: now(),
block_time: 0,
propagation_time: None,
}
}
}
#[derive(Default)]
pub struct NodeHardware {
/// CPU use means
@@ -87,6 +106,20 @@ impl Serialize for NodeStats {
}
}
impl Serialize for NodeIO {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let mut tup = serializer.serialize_tuple(4)?;
tup.serialize_element(self.used_state_cache_size.slice())?;
tup.serialize_element(self.used_db_cache_size.slice())?;
tup.serialize_element(self.disk_read_per_sec.slice())?;
tup.serialize_element(self.disk_write_per_sec.slice())?;
tup.end()
}
}
impl Serialize for BlockDetails {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where