svn commit: r329612 - in head/sys: kern sys

Andrew Turner andrew at fubar.geek.nz
Wed Feb 21 15:18:24 UTC 2018


> On 20 Feb 2018, at 00:06, Jeff Roberson <jeff at FreeBSD.org> wrote:
> 
> Author: jeff
> Date: Tue Feb 20 00:06:07 2018
> New Revision: 329612
> URL: https://svnweb.freebsd.org/changeset/base/329612
> 
> Log:
>  Further parallelize the buffer cache.
> 
>  Provide multiple clean queues partitioned into 'domains'.  Each domain manages
>  its own bufspace and has its own bufspace daemon.  Each domain has a set of
>  subqueues indexed by the current cpuid to reduce lock contention on the cleanq.
> 
>  Refine the sleep/wakeup around the bufspace daemon to use atomics as much as
>  possible.
> 
>  Add a B_REUSE flag that is used to requeue bufs during the scan to approximate
>  LRU rather than locking the queue on every use of a frequently accessed buf.
> 
>  Implement bufspace_reserve with only atomic_fetchadd to avoid loop restarts.
> 
>  Reviewed by:	markj
>  Tested by:	pho
>  Sponsored by:	Netflix, Dell/EMC Isilon
>  Differential Revision:	https://reviews.freebsd.org/D14274

I’m seeing the following panic on FreeBSD/arm64 after this change.

Andrew

panic: bq_remove: Remove buffer 0xffff00004082f260 from wrong queue.
cpuid = 4
time = 1519088201
KDB: stack backtrace:
db_trace_self() at db_trace_self_wrapper+0x28
	 pc = 0xffff00000062fee4  lr = 0xffff0000000c0450
	 sp = 0xffff000040364480  fp = 0xffff000040364690

db_trace_self_wrapper() at vpanic+0x184
	 pc = 0xffff0000000c0450  lr = 0xffff000000354ce8
	 sp = 0xffff0000403646a0  fp = 0xffff000040364720

vpanic() at kassert_panic+0x158
	 pc = 0xffff000000354ce8  lr = 0xffff000000354b60
	 sp = 0xffff000040364730  fp = 0xffff0000403647f0

kassert_panic() at bq_remove+0x178
	 pc = 0xffff000000354b60  lr = 0xffff0000003f7014
	 sp = 0xffff000040364800  fp = 0xffff000040364810

bq_remove() at buf_recycle+0x100
	 pc = 0xffff0000003f7014  lr = 0xffff0000003fca80
	 sp = 0xffff000040364820  fp = 0xffff000040364880

buf_recycle() at bufspace_daemon+0xb4
	 pc = 0xffff0000003fca80  lr = 0xffff0000003fd31c
	 sp = 0xffff000040364890  fp = 0xffff000040364910

bufspace_daemon() at fork_exit+0x7c
	 pc = 0xffff0000003fd31c  lr = 0xffff000000318388
	 sp = 0xffff000040364920  fp = 0xffff000040364950

fork_exit() at fork_trampoline+0x10
	 pc = 0xffff000000318388  lr = 0xffff000000649ec4
	 sp = 0xffff000040364960  fp = 0x0000000000000000

KDB: enter: panic


More information about the svn-src-head mailing list