Перейти к содержимому
Калькуляторы

Всем привет.

Решил поднять тему снова, так как зависания сервера продолжаются (раз в 5-6 дней). Ни обновления, ни тюнинг не помогают.

Удалось получить корку ядра.

 

В отладке ядра несилён, так что если нужна какая инфа пишите.

 

ns# kgdb kernel.debug /var/crash/vmcore.0

...

Unread portion of the kernel message buffer:

 

Fatal trap 12: page fault while in kernel mode

cpuid = 6; apic id = 32

fault virtual address = 0xffffffff00040061

fault code = supervisor read data, page not present

instruction pointer = 0x20:0xffffffff805121ab

stack pointer = 0x28:0xffffff823b9948c0

frame pointer = 0x28:0xffffff823b994940

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 = 0 (em2 taskq)

trap number = 12

panic: page fault

cpuid = 6

KDB: stack backtrace:

#0 0xffffffff80460a2e at kdb_backtrace+0x5e

#1 0xffffffff8042f5d7 at panic+0x187

#2 0xffffffff806f4ba0 at trap_fatal+0x290

#3 0xffffffff806f4ef1 at trap_pfault+0x201

#4 0xffffffff806f53af at trap+0x3df

#5 0xffffffff806dcd24 at calltrap+0x8

#6 0xffffffff805128ef at icmp_error+0x24f

#7 0xffffffff80508d10 at ip_fastforward+0x810

#8 0xffffffff804dc2a8 at ether_demux+0x198

#9 0xffffffff804dc64d at ether_input+0x17d

#10 0xffffffff8028111a at em_rxeof+0x1ca

#11 0xffffffff8028159b at em_handle_que+0x5b

#12 0xffffffff8046c335 at taskqueue_run_locked+0x85

#13 0xffffffff8046c4ce at taskqueue_thread_loop+0x4e

#14 0xffffffff80404a7f at fork_exit+0x11f

#15 0xffffffff806dd26e at fork_trampoline+0xe

Uptime: 5d5h1m10s

Dumping 1454 out of 8119 MB:..2%..12%..21%..31%..41%..51%..61%..71%..81%..91%Attempt to write outside dump device boundaries.

offset(12884921344), mediaoffset(4294999552), length(65536), mediasize(8589934592).

 

Dump map grown while dumping. Retrying...

Dumping 1474 out of 8119 MB:

 

Reading symbols from /boot/kernel/coretemp.ko...Reading symbols from /boot/kernel/coretemp.ko.symbols...done.

done.

Loaded symbols for /boot/kernel/coretemp.ko

Reading symbols from /boot/kernel/blank_saver.ko...Reading symbols from /boot/kernel/blank_saver.ko.symbols...done.

done.

Loaded symbols for /boot/kernel/blank_saver.ko

#0 doadump () at pcpu.h:224

224 __asm("movq %%gs:0,%0" : "=r" (td));

 

 

(kgdb) list *0xffffffff805121ab

0xffffffff805121ab is in icmp_reflect (../../../netinet/ip_icmp.c:702).

697 */

698 ifp = m->m_pkthdr.rcvif;

699 if (ifp != NULL && ifp->if_flags & IFF_BROADCAST) {

700 IF_ADDR_LOCK(ifp);

701 TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {

702 if (ifa->ifa_addr->sa_family != AF_INET)

703 continue;

704 ia = ifatoia(ifa);

705 if (satosin(&ia->ia_broadaddr)->sin_addr.s_addr ==

706 t.s_addr) {

 

 

(kgdb) bt

#0 doadump () at pcpu.h:224

#1 0xffffffff8042f120 in boot (howto=260) at ../../../kern/kern_shutdown.c:441

#2 0xffffffff8042f5c1 in panic (fmt=Variable "fmt" is not available.

) at ../../../kern/kern_shutdown.c:614

#3 0xffffffff806f4ba0 in trap_fatal (frame=0xc, eva=Variable "eva" is not available.

) at ../../../amd64/amd64/trap.c:824

#4 0xffffffff806f4ef1 in trap_pfault (frame=0xffffff823b994810, usermode=0) at ../../../amd64/amd64/trap.c:740

#5 0xffffffff806f53af in trap (frame=0xffffff823b994810) at ../../../amd64/amd64/trap.c:477

#6 0xffffffff806dcd24 in calltrap () at ../../../amd64/amd64/exception.S:228

#7 0xffffffff805121ab in icmp_reflect (m=0xffffff00291ba000) at ../../../netinet/ip_icmp.c:702

#8 0xffffffff805128ef in icmp_error (n=0xffffff002a871c00, type=689676512, code=0, dest=0, mtu=0) at ../../../netinet/ip_icmp.c:313

#9 0xffffffff80508d10 in ip_fastforward (m=0xffffff002a871c00) at ../../../netinet/ip_fastfwd.c:402

#10 0xffffffff804dc2a8 in ether_demux (ifp=0xffffff0002707800, m=0xffffff002a871c00) at ../../../net/if_ethersubr.c:830

#11 0xffffffff804dc64d in ether_input (ifp=0xffffff0002707800, m=0xffffff002a871c00) at ../../../net/if_ethersubr.c:753

#12 0xffffffff8028111a in em_rxeof (rxr=0xffffff0002780c00, count=1999, done=0x0) at ../../../dev/e1000/if_em.c:4311

#13 0xffffffff8028159b in em_handle_que (context=Variable "context" is not available.

) at ../../../dev/e1000/if_em.c:1489

