Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Dec 2014 12:22:09 -0800
From:      Alfred Perlstein <bright@mu.org>
To:        Ian Lepore <ian@FreeBSD.org>
Cc:        FreeBSD Stable <freebsd-stable@freebsd.org>
Subject:   Re: i386 PAE kernel works fine on 10-stable
Message-ID:  <705D7AEE-D0D6-477B-80F5-746E2B1104B2@mu.org>
In-Reply-To: <1418587165.977.0.camel@freebsd.org>
References:  <1418579278.2026.9.camel@freebsd.org> <DB7FB000-9A82-41F5-A4BD-6806AF218F01@mu.org> <1418580756.2026.12.camel@freebsd.org> <847BD158-0867-4F5F-83A9-1651E77D29EF@mu.org> <1418587165.977.0.camel@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Dec 14, 2014, at 11:59 AM, Ian Lepore wrote:

> On Sun, 2014-12-14 at 10:53 -0800, Alfred Perlstein wrote:
>> On Dec 14, 2014, at 10:12 AM, Ian Lepore wrote:
>>=20
>>> On Sun, 2014-12-14 at 10:09 -0800, Alfred Perlstein wrote:
>>>> On Dec 14, 2014, at 9:47 AM, Ian Lepore wrote:
>>>>=20
>>>>> This is an out of the blue FYI post to let people know that =
despite all
>>>>> the misinformation you'll run across if you search for information =
on
>>>>> FreeBSD PAE support, it (still) works just fine.  I've been using =
it
>>>>> (for reasons related to our build system and products at $work) =
since
>>>>> 2006, and I can say unequivocally that it works fine on 6.x, 8.x, =
and
>>>>> now 10.x (and presumably on the odd-numbered releases too but I've =
never
>>>>> tried those).
>>>>>=20
>>>>> In my most recent testing with 10-stable, I found it was =
compatible with
>>>>> drm2 and radeonkms drivers and I was able to run Xorg and gnome =
just
>>>>> fine.  All my devices, and apps, and even the linuxulator worked =
just
>>>>> fine.
>>>>>=20
>>>>> One thing that changed somewhere between 8.4 and 10.1 is that I =
had to
>>>>> add a kernel tuning option to my kernel config:
>>>>>=20
>>>>> option  KVA_PAGES=3D768	    # Default is 512
>>>>>=20
>>>>> I suspect that the most frequent use of PAE is on laptops that =
have 4gb
>>>>> and the default tuning is adequate for that.  My desktop machine =
has
>>>>> 12gb and I needed to bump up that value to avoid errors related to =
being
>>>>> unable to create new kernel stacks.
>>>>>=20
>>>>=20
>>>> There already is a #define that is bifurcated based on PAE in =
pmap.h:
>>>>=20
>>>> #ifndef KVA_PAGES
>>>> #ifdef PAE
>>>> #define KVA_PAGES       512
>>>> #else
>>>> #define KVA_PAGES       256
>>>> #endif
>>>> #endif
>>>>=20
>>>> Do you think it will harm things to apply your suggested default to =
this file?
>>>>=20
>>>=20
>>> I would have to defer to someone who actually understands just what =
that
>>> parm is tuning.  It was purely speculation on my part that the =
current
>>> default is adequate for less memory than I have, and I don't know =
what
>>> that downside might be for setting it too high.
>>>=20
>>=20
>> KVA pages is the amount of pages reserved for kernel address space:
>>=20
>> * Size of Kernel address space.  This is the number of page table =
pages
>> * (4MB each) to use for the kernel.  256 pages =3D=3D 1 Gigabyte.
>> * This **MUST** be a multiple of 4 (eg: 252, 256, 260, etc).
>> * For PAE, the page table page unit size is 2MB.  This means that 512 =
pages
>> * is 1 Gigabyte.  Double everything.  It must be a multiple of 8 for =
PAE.
>>=20
>> It appears that our default for PAE leaves 1GB for kernel address to =
play with?  That's an interesting default.  Wonder if it really makes =
sense for PAE since the assumption is that you'll have >4GB ram in the =
box, wiring down 1.5GB for kernel would seem to make sense=85  Probably =
make sense to ask Peter or Alan on this.
>>=20
>> Also wondering how bad it would be to make these tunables, I see they =
trickle down quite a bit into the system, hopefully not defining some =
static arrays, but I haven't dived down that far.
>>=20
>> Ian, just to understand better, how much memory is in your machine?
>>=20
>=20
> 12GB.

Another option to keep things simple it might make sense to add a kernel =
conf for PAE-12GLARGER and just include the PAE kernel and set your =
tunable. =20

That will keep people with "small PAE" (6G) from perhaps experiencing =
changes while still allowing larger PAE customers to tune properly.

Adding a note to the top of the PAE kernel stating "this works well for =
machines with less than 12GB, but for larger systems you want =
PAE-12GLARGER".

-Alfred=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?705D7AEE-D0D6-477B-80F5-746E2B1104B2>