Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Jan 2011 13:14:15 -0800
From:      mdf@FreeBSD.org
To:        "Robert N. M. Watson" <rwatson@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r217830 - head/share/man/man9
Message-ID:  <AANLkTim3M7GzNmV-M9%2BPhtVRv5EK3u9AsPz=YaESv7y5@mail.gmail.com>
In-Reply-To: <161C86E9-A24C-4E71-90C6-26C3B47ACC1B@freebsd.org>
References:  <201101251739.p0PHdqKX044842@svn.freebsd.org> <alpine.BSF.2.00.1101260929430.44308@fledge.watson.org> <AANLkTimqyPYah5=yWHVxf3Us4=cBYKGkb0oyAE%2B7R-%2Bt@mail.gmail.com> <12EB1BEA-F0AF-4B2A-AFEB-9C38C7994FA8@freebsd.org> <AANLkTimn0te0NKR%2BusYC6CzxUVVaP%2BnpZKstsw1mWC7o@mail.gmail.com> <161C86E9-A24C-4E71-90C6-26C3B47ACC1B@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jan 26, 2011 at 1:10 PM, Robert N. M. Watson
<rwatson@freebsd.org> wrote:
>
> On 26 Jan 2011, at 18:29, mdf@FreeBSD.org wrote:
>
>>> I suppose an important question is now often we see this actually faili=
ng
>>
>> I don't believe we've ever seen a memory failure relating to sysctls
>> at Isilon and we've been using the equivalent of this code for a few
>> years. =A0Our machines aren't low memory but they are under memory
>> pressure sometimes.
>
> The kinds of cases I worry about are things like the tcp connection monit=
oring sysctls. Most systems have a dozen, hundred, or a thousand connection=
s. Some have half a million or a million. If we switched to requiring wirin=
g every page needed to store that list, it would do terrible things to the =
system. So really what I have in mind is: either we handle cases like that =
well, or we put in a clear warning and have obvious failure modes to catch =
the cases where it didn't work out. In practice, I think we would not want =
to switch the tcpcb/inpcb sysctl for this reason, but as people say "ah, th=
is is convenient" we need to make sure it's handled well, and easy to debug=
 problems when they do arise.
>

But I think that problem exists today using sysctl for output, since
it's non-iterative.  In fact, it's often worse today, because in
addition to the user-space buffer that needs to be large enough to
hold the output, the kernel needs to malloc(9) a buffer to hold it
before doing the one SYSCTL_OUT at the end that most routines I've
seen use.

For situations like this where there is a lot of output but it doesn't
need to be serialized by a lock held across the whole data fetch, then
yes, using sbuf_new_for_sysctl() would wire more memory.

Thanks,
matthew



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTim3M7GzNmV-M9%2BPhtVRv5EK3u9AsPz=YaESv7y5>