From: Breno Leitao <leitao@debian.org>
To: Maksym Kutsevol <max@kutsevol.com>
Cc: "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] netcons: Add udp send fail statistics to netconsole
Date: Tue, 27 Aug 2024 05:18:15 -0700 [thread overview]
Message-ID: <Zs3EB+p+Qq1nYObX@gmail.com> (raw)
In-Reply-To: <20240824215130.2134153-2-max@kutsevol.com>
On Sat, Aug 24, 2024 at 02:50:24PM -0700, Maksym Kutsevol wrote:
> Enhance observability of netconsole. UDP sends can fail. Start tracking at
> least two failure possibilities: ENOMEM and NET_XMIT_DROP for every target.
> Stats are exposed via an additional attribute in CONFIGFS.
>
> The exposed statistics allows easier debugging of cases when netconsole
> messages were not seen by receivers, eliminating the guesswork if the
> sender thinks that messages in question were sent out.
>
> Stats are not reset on enable/disable/change remote ip/etc, they
> belong to the netcons target itself.
>
> Signed-off-by: Maksym Kutsevol <max@kutsevol.com>
Would you mind adding a "Reported-by" me in this case?
https://lore.kernel.org/all/ZsWoUzyK5du9Ffl+@gmail.com/
> diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
> index 9c09293b5258..45c07ec7842d 100644
> --- a/drivers/net/netconsole.c
> +++ b/drivers/net/netconsole.c
> @@ -82,6 +82,13 @@ static DEFINE_SPINLOCK(target_list_lock);
> */
> static struct console netconsole_ext;
>
> +#ifdef CONFIG_NETCONSOLE_DYNAMIC
> +struct netconsole_target_stats {
> + size_t xmit_drop_count;
> + size_t enomem_count;
I am looking at other drivers, and they use a specific type for these
counters, u64_stats_sync.
if it is possible to use this format, then you can leverage the
`__u64_stats_update` helpers, and not worry about locking/overflow!?
> @@ -1015,6 +1035,25 @@ static struct notifier_block netconsole_netdev_notifier = {
> .notifier_call = netconsole_netdev_event,
> };
>
> +/**
> + * count_udp_send_stats - Classify netpoll_send_udp result and count errors.
> + * @nt: target that was sent to
> + * @result: result of netpoll_send_udp
> + *
> + * Takes the result of netpoll_send_udp and classifies the type of error that
> + * occurred. Increments statistics in nt->stats accordingly.
> + */
> +static void count_udp_send_stats(struct netconsole_target *nt, int result)
> +{
> +#ifdef CONFIG_NETCONSOLE_DYNAMIC
> + if (result == NET_XMIT_DROP) {
> + nt->stats.xmit_drop_count++;
If you change the type, you can use the `u64_stats_inc` helper here.
> @@ -1126,7 +1167,11 @@ static void send_ext_msg_udp(struct netconsole_target *nt, const char *msg,
> this_offset += this_chunk;
> }
>
> - netpoll_send_udp(&nt->np, buf, this_header + this_offset);
> + count_udp_send_stats(nt,
> + netpoll_send_udp(&nt->np,
> + buf,
> + this_header + this_offset)
> + );
as Jakub said, this is not a format that is common in the Linux kenrel.
next prev parent reply other threads:[~2024-08-27 12:18 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-24 21:50 [PATCH 1/2] netpoll: Make netpoll_send_udp return status instead of void Maksym Kutsevol
2024-08-24 21:50 ` [PATCH 2/2] netcons: Add udp send fail statistics to netconsole Maksym Kutsevol
2024-08-26 21:35 ` Jakub Kicinski
2024-08-26 23:55 ` Maksym Kutsevol
2024-08-27 13:59 ` Jakub Kicinski
2024-08-28 15:03 ` Maksym Kutsevol
2024-08-28 15:24 ` Breno Leitao
2024-08-28 15:33 ` Maksym Kutsevol
2024-08-27 6:32 ` kernel test robot
2024-08-27 9:36 ` kernel test robot
2024-08-27 12:18 ` Breno Leitao [this message]
2024-08-28 15:04 ` Maksym Kutsevol
[not found] ` <CAO6EAnVXXfQRK1xWoxO+dQwQsftw3bhOz27cQPNX=TzCutkrQQ@mail.gmail.com>
[not found] ` <Zs8//o3EDLtt+eTY@gmail.com>
2024-08-28 15:31 ` Maksym Kutsevol
2024-08-28 21:33 ` [PATCH v2 1/2] netpoll: Make netpoll_send_udp return status instead of void Maksym Kutsevol
2024-08-28 21:33 ` [PATCH v2 2/2] netcons: Add udp send fail statistics to netconsole Maksym Kutsevol
2024-08-30 8:45 ` Breno Leitao
2024-08-30 12:58 ` Maksym Kutsevol
2024-08-30 14:12 ` Breno Leitao
2024-08-30 15:37 ` Maksym Kutsevol
2024-08-28 22:57 ` [PATCH v2 1/2] netpoll: Make netpoll_send_udp return status instead of void Jakub Kicinski
2024-08-28 23:16 ` Maksym Kutsevol
2024-08-30 8:46 ` Breno Leitao
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=Zs3EB+p+Qq1nYObX@gmail.com \
--to=leitao@debian.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=max@kutsevol.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.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;
as well as URLs for NNTP newsgroup(s).