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 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.