#14 0xffffffff8046c335 in taskqueue_run_locked (queue=0xffffff0002783e00) at ../../../kern/subr_taskqueue.c:250

#15 0xffffffff8046c4ce in taskqueue_thread_loop (arg=Variable "arg" is not available.

) at ../../../kern/subr_taskqueue.c:387

#16 0xffffffff80404a7f in fork_exit (callout=0xffffffff8046c480 <taskqueue_thread_loop>, arg=0xffffff8000834748, frame=0xffffff823b994c50)

at ../../../kern/kern_fork.c:876

#17 0xffffffff806dd26e in fork_trampoline () at ../../../amd64/amd64/exception.S:602

#18 0x0000000000000000 in ?? ()

#19 0x0000000000000000 in ?? ()

#20 0x0000000000000000 in ?? ()

#21 0x0000000000000000 in ?? ()

#22 0x0000000000000000 in ?? ()

#23 0x0000000000000000 in ?? ()

#24 0x0000000000000000 in ?? ()

#25 0x0000000000000000 in ?? ()

#26 0x0000000000000000 in ?? ()

#27 0x0000000000000000 in ?? ()

#28 0x0000000000000000 in ?? ()

#29 0x0000000000000000 in ?? ()

#30 0x0000000000000000 in ?? ()

#31 0x0000000000000000 in ?? ()

#32 0x0000000000000000 in ?? ()

#33 0x0000000000000000 in ?? ()

#34 0x0000000000000000 in ?? ()

#35 0x0000000000000000 in ?? ()

#36 0x0000000000000000 in ?? ()

#37 0x0000000000000000 in ?? ()

#38 0x0000000000000000 in ?? ()

#39 0x0000000000000000 in ?? ()

#40 0x0000000000000000 in ?? ()

#41 0x0000000000000000 in ?? ()

#42 0xffffffff809b1a00 in affinity ()

#43 0x0000000000000000 in ?? ()

#44 0x0000000000000000 in ?? ()

#45 0xffffff000271d460 in ?? ()

#46 0xffffff823b994140 in ?? ()

#47 0xffffff823b9940e8 in ?? ()

#48 0xffffff0002b858c0 in ?? ()

#49 0xffffffff80453bc2 in sched_switch (td=0xffffffff8046c480, newtd=0xffffff8000834748, flags=Variable "flags" is not available.

) at ../../../kern/sched_ule.c:1860

Previous frame inner to this frame (corrupt stack?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ip_fastforward - отключите, это для одноядерных хорошо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пробовал ставить net.inet.ip.fastforwarding=0, с полгода назад эксперементировал, не помогало.

Надо будет попробовать сейчас, может после обновления ядра, что поменялось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С net.inet.ip.fastforwarding=0 сервер перезагрузился через 3 дня, корка не создалась.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А что там за ошибки валятся icmp_error / icmp_reflect ?

 

/*

* Generate an error packet of type error

* in response to bad packet ip.

*/

 

tcpdumpом посмотрите, что там за ошибки ? Может отключить какие

net.inet.icmp.drop_redirect

net.inet.tcp.blackhole

net.inet.udp.blackhole

?

Ошибку конечно не вылечит, но снизит вероятность...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С net.inet.ip.fastforwarding=0 сервер перезагрузился через 3 дня, корка не создалась.

 

Можно попробовать поставить http://people.freebsd.org/~avg/stop_scheduler_on_panic.8.x.diff для того, чтобы дампы писались.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ip_fastforward - отключите, это для одноядерных хорошо.

М-м-м...независимо от топика, можно пояснить данное утверждение?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ip_fastforward - отключите, это для одноядерных хорошо.

М-м-м...независимо от топика, можно пояснить данное утверждение?

 

При фастфорваде пакет не ставится ни в какие ISR очереди и пр, а проходит на вылет, в случае роутинга. Притом есть пакет с опциями, или предназначем этому хосту или ещё что то (не помню уже), то он заворачивается в очередь, и там он снова чекается (ip_input продублирован в фастфорваде) - это увеличивает нагрузку на проц.

 

 

Однопроцовым пофик, у них всё равно это ядро будет пакет обрабатывать пока он уйдёт/дропнется/приложение получит, и профит в том, что меньше переключений контекстов, и больше попаданий в кеш проца.

 

У многопроцовых имеет смысл одному ядру допустим прерывания обрабатывать и пакеты в очереди распихивать, а остальные ядра могут заниматся разборами этих очередей. При такой обработке нагрузка более равномерно по ядрам распределяется.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.