Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Apr 2015 12:49:51 -0600
From:      Scott Long <scott4long@yahoo.com>
To:        Dmitry Chagin <dchagin@FreeBSD.org>
Cc:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r281451 - head/sys/vm
Message-ID:  <4E109480-FD27-4C7F-8B5F-B1DB2232CD3D@yahoo.com>
In-Reply-To: <5B48434B-EA97-45B3-BC4E-B039A868186B@yahoo.com>
References:  <201504120621.t3C6LxAV095209@svn.freebsd.org> <5B48434B-EA97-45B3-BC4E-B039A868186B@yahoo.com>

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

> On Apr 23, 2015, at 6:19 AM, Scott Long <scott4long@yahoo.com> wrote:
>=20
>>=20
>> On Apr 12, 2015, at 12:21 AM, Dmitry Chagin <dchagin@FreeBSD.org> =
wrote:
>>=20
>> Author: dchagin
>> Date: Sun Apr 12 06:21:58 2015
>> New Revision: 281451
>> URL: https://svnweb.freebsd.org/changeset/base/281451
>>=20
>> Log:
>> Rework r281162. Indeed, the flexible array member is preferable here.
>>=20
>> Suggested by:   Justin T. Gibbs
>>=20
>> MFC after:	3 days
>>=20
>> Modified:
>> head/sys/vm/uma_core.c
>> head/sys/vm/uma_int.h
>=20
> There=E2=80=99s still something wrong with this.  I have a machine =
with 28 cores (56 with hyperthreading) and 256GB of RAM, and ever since =
you committed r281162, it panics early in boot with a failed assertion.  =
It looks like the first few members of a uma_slab_t are getting =
overwritten accidentally, and somehow the padding of the extra member in =
the uma_zone_t was previously protecting it.  I don=E2=80=99t know the =
exact cause yet, but I must ask that you revert to r281161 in HEAD and =
stable/10 until the problem is resolved.
>=20

I think the problem is that the masterzone_k and masterzone_z objects =
that are statically allocated in uma_core.c no longer have space for the =
uz_cpu field, but uma_zalloc_arg() always assumes that it=E2=80=99s =
there.  Early in boot when the =E2=80=98kegs' and =E2=80=98zones=E2=80=99 =
zones are being initialized, there=E2=80=99s only 1 CPU so =
pre-allocating 1 uz_cpu element in the uma_zone is enough.  I can=E2=80=99=
t see any way around this without significantly changing how =
uma_zalloc_arg() treats per-cpu caches.  I think it=E2=80=99s best to =
revert this change.

Scott





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4E109480-FD27-4C7F-8B5F-B1DB2232CD3D>