Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 May 2018 00:52:22 -0700
From:      Matthew Macy <mmacy@freebsd.org>
To:        Peter Holm <peter@holm.cc>
Cc:        src-committers@freebsd.org, svn-src-all@freebsd.org,  svn-src-head@freebsd.org
Subject:   Re: svn commit: r333480 - head/sys/kern
Message-ID:  <CAPrugNpS_uXUYsUOqtpSWDQaOZ=NUqfmKsoWJH0oyy4X_uc_Hg@mail.gmail.com>
In-Reply-To: <20180511074923.GA36228@x2.osted.lan>
References:  <201805110454.w4B4sDpx067946@repo.freebsd.org> <20180511071854.GA35451@x2.osted.lan> <CAPrugNoU8H3B5GLEnxuEO3YbyMi4ZhJxm=oknO-x9_Q-PGPzQQ@mail.gmail.com> <CAPrugNp_Cp3CCTSWfeA42jX1X1W1cT4kguDKGHK7nyYMUdeChQ@mail.gmail.com> <20180511074923.GA36228@x2.osted.lan>

next in thread | previous in thread | raw e-mail | index | archive | help
Weird. Try tha.
@@ -172,6 +174,7 @@ epoch_init_numa(epoch_t epoch)
                for (int i = 0; i < domcount[domain]; i++, eps++) {
                        epoch->e_pcpu[cpu_offset + i] = eps;
                        er = &eps->eps_record;
+                       STAILQ_INIT(&eps->eps_cblist);
                        ck_epoch_register(&epoch->e_epoch,
&er->er_record, NULL);
                        TAILQ_INIT((struct threadlist
*)(uintptr_t)&er->er_tdlist);
                        er->er_cpuid = cpu_offset + i;

On Fri, May 11, 2018 at 12:49 AM, Peter Holm <peter@holm.cc> wrote:
> On Fri, May 11, 2018 at 12:36:40AM -0700, Matthew Macy wrote:
>> - How many cores? How many sockets?
>> - Any special config options other than DIAGNOSTIC?
>>
>
> CPU: Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz (1995.24-MHz K8-class CPU)
>   Origin="GenuineIntel"  Id=0x206d7  Family=0x6  Model=0x2d  Stepping=7
>   Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
>   Features2=0x1fbee3ff<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,DCA,SSE4.1,SSE4.2,x2APIC,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX>
>   AMD Features=0x2c100800<SYSCALL,NX,Page1GB,RDTSCP,LM>
>   AMD Features2=0x1<LAHF>
>   XSAVE Features=0x1<XSAVEOPT>
>   VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID
>   TSC: P-state invariant, performance statistics
> real memory  = 68719476736 (65536 MB)
> avail memory = 66740162560 (63648 MB)
> Event timer "LAPIC" quality 600
> ACPI APIC Table: <INTEL  W2600CR>
> FreeBSD/SMP: Multiprocessor System Detected: 24 CPUs
> FreeBSD/SMP: 2 package(s) x 6 core(s) x 2 hardware threads
>
> $ sed '/^#/d; /^$/d' < /usr/src/sys/amd64/conf/PHO
> include GENERIC
> ident           PHO-GENERIC
> options         ALT_BREAK_TO_DEBUGGER
> options         SW_WATCHDOG
> options         DEBUG_LOCKS
> options         DEBUG_VFS_LOCKS
> options         DIAGNOSTIC
> nooptions         DEADLKRES             # watchdogd handles this
> options         UFS_EXTATTR
> options         UFS_EXTATTR_AUTOSTART
> $
>
> - Peter
>
>> On Fri, May 11, 2018 at 12:29 AM, Matthew Macy <mmacy@freebsd.org> wrote:
>> > Yes. Can you give me the line number for epoch_call_task+0x7b
>> >
>> >
>> > On Fri, May 11, 2018 at 12:18 AM, Peter Holm <peter@holm.cc> wrote:
>> >> On Fri, May 11, 2018 at 04:54:13AM +0000, Matt Macy wrote:
>> >>> Author: mmacy
>> >>> Date: Fri May 11 04:54:12 2018
>> >>> New Revision: 333480
>> >>> URL: https://svnweb.freebsd.org/changeset/base/333480
>> >>>
>> >>> Log:
>> >>>   epoch(9): fix priority handling, make callback lists pcpu, and other fixes
>> >>>
>> >>>   - Lend priority to preempted threads in epoch_wait to handle the case
>> >>>     in which we've had priority lent to us. Previously we borrowed the
>> >>>     priority of the lowest priority preempted thread. (pointed out by mjg@)
>> >>>
>> >>>   - Don't attempt allocate memory per-domain on powerpc, we don't currently
>> >>>     handle empty sockets (as is the case on jhibbits Talos' board).
>> >>>
>> >>>   - Handle deferred callbacks as pcpu lists and poll the lists periodically.
>> >>>     Currently the interval is 1/hz.
>> >>>
>> >>>   - Drop the thread lock when adaptive spinning. Holding the lock starves
>> >>>     other threads and can even lead to lockups.
>> >>>
>> >>>   - Keep a generation count pcpu so that we don't keep spining if a thread
>> >>>     has left and re-entered an epoch section.
>> >>>
>> >>>   - Actually removed the callback from the callback list so that we don't
>> >>>     double free. Sigh ...
>> >>>
>> >>>   Approved by:        sbruno@
>> >>>
>> >>> Modified:
>> >>>   head/sys/kern/subr_epoch.c
>> >>>
>> >>> Modified: head/sys/kern/subr_epoch.c
>> >>> ==============================================================================
>> >>> --- head/sys/kern/subr_epoch.c        Fri May 11 04:47:05 2018        (r333479)
>> >>
>> >> Could this be yours?
>> >>
>> >> cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed
>> >> WARNING: WITNESS option enabled, expect reduced performance.
>> >> WARNING: DIAGNOSTIC option enabled, expect reduced performance.
>> >> Trying to mount root from ufs:/dev/da0p2 [rw]...
>> >> Expensive timeout(9) function: 0xffffffff809f20d0(0xffffffff81af5140) 0.006730830 s
>> >> uhub1: 4 ports with 4 removable, self powered
>> >> kernel trap 12 with interrupts disabled
>> >>
>> >>
>> >> Fatal trap 12: page fault while in kernel mode
>> >> cpuid = 12; apic id = 20
>> >> fault virtual address   = 0x100
>> >> fault code              = supervisor read data, page not present
>> >> instruction pointer     = 0x20:0xffffffff80bb68db
>> >> stack pointer           = 0x0:0xfffffe00004e19b0
>> >> frame pointer           = 0x0:0xfffffe00004e19f0
>> >> code segment            = base 0x0, limit 0xfffff, type 0x1b
>> >>                         = DPL 0, pres 1, long 1, def32 0, gran 1
>> >> processor eflags        = resume, IOPL = 0
>> >> current process         = 0 (config_0)
>> >> [ thread pid 0 tid 100081 ]
>> >> Stopped at      epoch_call_task+0x7b:   movq    ll+0xdf(%rax),%rcx
>> >> db> show registers
>> >> cs                        0x20
>> >> ds                        0x3b  ll+0x1a
>> >> es                        0x3b  ll+0x1a
>> >> fs                        0x13
>> >> gs                        0x1b
>> >> ss                           0
>> >> rax                          0
>> >> rcx                      0x858  ll+0x837
>> >> rdx         0xffffffff812f6968
>> >> rbx                        0xc
>> >> rsp         0xfffffe00004e19b0
>> >> rbp         0xfffffe00004e19f0
>> >> rsi                       0x14
>> >> rdi                          0
>> >> r8          0xfffff800038f3000
>> >> r9          0xffffffff81ff1620  vmspace0+0x130
>> >> r10         0xfffff800038f3000
>> >> r11                       0x40  ll+0x1f
>> >> r12         0xfffffe00004e19b8
>> >> r13                        0xc
>> >> r14         0xfffff8001f0ed400
>> >> r15         0xfffff800038f3000
>> >> rip         0xffffffff80bb68db  epoch_call_task+0x7b
>> >> rflags                 0x10086
>> >> epoch_call_task+0x7b:   movq    ll+0xdf(%rax),%rcx
>> >> db> bt
>> >> Tracing pid 0 tid 100081 td 0xfffff800038f3000
>> >> epoch_call_task() at epoch_call_task+0x7b/frame 0xfffffe00004e19f0
>> >> gtaskqueue_run_locked() at gtaskqueue_run_locked+0x139/frame 0xfffffe00004e1a40
>> >> gtaskqueue_thread_loop() at gtaskqueue_thread_loop+0x88/frame 0xfffffe00004e1a70
>> >> fork_exit() at fork_exit+0x84/frame 0xfffffe00004e1ab0
>> >> fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe00004e1ab0
>> >> --- trap 0, rip = 0, rsp = 0, rbp = 0 ---
>> >> db> x/s version
>> >> version:        FreeBSD 12.0-CURRENT #0 r333481: Fri May 11 09:08:40 CEST 2018\012    pho@t2.osted.lan:/usr/obj/usr/src/amd64.amd64/sys/PHO\012
>> >> db>
>> >>
>> >> - Peter



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPrugNpS_uXUYsUOqtpSWDQaOZ=NUqfmKsoWJH0oyy4X_uc_Hg>