all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Stoiko Ivanov <s.ivanov@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH zfsonlinux] arcstat/arc_summary: workaround for stats only present with cache device
Date: Thu, 11 Nov 2021 18:17:25 +0100	[thread overview]
Message-ID: <20211111171725.127010-1-s.ivanov@proxmox.com> (raw)

This commit updates Thomas' patch to deal with a 2.0 kernel module
with 2.1 arc_summary/arcstat

Tested by adding a cache-device to a zpool and running both commands
to verify no KeyError exception is thrown.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
---
I hope the fixup in the patch and commit-log above my S-o-b tag is ok
- else feel free to adapt (can also gladly resend)

 ...-guard-access-to-l2arc-MFU-MRU-stats.patch | 63 +++++++++++++++++--
 1 file changed, 58 insertions(+), 5 deletions(-)

diff --git a/debian/patches/0011-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch b/debian/patches/0011-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch
index ead0943c..6a704848 100644
--- a/debian/patches/0011-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch
+++ b/debian/patches/0011-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch
@@ -15,13 +15,18 @@ should be better to show some possible wrong data for new stat-keys
 than throwing an exception.
 
 Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
+
+also move l2_mfu_asize  l2_mru_asize l2_prefetch_asize
+l2_bufc_data_asize l2_bufc_metadata_asize to .get accessor
+(these are only present with a cache device in the pool)
+Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
 ---
- cmd/arc_summary/arc_summary3 | 8 ++++----
- cmd/arcstat/arcstat.in       | 4 ++--
- 2 files changed, 6 insertions(+), 6 deletions(-)
+ cmd/arc_summary/arc_summary3 | 28 ++++++++++++++--------------
+ cmd/arcstat/arcstat.in       | 14 +++++++-------
+ 2 files changed, 21 insertions(+), 21 deletions(-)
 
 diff --git a/cmd/arc_summary/arc_summary3 b/cmd/arc_summary/arc_summary3
-index 7b28012ed..0a81b2bc7 100755
+index 7b28012ed..fe6a6d9e2 100755
 --- a/cmd/arc_summary/arc_summary3
 +++ b/cmd/arc_summary/arc_summary3
 @@ -617,13 +617,13 @@ def section_arc(kstats_dict):
@@ -42,8 +47,39 @@ index 7b28012ed..0a81b2bc7 100755
      prt_i1('L2 ineligible evictions:',
             f_bytes(arc_stats['evict_l2_ineligible']))
      print()
+@@ -765,20 +765,20 @@ def section_l2arc(kstats_dict):
+            f_perc(arc_stats['l2_hdr_size'], arc_stats['l2_size']),
+            f_bytes(arc_stats['l2_hdr_size']))
+     prt_i2('MFU allocated size:',
+-           f_perc(arc_stats['l2_mfu_asize'], arc_stats['l2_asize']),
+-           f_bytes(arc_stats['l2_mfu_asize']))
++           f_perc(arc_stats.get('l2_mfu_asize', 0), arc_stats['l2_asize']),
++           f_bytes(arc_stats.get('l2_mfu_asize', 0))) # 2.0 module compat
+     prt_i2('MRU allocated size:',
+-           f_perc(arc_stats['l2_mru_asize'], arc_stats['l2_asize']),
+-           f_bytes(arc_stats['l2_mru_asize']))
++           f_perc(arc_stats.get('l2_mru_asize', 0), arc_stats['l2_asize']),
++           f_bytes(arc_stats.get('l2_mru_asize', 0))) # 2.0 module compat
+     prt_i2('Prefetch allocated size:',
+-           f_perc(arc_stats['l2_prefetch_asize'], arc_stats['l2_asize']),
+-           f_bytes(arc_stats['l2_prefetch_asize']))
++           f_perc(arc_stats.get('l2_prefetch_asize', 0), arc_stats['l2_asize']),
++           f_bytes(arc_stats.get('l2_prefetch_asize',0))) # 2.0 module compat
+     prt_i2('Data (buffer content) allocated size:',
+-           f_perc(arc_stats['l2_bufc_data_asize'], arc_stats['l2_asize']),
+-           f_bytes(arc_stats['l2_bufc_data_asize']))
++           f_perc(arc_stats.get('l2_bufc_data_asize', 0), arc_stats['l2_asize']),
++           f_bytes(arc_stats.get('l2_bufc_data_asize', 0))) # 2.0 module compat
+     prt_i2('Metadata (buffer content) allocated size:',
+-           f_perc(arc_stats['l2_bufc_metadata_asize'], arc_stats['l2_asize']),
+-           f_bytes(arc_stats['l2_bufc_metadata_asize']))
++           f_perc(arc_stats.get('l2_bufc_metadata_asize', 0), arc_stats['l2_asize']),
++           f_bytes(arc_stats.get('l2_bufc_metadata_asize', 0))) # 2.0 module compat
+ 
+     print()
+     prt_1('L2ARC breakdown:', f_hits(l2_access_total))
 diff --git a/cmd/arcstat/arcstat.in b/cmd/arcstat/arcstat.in
-index cd9a803a2..6878419e7 100755
+index cd9a803a2..ea45dc602 100755
 --- a/cmd/arcstat/arcstat.in
 +++ b/cmd/arcstat/arcstat.in
 @@ -482,8 +482,8 @@ def calculate():
@@ -57,3 +93,20 @@ index cd9a803a2..6878419e7 100755
      v["el2inel"] = d["evict_l2_ineligible"] // sint
      v["mtxmis"] = d["mutex_miss"] // sint
  
+@@ -498,11 +498,11 @@ def calculate():
+         v["l2size"] = cur["l2_size"]
+         v["l2bytes"] = d["l2_read_bytes"] // sint
+ 
+-        v["l2pref"] = cur["l2_prefetch_asize"]
+-        v["l2mfu"] = cur["l2_mfu_asize"]
+-        v["l2mru"] = cur["l2_mru_asize"]
+-        v["l2data"] = cur["l2_bufc_data_asize"]
+-        v["l2meta"] = cur["l2_bufc_metadata_asize"]
++        v["l2pref"] = cur.get("l2_prefetch_asize", 0)
++        v["l2mfu"] = cur.get("l2_mfu_asize", 0)
++        v["l2mru"] = cur.get("l2_mru_asize", 0)
++        v["l2data"] = cur.get("l2_bufc_data_asize", 0)
++        v["l2meta"] = cur.get("l2_bufc_metadata_asize", 0)
+         v["l2pref%"] = 100 * v["l2pref"] // v["l2asize"]
+         v["l2mfu%"] = 100 * v["l2mfu"] // v["l2asize"]
+         v["l2mru%"] = 100 * v["l2mru"] // v["l2asize"]
-- 
2.30.2





             reply	other threads:[~2021-11-11 17:17 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-11 17:17 Stoiko Ivanov [this message]
2021-11-11 17:22 ` [pve-devel] applied: " Thomas Lamprecht

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211111171725.127010-1-s.ivanov@proxmox.com \
    --to=s.ivanov@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal