From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Wed, 10 Nov 2021 08:00:13 +0100 Subject: [PATCH] arc stat/summary: guard access to l2arc MFU/MRU stats In 2.1 commit 085321621e79a75bea41c2b6511da6ebfbf2ba0a added printing MFU/MRU stats, but those keys are not available in 2.0, meaning it may break there due to python bailing out on the dict access. simply guard those problematic usage line by checking the availability of the respective keys in the dict first to avoid the pythonic exception, not much more we can do. Signed-off-by: Thomas Lamprecht --- cmd/arc_summary/arc_summary3 | 18 ++++++++++-------- cmd/arcstat/arcstat.in | 6 ++++-- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/cmd/arc_summary/arc_summary3 b/cmd/arc_summary/arc_summary3 index 7b28012ed..1acedc884 100755 --- a/cmd/arc_summary/arc_summary3 +++ b/cmd/arc_summary/arc_summary3 @@ -616,14 +616,16 @@ def section_arc(kstats_dict): f_hits(arc_stats['evict_l2_skip'])) prt_i1('L2 cached evictions:', f_bytes(arc_stats['evict_l2_cached'])) prt_i1('L2 eligible evictions:', f_bytes(arc_stats['evict_l2_eligible'])) - prt_i2('L2 eligible MFU evictions:', - f_perc(arc_stats['evict_l2_eligible_mfu'], - arc_stats['evict_l2_eligible']), - f_bytes(arc_stats['evict_l2_eligible_mfu'])) - prt_i2('L2 eligible MRU evictions:', - f_perc(arc_stats['evict_l2_eligible_mru'], - arc_stats['evict_l2_eligible']), - f_bytes(arc_stats['evict_l2_eligible_mru'])) + if 'evict_l2_eligible_mfu' in arc_stats: + prt_i2('L2 eligible MFU evictions:', + f_perc(arc_stats['evict_l2_eligible_mfu'], + arc_stats['evict_l2_eligible']), + f_bytes(arc_stats['evict_l2_eligible_mfu'])) + if 'evict_l2_eligible_mru' in arc_stats: + prt_i2('L2 eligible MRU evictions:', + f_perc(arc_stats['evict_l2_eligible_mru'], + arc_stats['evict_l2_eligible']), + f_bytes(arc_stats['evict_l2_eligible_mru'])) prt_i1('L2 ineligible evictions:', f_bytes(arc_stats['evict_l2_ineligible'])) print() diff --git a/cmd/arcstat/arcstat.in b/cmd/arcstat/arcstat.in index 9e7c52a6c..b236ac333 100755 --- a/cmd/arcstat/arcstat.in +++ b/cmd/arcstat/arcstat.in @@ -482,8 +482,10 @@ def calculate(): v["el2skip"] = d["evict_l2_skip"] / sint v["el2cach"] = d["evict_l2_cached"] / sint v["el2el"] = d["evict_l2_eligible"] / sint - v["el2mfu"] = d["evict_l2_eligible_mfu"] / sint - v["el2mru"] = d["evict_l2_eligible_mru"] / sint + if "evict_l2_eligible_mfu" in v: + v["el2mfu"] = d["evict_l2_eligible_mfu"] / sint + if "evict_l2_eligible_mru" in v: + v["el2mru"] = d["evict_l2_eligible_mru"] / sint v["el2inel"] = d["evict_l2_ineligible"] / sint v["mtxmis"] = d["mutex_miss"] / sint