Skip to content

Commit eff2c27

Browse files
committed
Add sector plotting metrics to farmer
1 parent 4b40ae4 commit eff2c27

File tree

4 files changed

+118
-12
lines changed

4 files changed

+118
-12
lines changed

crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -703,15 +703,30 @@ where
703703
let farmer_metrics = farmer_metrics.clone();
704704

705705
move |(_sector_index, sector_state)| match sector_state {
706+
SectorUpdate::Plotting(SectorPlottingDetails::Starting { .. }) => {
707+
farmer_metrics.sector_plotting.inc();
708+
}
709+
SectorUpdate::Plotting(SectorPlottingDetails::Downloading) => {
710+
farmer_metrics.sector_downloading.inc();
711+
}
706712
SectorUpdate::Plotting(SectorPlottingDetails::Downloaded(time)) => {
707713
farmer_metrics
708714
.observe_sector_downloading_time(&single_disk_farm_id, time);
715+
farmer_metrics.sector_downloaded.inc();
716+
}
717+
SectorUpdate::Plotting(SectorPlottingDetails::Encoding) => {
718+
farmer_metrics.sector_encoding.inc();
709719
}
710720
SectorUpdate::Plotting(SectorPlottingDetails::Encoded(time)) => {
711721
farmer_metrics.observe_sector_encoding_time(&single_disk_farm_id, time);
722+
farmer_metrics.sector_encoded.inc();
723+
}
724+
SectorUpdate::Plotting(SectorPlottingDetails::Writing) => {
725+
farmer_metrics.sector_writing.inc();
712726
}
713-
SectorUpdate::Plotting(SectorPlottingDetails::Wrote(time)) => {
727+
SectorUpdate::Plotting(SectorPlottingDetails::Written(time)) => {
714728
farmer_metrics.observe_sector_writing_time(&single_disk_farm_id, time);
729+
farmer_metrics.sector_written.inc();
715730
}
716731
SectorUpdate::Plotting(SectorPlottingDetails::Finished {
717732
plotted_sector,
@@ -720,6 +735,7 @@ where
720735
}) => {
721736
on_plotted_sector_callback(plotted_sector, old_plotted_sector);
722737
farmer_metrics.observe_sector_plotting_time(&single_disk_farm_id, time);
738+
farmer_metrics.sector_plotted.inc();
723739
}
724740
_ => {}
725741
}

crates/subspace-farmer/src/bin/subspace-farmer/commands/farm/metrics.rs

Lines changed: 98 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,32 @@
1+
use prometheus_client::metrics::counter::Counter;
12
use prometheus_client::metrics::family::Family;
23
use prometheus_client::metrics::histogram::{exponential_buckets, Histogram};
34
use prometheus_client::registry::{Registry, Unit};
5+
use std::sync::atomic::AtomicU64;
46
use std::time::Duration;
57
use subspace_farmer::single_disk_farm::farming::ProvingResult;
68
use subspace_farmer::single_disk_farm::SingleDiskFarmId;
79

810
#[derive(Debug, Clone)]
9-
pub(crate) struct FarmerMetrics {
11+
pub(super) struct FarmerMetrics {
1012
auditing_time: Family<Vec<(String, String)>, Histogram>,
1113
proving_time: Family<Vec<(String, String)>, Histogram>,
1214
sector_downloading_time: Family<Vec<(String, String)>, Histogram>,
1315
sector_encoding_time: Family<Vec<(String, String)>, Histogram>,
1416
sector_writing_time: Family<Vec<(String, String)>, Histogram>,
1517
sector_plotting_time: Family<Vec<(String, String)>, Histogram>,
18+
pub(super) sector_downloading: Counter<u64, AtomicU64>,
19+
pub(super) sector_downloaded: Counter<u64, AtomicU64>,
20+
pub(super) sector_encoding: Counter<u64, AtomicU64>,
21+
pub(super) sector_encoded: Counter<u64, AtomicU64>,
22+
pub(super) sector_writing: Counter<u64, AtomicU64>,
23+
pub(super) sector_written: Counter<u64, AtomicU64>,
24+
pub(super) sector_plotting: Counter<u64, AtomicU64>,
25+
pub(super) sector_plotted: Counter<u64, AtomicU64>,
1626
}
1727

1828
impl FarmerMetrics {
19-
pub(crate) fn new(registry: &mut Registry) -> Self {
29+
pub(super) fn new(registry: &mut Registry) -> Self {
2030
let sub_registry = registry.sub_registry_with_prefix("subspace_farmer");
2131

2232
let auditing_time = Family::<_, _>::new_with_constructor(|| {
@@ -85,17 +95,97 @@ impl FarmerMetrics {
8595
sector_plotting_time.clone(),
8696
);
8797

98+
let sector_downloading = Counter::<_, _>::default();
99+
100+
sub_registry.register_with_unit(
101+
"sector_downloading_counter",
102+
"Number of sectors being downloaded",
103+
Unit::Other("sectors".to_string()),
104+
sector_downloading.clone(),
105+
);
106+
107+
let sector_downloaded = Counter::<_, _>::default();
108+
109+
sub_registry.register_with_unit(
110+
"sector_downloaded_counter",
111+
"Number of sectors being downloaded",
112+
Unit::Other("sectors".to_string()),
113+
sector_downloaded.clone(),
114+
);
115+
116+
let sector_encoding = Counter::<_, _>::default();
117+
118+
sub_registry.register_with_unit(
119+
"sector_encoding_counter",
120+
"Number of sectors being downloaded",
121+
Unit::Other("sectors".to_string()),
122+
sector_encoding.clone(),
123+
);
124+
125+
let sector_encoded = Counter::<_, _>::default();
126+
127+
sub_registry.register_with_unit(
128+
"sector_encoded_counter",
129+
"Number of sectors being downloaded",
130+
Unit::Other("sectors".to_string()),
131+
sector_encoded.clone(),
132+
);
133+
134+
let sector_writing = Counter::<_, _>::default();
135+
136+
sub_registry.register_with_unit(
137+
"sector_writing_counter",
138+
"Number of sectors being downloaded",
139+
Unit::Other("sectors".to_string()),
140+
sector_writing.clone(),
141+
);
142+
143+
let sector_written = Counter::<_, _>::default();
144+
145+
sub_registry.register_with_unit(
146+
"sector_written_counter",
147+
"Number of sectors being downloaded",
148+
Unit::Other("sectors".to_string()),
149+
sector_written.clone(),
150+
);
151+
152+
let sector_plotting = Counter::<_, _>::default();
153+
154+
sub_registry.register_with_unit(
155+
"sector_plotting_counter",
156+
"Number of sectors being downloaded",
157+
Unit::Other("sectors".to_string()),
158+
sector_plotting.clone(),
159+
);
160+
161+
let sector_plotted = Counter::<_, _>::default();
162+
163+
sub_registry.register_with_unit(
164+
"sector_plotted_counter",
165+
"Number of sectors being downloaded",
166+
Unit::Other("sectors".to_string()),
167+
sector_plotted.clone(),
168+
);
169+
88170
Self {
89171
auditing_time,
90172
proving_time,
91173
sector_downloading_time,
92174
sector_encoding_time,
93175
sector_writing_time,
94176
sector_plotting_time,
177+
sector_downloading,
178+
sector_downloaded,
179+
sector_encoding,
180+
sector_encoded,
181+
sector_writing,
182+
sector_written,
183+
sector_plotting,
184+
sector_plotted,
95185
}
96186
}
97187

98-
pub(crate) fn observe_auditing_time(
188+
pub(super) fn observe_auditing_time(
99189
&self,
100190
single_disk_farm_id: &SingleDiskFarmId,
101191
time: &Duration,
@@ -108,7 +198,7 @@ impl FarmerMetrics {
108198
.observe(time.as_secs_f64());
109199
}
110200

111-
pub(crate) fn observe_proving_time(
201+
pub(super) fn observe_proving_time(
112202
&self,
113203
single_disk_farm_id: &SingleDiskFarmId,
114204
time: &Duration,
@@ -122,7 +212,7 @@ impl FarmerMetrics {
122212
.observe(time.as_secs_f64());
123213
}
124214

125-
pub(crate) fn observe_sector_downloading_time(
215+
pub(super) fn observe_sector_downloading_time(
126216
&self,
127217
single_disk_farm_id: &SingleDiskFarmId,
128218
time: &Duration,
@@ -135,7 +225,7 @@ impl FarmerMetrics {
135225
.observe(time.as_secs_f64());
136226
}
137227

138-
pub(crate) fn observe_sector_encoding_time(
228+
pub(super) fn observe_sector_encoding_time(
139229
&self,
140230
single_disk_farm_id: &SingleDiskFarmId,
141231
time: &Duration,
@@ -148,7 +238,7 @@ impl FarmerMetrics {
148238
.observe(time.as_secs_f64());
149239
}
150240

151-
pub(crate) fn observe_sector_writing_time(
241+
pub(super) fn observe_sector_writing_time(
152242
&self,
153243
single_disk_farm_id: &SingleDiskFarmId,
154244
time: &Duration,
@@ -161,7 +251,7 @@ impl FarmerMetrics {
161251
.observe(time.as_secs_f64());
162252
}
163253

164-
pub(crate) fn observe_sector_plotting_time(
254+
pub(super) fn observe_sector_plotting_time(
165255
&self,
166256
single_disk_farm_id: &SingleDiskFarmId,
167257
time: &Duration,

crates/subspace-farmer/src/single_disk_farm.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -560,8 +560,8 @@ pub enum SectorPlottingDetails {
560560
Encoded(Duration),
561561
/// Writing sector
562562
Writing,
563-
/// Wrote sector
564-
Wrote(Duration),
563+
/// Written sector
564+
Written(Duration),
565565
/// Finished plotting
566566
Finished {
567567
/// Information about plotted sector

crates/subspace-farmer/src/single_disk_farm/plotting.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ where
402402

403403
handlers.sector_update.call_simple(&(
404404
sector_index,
405-
SectorUpdate::Plotting(SectorPlottingDetails::Wrote(start.elapsed())),
405+
SectorUpdate::Plotting(SectorPlottingDetails::Written(start.elapsed())),
406406
));
407407
}
408408

0 commit comments

Comments
 (0)