Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions lustre-collector/src/fixtures/osd.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
osd-ldiskfs.fs-OST0003.stats=
snapshot_time 1750226041.107594239 secs.nsecs
start_time 1750176720.831807230 secs.nsecs
elapsed_time 49320.275787009 secs.nsecs
osd-ldiskfs.MGS.filesfree=32531
osd-ldiskfs.fs-MDT0000.filesfree=1885343
osd-ldiskfs.fs-OST0000.filesfree=39110
Expand Down
16 changes: 16 additions & 0 deletions lustre-collector/src/fixtures/osd_active.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
osd-ldiskfs.ai400x2-OST0003.stats=
snapshot_time 1750226041.107629473 secs.nsecs
start_time 1750176720.390243856 secs.nsecs
elapsed_time 49320.717385617 secs.nsecs
get_page 375 samples [usecs] 1 23 2956 28656
cache_access 297 samples [pages] 830 1024 303934
cache_hit 0 samples [pages] 0 0 0
cache_miss 297 samples [pages] 830 1024 303934
osd-ldiskfs.MGS.filesfree=130871
osd-ldiskfs.ai400x2-MDT0000.filesfree=97713887
osd-ldiskfs.ai400x2-OST0000.filesfree=1073740846
osd-ldiskfs.ai400x2-OST0001.filesfree=1073740847
osd-ldiskfs.ai400x2-OST0001.stats=
snapshot_time 1750226041.107629473 secs.nsecs
start_time 1750176720.390243856 secs.nsecs
elapsed_time 49320.717385617 secs.nsecs
get_page 375 samples [usecs] 1 23 2956 28656
cache_access 297 samples [pages] 830 1024 303934
cache_hit 123 samples [pages] 0 1024 303934
cache_miss 297 samples [pages] 830 1024 303934
osd-ldiskfs.MGS.filestotal=131072
osd-ldiskfs.ai400x2-MDT0000.filestotal=97714176
osd-ldiskfs.ai400x2-OST0000.filestotal=1073741824
Expand Down
15 changes: 14 additions & 1 deletion lustre-collector/src/osd_parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ use crate::{
base_parsers::{digits, param, period, target, till_newline, till_period},
brw_stats_parser::brw_stats,
quota::quota_parser::quota_stats_osd,
types::{BrwStats, Param, Record, Target, TargetStat, TargetStats, TargetVariant},
stats_parser::stats,
types::{BrwStats, Param, Record, Stat, Target, TargetStat, TargetStats, TargetVariant},
};
use combine::{
Parser, attempt, choice,
Expand All @@ -16,6 +17,7 @@ use combine::{
stream::{Stream, StreamErrorFor},
};

pub(crate) const OSD: &str = "osd";
pub(crate) const FILES_FREE: &str = "filesfree";
pub(crate) const FILES_TOTAL: &str = "filestotal";
pub(crate) const KBYTES_AVAIL: &str = "kbytesavail";
Expand All @@ -24,13 +26,15 @@ pub(crate) const KBYTES_TOTAL: &str = "kbytestotal";
pub(crate) const FS_TYPE: &str = "fstype";

pub(crate) const BRW_STATS: &str = "brw_stats";
pub(crate) const STATS: &str = "stats";

pub(crate) const QUOTA_ACCT_GRP: &str = "quota_slave.acct_group";
pub(crate) const QUOTA_ACCT_USR: &str = "quota_slave.acct_user";
pub(crate) const QUOTA_ACCT_PRJ: &str = "quota_slave.acct_project";

pub(crate) fn params() -> Vec<String> {
vec![
format!("osd-*.*.{STATS}"),
format!("osd-*.*.{FILES_FREE}"),
format!("osd-*.*.{FILES_TOTAL}"),
format!("osd-*.*.{FS_TYPE}"),
Expand Down Expand Up @@ -60,6 +64,8 @@ enum OsdStat {
KBytesTotal(u64),
BrwStats(Vec<BrwStats>),
QuotaStats(QuotaStatsOsd),
/// Generic OSD statistics (performance counters, operation counts)
Stats(Vec<Stat>),
}

fn target_and_variant<I>() -> impl Parser<I, Output = (Target, TargetVariant)>
Expand Down Expand Up @@ -88,6 +94,7 @@ where
I::Error: ParseError<I::Token, I::Range, I::Position>,
{
choice((
(param(STATS), stats().map(OsdStat::Stats)),
(param(BRW_STATS), brw_stats().map(OsdStat::BrwStats)),
(
param(FILES_FREE),
Expand Down Expand Up @@ -153,6 +160,12 @@ where
{
(target_and_variant(), osd_stat())
.map(|((target, kind), (param, stat))| match stat {
OsdStat::Stats(value) => TargetStats::Stats(TargetStat {
kind,
target,
param,
value,
}),
OsdStat::FilesFree(value) => TargetStats::FilesFree(TargetStat {
kind,
target,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,86 @@
---
source: src/osd_parser.rs
source: lustre-collector/src/osd_parser.rs
expression: result
---
(
[
Target(
Stats(
TargetStat {
kind: Ost,
param: Param(
"stats",
),
target: Target(
"ai400x2-OST0003",
),
value: [
Stat {
name: "get_page",
units: "usecs",
samples: 375,
min: Some(
1,
),
max: Some(
23,
),
sum: Some(
2956,
),
sumsquare: Some(
28656,
),
},
Stat {
name: "cache_access",
units: "pages",
samples: 297,
min: Some(
830,
),
max: Some(
1024,
),
sum: Some(
303934,
),
sumsquare: None,
},
Stat {
name: "cache_hit",
units: "pages",
samples: 0,
min: Some(
0,
),
max: Some(
0,
),
sum: Some(
0,
),
sumsquare: None,
},
Stat {
name: "cache_miss",
units: "pages",
samples: 297,
min: Some(
830,
),
max: Some(
1024,
),
sum: Some(
303934,
),
sumsquare: None,
},
],
},
),
),
Target(
FilesFree(
TargetStat {
Expand Down Expand Up @@ -60,6 +137,83 @@ expression: result
},
),
),
Target(
Stats(
TargetStat {
kind: Ost,
param: Param(
"stats",
),
target: Target(
"ai400x2-OST0001",
),
value: [
Stat {
name: "get_page",
units: "usecs",
samples: 375,
min: Some(
1,
),
max: Some(
23,
),
sum: Some(
2956,
),
sumsquare: Some(
28656,
),
},
Stat {
name: "cache_access",
units: "pages",
samples: 297,
min: Some(
830,
),
max: Some(
1024,
),
sum: Some(
303934,
),
sumsquare: None,
},
Stat {
name: "cache_hit",
units: "pages",
samples: 123,
min: Some(
0,
),
max: Some(
1024,
),
sum: Some(
303934,
),
sumsquare: None,
},
Stat {
name: "cache_miss",
units: "pages",
samples: 297,
min: Some(
830,
),
max: Some(
1024,
),
sum: Some(
303934,
),
sumsquare: None,
},
],
},
),
),
Target(
FilesTotal(
TargetStat {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,23 @@
---
source: src/osd_parser.rs
source: lustre-collector/src/osd_parser.rs
expression: result
---
(
[
Target(
Stats(
TargetStat {
kind: Ost,
param: Param(
"stats",
),
target: Target(
"fs-OST0003",
),
value: [],
},
),
),
Target(
FilesFree(
TargetStat {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ expression: params()
"lnet_memused",
"health_check",
"mdt.*.exports.*.uuid",
"osd-*.*.stats",
"osd-*.*.filesfree",
"osd-*.*.filestotal",
"osd-*.*.fstype",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
source: src/stats_parser.rs
source: lustre-collector/src/stats_parser.rs
expression: result
---
(
Expand Down Expand Up @@ -109,6 +109,68 @@ expression: result
sum: None,
sumsquare: None,
},
Stat {
name: "get_page",
units: "usecs",
samples: 13,
min: Some(
0,
),
max: Some(
3,
),
sum: Some(
6,
),
sumsquare: Some(
18,
),
},
Stat {
name: "cache_access",
units: "pages",
samples: 4,
min: Some(
1,
),
max: Some(
25,
),
sum: Some(
52,
),
sumsquare: None,
},
Stat {
name: "cache_hit",
units: "pages",
samples: 4,
min: Some(
1,
),
max: Some(
25,
),
sum: Some(
52,
),
sumsquare: None,
},
Stat {
name: "many_credits",
units: "reqs",
samples: 1,
min: Some(
1,
),
max: Some(
1,
),
sum: Some(
1,
),
sumsquare: None,
},
],
"",
)
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
source: lustre-collector/src/lib.rs
expression: "xs.join(\" \")"
---
memused memused_max lnet_memused health_check mdt.*.exports.*.uuid osd-*.*.filesfree osd-*.*.filestotal osd-*.*.fstype osd-*.*.kbytesavail osd-*.*.kbytesfree osd-*.*.kbytestotal osd-*.*.brw_stats osd-*.*.quota_slave.acct_group osd-*.*.quota_slave.acct_user osd-*.*.quota_slave.acct_project mgs.*.mgs.stats mgs.*.mgs.threads_max mgs.*.mgs.threads_min mgs.*.mgs.threads_started mgs.*.num_exports obdfilter.*OST*.stats obdfilter.*OST*.num_exports obdfilter.*OST*.tot_dirty obdfilter.*OST*.tot_granted obdfilter.*OST*.tot_pending obdfilter.*OST*.exports.*.stats ost.OSS.ost.stats ost.OSS.ost_io.stats ost.OSS.ost_create.stats ost.OSS.ost_out.stats ost.OSS.ost_seq.stats mds.MDS.mdt.stats mds.MDS.mdt_fld.stats mds.MDS.mdt_io.stats mds.MDS.mdt_out.stats mds.MDS.mdt_readpage.stats mds.MDS.mdt_seqm.stats mds.MDS.mdt_seqs.stats mds.MDS.mdt_setattr.stats mdt.*.md_stats mdt.*MDT*.num_exports mdt.*MDT*.exports.*.stats ldlm.namespaces.{mdt-,filter-}*.contended_locks ldlm.namespaces.{mdt-,filter-}*.contention_seconds ldlm.namespaces.{mdt-,filter-}*.ctime_age_limit ldlm.namespaces.{mdt-,filter-}*.early_lock_cancel ldlm.namespaces.{mdt-,filter-}*.lock_count ldlm.namespaces.{mdt-,filter-}*.lock_timeouts ldlm.namespaces.{mdt-,filter-}*.lock_unused_count ldlm.namespaces.{mdt-,filter-}*.lru_max_age ldlm.namespaces.{mdt-,filter-}*.lru_size ldlm.namespaces.{mdt-,filter-}*.max_nolock_bytes ldlm.namespaces.{mdt-,filter-}*.max_parallel_ast ldlm.namespaces.{mdt-,filter-}*.resource_count ldlm.services.ldlm_canceld.stats ldlm.services.ldlm_cbd.stats llite.*.stats mdd.*.changelog_users qmt.*.*.glb-usr qmt.*.*.glb-prj qmt.*.*.glb-grp nodemap.*.dt_stats nodemap.*.md_stats
memused memused_max lnet_memused health_check mdt.*.exports.*.uuid osd-*.*.stats osd-*.*.filesfree osd-*.*.filestotal osd-*.*.fstype osd-*.*.kbytesavail osd-*.*.kbytesfree osd-*.*.kbytestotal osd-*.*.brw_stats osd-*.*.quota_slave.acct_group osd-*.*.quota_slave.acct_user osd-*.*.quota_slave.acct_project mgs.*.mgs.stats mgs.*.mgs.threads_max mgs.*.mgs.threads_min mgs.*.mgs.threads_started mgs.*.num_exports obdfilter.*OST*.stats obdfilter.*OST*.num_exports obdfilter.*OST*.tot_dirty obdfilter.*OST*.tot_granted obdfilter.*OST*.tot_pending obdfilter.*OST*.exports.*.stats ost.OSS.ost.stats ost.OSS.ost_io.stats ost.OSS.ost_create.stats ost.OSS.ost_out.stats ost.OSS.ost_seq.stats mds.MDS.mdt.stats mds.MDS.mdt_fld.stats mds.MDS.mdt_io.stats mds.MDS.mdt_out.stats mds.MDS.mdt_readpage.stats mds.MDS.mdt_seqm.stats mds.MDS.mdt_seqs.stats mds.MDS.mdt_setattr.stats mdt.*.md_stats mdt.*MDT*.num_exports mdt.*MDT*.exports.*.stats ldlm.namespaces.{mdt-,filter-}*.contended_locks ldlm.namespaces.{mdt-,filter-}*.contention_seconds ldlm.namespaces.{mdt-,filter-}*.ctime_age_limit ldlm.namespaces.{mdt-,filter-}*.early_lock_cancel ldlm.namespaces.{mdt-,filter-}*.lock_count ldlm.namespaces.{mdt-,filter-}*.lock_timeouts ldlm.namespaces.{mdt-,filter-}*.lock_unused_count ldlm.namespaces.{mdt-,filter-}*.lru_max_age ldlm.namespaces.{mdt-,filter-}*.lru_size ldlm.namespaces.{mdt-,filter-}*.max_nolock_bytes ldlm.namespaces.{mdt-,filter-}*.max_parallel_ast ldlm.namespaces.{mdt-,filter-}*.resource_count ldlm.services.ldlm_canceld.stats ldlm.services.ldlm_cbd.stats llite.*.stats mdd.*.changelog_users qmt.*.*.glb-usr qmt.*.*.glb-prj qmt.*.*.glb-grp nodemap.*.dt_stats nodemap.*.md_stats
Loading
Loading