ZFS-NFS kernel panic under load
Weldon S Godfrey 3
weldon at excelsus.com
Mon Aug 18 19:29:15 UTC 2008
Update on what else I have tried (all yeild same results, same
backtraces, no indication in logs/console of why it is panicing other
than page fault: (FYI--I have tried to load 8-CURRENT, but it panics
during install on the Dell 2950-3 I am using, I see a patch for a newer
port of zfs, that looks like for 8, is there a patch for 7.0-RELEASE?)
I have tried breaking it into two smaller < 2TB filesystems and performed
same test on one, still
I tried disabling swap all together (although I wasn't swapping)
I upped number of nfs daemons from 12 to 100
I turned on zfs debugging and WITNESS to see if anything would show, like
locking issues (nothing shows)
I ran loops every 3s to monitor max vnodes, kmem, and arc during testes
and up until the panic nothing was climbing
I turned off ZIL and disabled prefetch, the problem still occurs
I didn't get a panic in these situations:
I created a zfs mirror filesystem of only two drives (one on each chasis)
and performed the test
I took one drive, created a UFS filesystem and performed the test.
If memory serves me right, sometime around Aug 6, Weldon S Godfrey 3 told me:
>
> Hello,
>
> Please forgive me, I didn't really see this discussed in the archives but I am
> wondering if anyone has seen this issue. I can replicate this issue under
> FreeBSD amd64 7.0-RELEASE and the latest -STABLE (RELENG_7). I do not
> replicate any problems running 9 instances of postmark on the machine
> directly, so the issue appears to be isolated with NFS.
>
> There are backtraces and more information in ticket kern/124280
>
> I am experiencing random kernel panics while running postmark benchmark from 9
> NFS clients (clients on RedHat) to a 3TB ZFS filesystem exported with NFS.
> The panics happen as soon as 5 mins from starting the benchmark or may take
> hours before it panics and reboots. It doesn't correspond to a time a cron
> job is going on. I am using the following settings in postmark:
>
> set number 20000
> set transactions 10000000
> set subdirectories 1000
> set size 10000 15000
> set report verbose
> set location /var/mail/store1/X (where X is a number 1-9 so each is operating
> in its own tree)
>
> The problem happens if I run 1 postmark on 9 NFS clients at the same time
> (each client is its own server) or if I run 9 postmarks on one NFS client.
>
> commands used to create filesystem:
> zpool create tank mirror da0 da12 mirror da1 da13 mirror da2 da14 mirror da3
> da15\
> mirror da4 da16 mirror da5 da17 mirror da6 da18 mirror da7 da19 mirror da8
> da20 \
> mirror da9 da21 mirror da10 da22 spare da11 da23
> zfs set atime=off tank
> zfs create tank/mail
> zfs set mountpoint=/var/mail tank/mail
> zfs set sharenfs="-maproot=root -network 192.168.2.0 -mask 255.255.255.0"
> tank/mail
>
> I am using a 3ware 9690 SAS controller. I have 2 IBM EXP3000 enclosures, each
> drive is shown as single disk by the controller.
>
>
> this is my loader.conf:
> vm.kmem_size_max="1073741824"
> vm.kmem_size="1073741824"
> kern.maxvnodes="800000"
> vfs.zfs.prefetch_disable="1"
> vfs.zfs.cache_flush_disable="1"
>
> (I should note that kern.maxnodes in loader.conf does not appear to do
> anything, after boot, it is shown to be at 100000 with sysctl. It does change
> to 800000 if I manually set it with sysctl. However it appears my vnode usage
> sits at around 25-26K and is near that within 5s of the panic.
>
> The server has 16GB of RAM, and 2 quad core XEON processors.
>
> This server is only a NFS fileserver. The only non-default daemon running is
> sshd. It is running the GENERIC kernel, right now, unmodified.
>
> I am using two NICs. NFS is exported only on the secondary NIC. Each NIC is
> in it's own subnet.
>
>
> nothing in /var/log/messages near time of panic except:
> Aug 6 08:45:30 store1 savecore: reboot after panic: page fault
> Aug 6 08:45:30 store1 savecore: writing core to vmcore.2
>
> I can provide cores if needed.
>
> Thank you for your time!
>
> Weldon
>
>
>
> kgdb with backtrace:
>
> store1# kgdb kernel.debug /var/crash/vmcore.2
> GNU gdb 6.1.1 [FreeBSD]
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB. Type "show warranty" for details.
> This GDB was configured as "amd64-marcel-freebsd"...
>
> Unread portion of the kernel message buffer:
>
>
> Fatal trap 12: page fault while in kernel mode
> cpuid = 5; apic id = 05
> fault virtual address = 0xdc
> fault code = supervisor read data, page not present
> instruction pointer = 0x8:0xffffffff8063b3d8
> stack pointer = 0x10:0xffffffffdfbc5720
> frame pointer = 0x10:0xffffff00543ed000
> code segment = base 0x0, limit 0xfffff, type 0x1b
> = DPL 0, pres 1, long 1, def32 0, gran 1
> processor eflags = interrupt enabled, resume, IOPL = 0
> current process = 839 (nfsd)
> trap number = 12
> panic: page fault
> cpuid = 5
> Uptime: 18m53s
> Physical memory: 16366 MB
> Dumping 1991 MB: 1976 1960 1944 1928 1912 1896 1880 1864 1848 1832 1816 1800
> 1784 1768 1752 1736 1720 1704 1688 1672 1656 1640 1624 1608 1592 1576 1560
> 1544 1528 1512 1496 1480 1464 1448 1432 1416 1400 1384 1368 1352 1336 1320
> 1304 1288 1272 1256 1240 1224 1208 1192 1176 1160 1144 1128 1112 1096 1080
> 1064 1048 1032 1016 1000 984 968 952 936 920 904 888 872 856 840 824 808 792
> 776 760 744 728 712 696 680 664 648 632 616 600 584 568 552 536 520 504 488
> 472 456 440 424 408 392 376 360 344 328 312 296 280 264 248 232 216 200 184
> 168 152 136 120 104 88 72 56 40 24 8
>
> Reading symbols from /boot/kernel/zfs.ko...Reading symbols from
> /boot/kernel/zfs.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel/zfs.ko
> #0 doadump () at pcpu.h:194
> 194 __asm __volatile("movq %%gs:0,%0" : "=r" (td));
> (kgdb) backtrace
> #0 doadump () at pcpu.h:194
> #1 0x0000000000000004 in ?? ()
> #2 0xffffffff804a7049 in boot (howto=260) at
> /usr/src/sys/kern/kern_shutdown.c:418
> #3 0xffffffff804a744d in panic (fmt=0x104 <Address 0x104 out of bounds>) at
> /usr/src/sys/kern/kern_shutdown.c:572
> #4 0xffffffff807780e4 in trap_fatal (frame=0xffffff000bce26c0,
> eva=18446742974395967712)
> at /usr/src/sys/amd64/amd64/trap.c:724
> #5 0xffffffff807784b5 in trap_pfault (frame=0xffffffffdfbc5670, usermode=0)
> at /usr/src/sys/amd64/amd64/trap.c:641
> #6 0xffffffff80778de8 in trap (frame=0xffffffffdfbc5670) at
> /usr/src/sys/amd64/amd64/trap.c:410
> #7 0xffffffff8075e7ce in calltrap () at
> /usr/src/sys/amd64/amd64/exception.S:169
> #8 0xffffffff8063b3d8 in nfsrv_access (vp=0xffffff00207d7dc8, flags=128,
> cred=0xffffff00403d4800, rdonly=0,
> td=0xffffff000bce26c0, override=0) at
> /usr/src/sys/nfsserver/nfs_serv.c:4284
> #9 0xffffffff8063c4f1 in nfsrv3_access (nfsd=0xffffff00543ed000,
> slp=0xffffff0006396d00, td=0xffffff000bce26c0,
> mrq=0xffffffffdfbc5af0) at /usr/src/sys/nfsserver/nfs_serv.c:234
> #10 0xffffffff8064cd1d in nfssvc (td=Variable "td" is not available.
> ) at /usr/src/sys/nfsserver/nfs_syscalls.c:456
> #11 0xffffffff80778737 in syscall (frame=0xffffffffdfbc5c70) at
> /usr/src/sys/amd64/amd64/trap.c:852
> #12 0xffffffff8075e9db in Xfast_syscall () at
> /usr/src/sys/amd64/amd64/exception.S:290
> #13 0x0000000800687acc in ?? ()
> Previous frame inner to this frame (corrupt stack?)
>
More information about the freebsd-fs
mailing list