From: Thomas Lamprecht <t.lamprecht@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
Matthias Heiserer <m.heiserer@proxmox.com>
Subject: Re: [pve-devel] [PATCH v2 common 1/1] fix #1454: meminfo: also return arcsize
Date: Thu, 13 Apr 2023 12:26:49 +0200 [thread overview]
Message-ID: <b1d5285a-cfe8-e0b4-a457-c4a757d584fe@proxmox.com> (raw)
In-Reply-To: <20230328124929.161040-2-m.heiserer@proxmox.com>
Am 28/03/2023 um 14:49 schrieb Matthias Heiserer:
> Signed-off-by: Matthias Heiserer <m.heiserer@proxmox.com>
> ---
> Changes from v1:
> None
>
> src/PVE/ProcFSTools.pm | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/src/PVE/ProcFSTools.pm b/src/PVE/ProcFSTools.pm
> index eb4b0f5..0686c34 100644
> --- a/src/PVE/ProcFSTools.pm
> +++ b/src/PVE/ProcFSTools.pm
> @@ -283,6 +283,7 @@ sub read_meminfo {
> swaptotal => 0,
> swapfree => 0,
> swapused => 0,
> + arcsize => 0,
> };
>
> my $fh = IO::File->new ("/proc/meminfo", "r");
> @@ -307,6 +308,11 @@ sub read_meminfo {
> my $spages = PVE::Tools::file_read_firstline("/sys/kernel/mm/ksm/pages_sharing") // 0 ;
> $res->{memshared} = int($spages) * 4096;
>
> + my $arcstats = PVE::Tools::file_get_contents("/proc/spl/kstat/zfs/arcstats");
file_get_contents dies if the file isn't there, which might happen e.g., on PMG or if
one disables ZFS – why ever that would be.
so rather do:
my $arcstats = eval { PVE::Tools::file_get_contents("/proc/spl/kstat/zfs/arcstats") };
(just ignore the error, alternatively we could set a flag on ENOENT to avoid querying that
the next time, but that would be just an optimization).
> + if ($arcstats && $arcstats =~ m/size\s+\d+\s+(\d+)/m) {
this match is rather brittle as there are multiple lines with size, e.g:
grep -P 'size\s+\d+\s+(\d+)' /proc/spl/kstat/zfs/arcstats
size 4 5356816
compressed_size 4 221696
uncompressed_size 4 5079552
overhead_size 4 4947968
hdr_size 4 29520
data_size 4 0
metadata_size 4 5169664
dbuf_size 4 38016
dnode_size 4 93248
bonus_size 4 14080
anon_size 4 0
mru_size 4 2696704
mru_ghost_size 4 0
mfu_size 4 2472960
mfu_ghost_size 4 0
l2_prefetch_asize 4 0
l2_mru_asize 4 0
l2_mfu_asize 4 0
l2_bufc_data_asize 4 0
l2_bufc_metadata_asize 4 0
l2_size 4 0
l2_asize 4 0
l2_hdr_size 4 0
l2_log_blk_avg_asize 4 0
l2_log_blk_asize 4 0
l2_rebuild_size 4 0
l2_rebuild_asize 4 0
arc_raw_size 4 0
abd_chunk_waste_size 4 12288
so it hard depends on ZFS never changing the existing order or adding another field that
matches before the actual size one. So please add start/end anchors, e.g.:
if ($arcstats && $arcstats =~ m/^size\s+\d+\s+(\d+)$/m) {
> + $res->{arcsize} = int ($1);
nit: extra whitespace after `int` and before the parenthesis.
> + }
> +
> return $res;
> }
>
next prev parent reply other threads:[~2023-04-13 10:27 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-28 12:49 [pve-devel] [PATCH v2 common 0/1] fix #1454: ARC in Node Summary Matthias Heiserer
2023-03-28 12:49 ` [pve-devel] [PATCH v2 common 1/1] fix #1454: meminfo: also return arcsize Matthias Heiserer
2023-04-13 10:26 ` Thomas Lamprecht [this message]
2023-03-28 12:49 ` [pve-devel] [PATCH v2 manager 1/2] fix #1454: node/status: return arc size Matthias Heiserer
2023-03-28 12:49 ` [pve-devel] [PATCH v2 widget-toolkit] fix #1454: InfoWidget for Memory Matthias Heiserer
2023-04-13 15:48 ` Stefan Sterz
2023-03-28 12:49 ` [pve-devel] [PATCH v2 manager 2/2] fix #1454: ui: node summary: show arc alongside RAM Matthias Heiserer
2023-03-28 16:08 ` [pve-devel] [PATCH v2 common 0/1] fix #1454: ARC in Node Summary Max Carrara
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=b1d5285a-cfe8-e0b4-a457-c4a757d584fe@proxmox.com \
--to=t.lamprecht@proxmox.com \
--cc=m.heiserer@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox