From: Saeed Mahameed <saeed@kernel.org>
To: Vladimir Oltean <olteanv@gmail.com>
Cc: "David S . Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
netdev@vger.kernel.org, Andrew Lunn <andrew@lunn.ch>,
Florian Fainelli <f.fainelli@gmail.com>,
Cong Wang <xiyou.wangcong@gmail.com>,
Stephen Hemminger <stephen@networkplumber.org>,
Eric Dumazet <edumazet@google.com>,
George McCollister <george.mccollister@gmail.com>,
Oleksij Rempel <o.rempel@pengutronix.de>,
Jay Vosburgh <j.vosburgh@gmail.com>,
Veaceslav Falico <vfalico@gmail.com>,
Andy Gospodarek <andy@greyhouse.net>,
Arnd Bergmann <arnd@arndb.de>, Taehee Yoo <ap420073@gmail.com>,
Jiri Pirko <jiri@resnulli.us>, Florian Westphal <fw@strlen.de>,
Nikolay Aleksandrov <nikolay@nvidia.com>,
Pravin B Shelar <pshelar@ovn.org>,
Sridhar Samudrala <sridhar.samudrala@intel.com>
Subject: Re: [PATCH v6 net-next 14/15] net: bonding: ensure .ndo_get_stats64 can sleep
Date: Tue, 12 Jan 2021 12:10:38 -0800 [thread overview]
Message-ID: <4c4c08e37aeff87f0dd2ea52037c32d07d2868d1.camel@kernel.org> (raw)
In-Reply-To: <20210112143710.nxpxnlcojhvqipw7@skbuf>
On Tue, 2021-01-12 at 16:37 +0200, Vladimir Oltean wrote:
> On Mon, Jan 11, 2021 at 03:38:49PM -0800, Saeed Mahameed wrote:
> > GFP_ATOMIC is a little bit aggressive especially when user daemons
> > are
> > periodically reading stats. This can be avoided.
> >
> > You can pre-allocate with GFP_KERNEL an array with an "approximate"
> > size.
> > then fill the array up with whatever slaves the the bond has at
> > that
> > moment, num_of_slaves can be less, equal or more than the array
> > you
> > just allocated but we shouldn't care ..
> >
> > something like:
> > rcu_read_lock()
> > nslaves = bond_get_num_slaves();
> > rcu_read_unlock()
> > sarray = kcalloc(nslaves, sizeof(struct bonding_slave_dev),
> > GFP_KERNEL);
> > rcu_read_lock();
> > bond_fill_slaves_array(bond, sarray); // also do: dev_hold()
> > rcu_read_unlock();
> >
> >
> > bond_get_slaves_array_stats(sarray);
> >
> > bond_put_slaves_array(sarray);
>
> I don't know what to say about acquiring RCU read lock twice and
> traversing the list of interfaces three or four times.
You can optimize this by tracking #num_slaves.
> On the other hand, what's the worst that can happen if the GFP_ATOMIC
> memory allocation fails. It's not like there is any data loss.
> User space will retry when there is less memory pressure.
Anyway Up to you, i just don't like it when we use GFP_ATOMIC when it
can be avoided, especially for periodic jobs, like stats polling..
next prev parent reply other threads:[~2021-01-12 21:37 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-09 17:26 [PATCH v6 net-next 00/15] Make .ndo_get_stats64 sleepable Vladimir Oltean
2021-01-09 17:26 ` [PATCH v6 net-next 01/15] net: mark dev_base_lock for deprecation Vladimir Oltean
2021-01-09 17:26 ` [PATCH v6 net-next 02/15] net: introduce a mutex for the netns interface lists Vladimir Oltean
2021-01-09 17:26 ` [PATCH v6 net-next 03/15] net: procfs: hold netif_lists_lock when retrieving device statistics Vladimir Oltean
2021-01-11 23:46 ` Saeed Mahameed
2021-01-12 13:44 ` Vladimir Oltean
2021-01-12 20:06 ` Saeed Mahameed
2021-01-09 17:26 ` [PATCH v6 net-next 04/15] net: sysfs: don't hold dev_base_lock while " Vladimir Oltean
2021-01-09 17:26 ` [PATCH v6 net-next 05/15] s390/appldata_net_sum: hold the netdev lists lock when " Vladimir Oltean
2021-01-09 17:26 ` [PATCH v6 net-next 06/15] parisc/led: " Vladimir Oltean
2021-01-09 17:26 ` [PATCH v6 net-next 07/15] net: remove return value from dev_get_stats Vladimir Oltean
2021-01-11 22:08 ` Saeed Mahameed
2021-01-09 17:26 ` [PATCH v6 net-next 08/15] net: allow ndo_get_stats64 to return an int error code Vladimir Oltean
2021-01-11 22:24 ` Saeed Mahameed
2021-01-11 22:43 ` Saeed Mahameed
2021-01-09 17:26 ` [PATCH v6 net-next 09/15] scsi: fcoe: propagate errors from dev_get_stats Vladimir Oltean
2021-01-09 17:26 ` [PATCH v6 net-next 10/15] net: openvswitch: " Vladimir Oltean
2021-01-09 17:26 ` [PATCH v6 net-next 11/15] net: catch " Vladimir Oltean
2021-01-11 22:54 ` Saeed Mahameed
2021-01-11 23:15 ` Vladimir Oltean
2021-01-11 23:51 ` Saeed Mahameed
2021-01-18 10:31 ` Vladimir Oltean
2021-01-09 17:26 ` [PATCH v6 net-next 12/15] net: openvswitch: ensure dev_get_stats can sleep Vladimir Oltean
2021-01-09 17:26 ` [PATCH v6 net-next 13/15] net: net_failover: ensure .ndo_get_stats64 " Vladimir Oltean
2021-01-09 17:26 ` [PATCH v6 net-next 14/15] net: bonding: " Vladimir Oltean
2021-01-11 23:38 ` Saeed Mahameed
2021-01-12 14:37 ` Vladimir Oltean
2021-01-12 20:10 ` Saeed Mahameed [this message]
2021-01-13 2:00 ` Jay Vosburgh
2021-01-09 17:26 ` [PATCH v6 net-next 15/15] net: mark ndo_get_stats64 as being able to sleep Vladimir Oltean
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=4c4c08e37aeff87f0dd2ea52037c32d07d2868d1.camel@kernel.org \
--to=saeed@kernel.org \
--cc=andrew@lunn.ch \
--cc=andy@greyhouse.net \
--cc=ap420073@gmail.com \
--cc=arnd@arndb.de \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=fw@strlen.de \
--cc=george.mccollister@gmail.com \
--cc=j.vosburgh@gmail.com \
--cc=jiri@resnulli.us \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nikolay@nvidia.com \
--cc=o.rempel@pengutronix.de \
--cc=olteanv@gmail.com \
--cc=pshelar@ovn.org \
--cc=sridhar.samudrala@intel.com \
--cc=stephen@networkplumber.org \
--cc=vfalico@gmail.com \
--cc=xiyou.wangcong@gmail.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.