05.03.2015 12:40, Mykola Dzham пишет:
>> On 05 Mar 2015, at 10:35, Владимир Друзенко <[email protected]> wrote:
>>
>> 05.03.2015 12:23, Mykola Dzham пишет:
>>> On 05 Mar 2015, at 10:14, Владимир Друзенко <[email protected]> wrote:
>>>> 05.03.2015 11:38, Golub Mikhail пишет:
>>>>> Все дело в vmxnet3.
>>>>> Вернул e1000 (em0 в гостевой) - в корку не вылетает.
>>>>>
>>>>> Дальше теперь только настроить правильно altq.
>>>>>
>>>>> Пока остановлюсь на этом.
>>>>> Всем спасибо за помощь.
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: [email protected] [mailto:[email protected]]
>>>>>> On Behalf Of Golub Mikhail
>>>>>> Sent: Thursday, March 05, 2015 10:16 AM
>>>>>> To: [email protected]
>>>>>> Subject: RE: [freebsd] FreeBSD 10.1: PF bug?
>>>>>>
>>>>>> На тестовой виртуалке под vmware esx 5.5u2, гостевая ОС FreeBSD 10.1
>>>>>> x64
>>>>>> Установлен сетевой адаптер vmx3f0.
>>>>>> Установлены vmaware tools.
>>>>>> Сделано так, что при старте системы правила pf не загружаются, сквид не
>>>>>> загружается (для теста).
>>>>>>
>>>>>> Загружаю вручную такие правила (взял за основу
>>>>>> https://calomel.org/pf_hfsc.html, пока только тест).
>>>>>> pfctl -f /etc/pf.conf-test
>>>>>>
>>>>>> ext_if="vmx3f0"
>>>>>> altq on $ext_if bandwidth 90Mb hfsc queue { ack, dns, ssh, web_high,
>>>>>> web_low, bulk}
>>>>>>   queue ack bandwidth 30% priority 8 qlimit 500 hfsc (realtime 20%)
>>>>>>   queue dns bandwidth 5% priority 7 qlimit 500 hfsc (realtime 5%)
>>>>>>   queue ssh bandwidth 5% priority 6 qlimit 500 hfsc (realtime 5%)
>>>>>> {ssh_login, ssh_bulk}
>>>>>>       queue ssh_login bandwidth 50% priority 6 qlimit 500 hfsc
>>>>>>       queue ssh_bulk bandwidth 50% priority 5 qlimit 500 hfsc
>>>>>>   queue bulk bandwidth 10% priority 5 qlimit 500 hfsc (realtime 10%
>>>>>> default)
>>>>>>   queue web_high bandwidth 25% priority 4 qlimit 500 hfsc (realtime 20%)
>>>>>>   queue web_low  bandwidth 25% priority 3 qlimit 500 hfsc (realtime 20%)
>>>>>> pass out on $ext_if inet proto tcp from ($ext_if) to any flags S/SA
>>>>> modulate
>>>>>> state queue (ack, bulk)
>>>>>> pass out on $ext_if inet proto tcp from ($ext_if) to any port ssh flags
>>>>> S/SA
>>>>>> modulate state queue (ssh_login, ssh_bulk)
>>>>>> pass on $ext_if inet proto udp from any to any modulate state queue (dns)
>>>>>> pass on $ext_if inet proto tcp from any to any port {80,443} tos 0x31
>>>>> flags
>>>>>> S/SA modulate state queue (web_high, ack)
>>>>>> pass on $ext_if inet proto tcp from any to any port {80,443} tos 0x32
>>>>> flags
>>>>>> S/SA modulate state queue (web_low, ack)
>>>>>>
>>>>>> Запускаю сквид - service squid start
>>>>>> Все работает ... До первого запроса к прокси. И тут получаю core.
>>>>>>
>>>>>> Mar  5 10:01:12 vm2 savecore: reboot after panic: page fault
>>>>>> Mar  5 10:01:12 vm2 savecore: writing core to /var/crash/vmcore.2
>>>>>>
>>>>>> kgdb kernel.debug /var/crash/vmcore.2
>>>>>>
>>>>>> Fatal trap 12: page fault while in kernel mode
>>>>>> cpuid = 0; apic id = 00
>>>>>> fault virtual address   = 0x38
>>>>>> fault code              = supervisor read data, page not present
>>>>>> instruction pointer     = 0x20:0xffffffff81b3cfa7
>>>>>> stack pointer           = 0x28:0xfffffe004e52f250
>>>>>> frame pointer           = 0x28:0xfffffe004e52f2e0
>>>>>> 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 (vmx3f0 taskq)
>>>>>> trap number             = 12
>>>>>> panic: page fault
>>>>>> cpuid = 0
>>>>>> KDB: stack backtrace:
>>>>>> #0 0xffffffff809202f0 at kdb_backtrace+0x60
>>>>>> #1 0xffffffff808e5415 at panic+0x155
>>>>>> #2 0xffffffff80ce13bf at trap_fatal+0x38f
>>>>>> #3 0xffffffff80ce16d8 at trap_pfault+0x308
>>>>>> #4 0xffffffff80ce0d3a at trap+0x47a
>>>>>> #5 0xffffffff80cc6c22 at calltrap+0x8
>>>>>> #6 0xffffffff809a5f20 at if_transmit+0x130
>>>>>> #7 0xffffffff809a7c8d at ether_output+0x58d
>>>>>> #8 0xffffffff80a154db at ip_output+0x115b
>>>>>> #9 0xffffffff80a85cbc at tcp_output+0x191c
>>>>>> #10 0xffffffff80a82f55 at tcp_do_segment+0x3045
>>>>>> #11 0xffffffff80a7f2c4 at tcp_input+0xd04
>>>>>> #12 0xffffffff80a114b7 at ip_input+0x97
>>>>>> #13 0xffffffff809b09b2 at netisr_dispatch_src+0x62
>>>>>> #14 0xffffffff809a7e26 at ether_demux+0x126
>>>>>> #15 0xffffffff809a8ace at ether_nh_input+0x35e
>>>>>> #16 0xffffffff809b09b2 at netisr_dispatch_src+0x62
>>>>>> #17 0xffffffff81b3c820 at vmxnet3_rq_rx_complete+0x3d0
>>>>>> Uptime: 2m1s
>>>>>> Dumping 123 out of 998 MB:..13%..26%..39%..52%..65%..78%..91%
>>>>>>
>>>>>> Reading symbols from /boot/kernel/zfs.ko.symbols...done.
>>>>>> Loaded symbols for /boot/kernel/zfs.ko.symbols
>>>>>> Reading symbols from /boot/kernel/opensolaris.ko.symbols...done.
>>>>>> Loaded symbols for /boot/kernel/opensolaris.ko.symbols
>>>>>> Reading symbols from /boot/kernel/ipfw.ko.symbols...done.
>>>>>> Loaded symbols for /boot/kernel/ipfw.ko.symbols
>>>>>> Reading symbols from /boot/kernel/accf_http.ko.symbols...done.
>>>>>> Loaded symbols for /boot/kernel/accf_http.ko.symbols
>>>>>> Reading symbols from /boot/kernel/crypto.ko.symbols...done.
>>>>>> Loaded symbols for /boot/kernel/crypto.ko.symbols
>>>>>> Reading symbols from /boot/modules/vmxnet3.ko...done.
>>>>>> Loaded symbols for /boot/modules/vmxnet3.ko
>>>>>> Reading symbols from /boot/kernel/pflog.ko.symbols...done.
>>>>>> Loaded symbols for /boot/kernel/pflog.ko.symbols
>>>>>> Reading symbols from /boot/kernel/pf.ko.symbols...done.
>>>>>> Loaded symbols for /boot/kernel/pf.ko.symbols
>>>>>> Reading symbols from /boot/modules/vmmemctl.ko...done.
>>>>>> Loaded symbols for /boot/modules/vmmemctl.ko
>>>>>> #0  doadump (textdump=<value optimized out>) at pcpu.h:219
>>>>>> 219             __asm("movq %%gs:%1,%0" : "=r" (td)
>>>> Не очень понятно - если ядро и так кастомное, то зачем столько всего
>>>> оставлять в модулях?
>>> Не очень понятно: зачем Вы намекаете на вариант “всё запихнуть в монолитное 
>>> ядро”? Что это даст? Особенно с учетом того, что всё запихнуть без костылей 
>>> всё-равно не получится.
>>> Ну а оставлять в модулях например для большей гибкости.
>>>
>> Мсье даже этот тред в рассылке невнимательно читал - ничего, что
>> некоторые подсистемы по-разному себя ведут при статической сборке в ядро
>> и загрузкой модулем (превед, pf+altq!)? Ещё (на личном опыте)
>> green_saver - оставляю модулем.
>> Да и какая вам нужна гибкость в продакшине, который должен просто
>> работать? Тестовые стенды и для разработки - отдельный разговор.
>> Также хочется понять что же такое не получится запихнуть в ядро? На
>> вскидку только zfs и модули из портов, а всё остальное замечательно
>> вкомпиливается.
> Это только Ваше утверждение "некоторые подсистемы по-разному себя ведут при 
> статической сборке в ядро и загрузкой модулем (превед, pf+altq!)”
Перечитайте тред ещё раз - это утверждаю не я.

> Оно не подтверждается - pf, собраный модулем, прекрасно работает с altq.
Видимо не у всех, если об этом пишут в рассылку. Или уже исправили?

> Не нужно только ядро лаками всякими собирать 
Чем-чем собирать не нужно?

> - нужно собирать по хендбуку,
> и держать в соответствии make.conf & src.conf   с конфигом ядра (например 
> если выбрасываете IPv6  из ядра, то и из мира надо выбросить).
Этот поток сознания какое отношение имеет к теме?

> Именно на продакшене гибкость и нужна - на тесте я могу и пересобрать ядро и 
> перезагрузить сервер. Опять же я могу собрать одну систему для всех,
> но в каждом конкретном случае подгружать то, что мне нужно.
Когда последний раз вам приходилось какой-то модуль выгружать, потому
что он мешал работе на сервере в продакшине? Вот именно, что обычно надо
только загружать то, что раньше было не нужно и не было вкомпилено в
ядро. А для этого достаточно не отключать сборку модулей.

> Ну вот мсье даже этот вывод невнимательно читал: тут в выводе есть zfs . Раз 
> его не запихнуть, то в чём смысл запихивания всего в “почти” монолитное ядро?
Где логика?
Это всё равно что не мыть руки только потому, что "всё равно всю грязь
не смоешь и всех микробов не убьёшь" - бредом попахивает.

Да и о ZFS я тоже говорил - видать и это вы пропустили. Как там
говорится: "тред не читай - сразу отвечай!"

При этом топикстартер уже ответил: "Машинка тестовая. Там несколько
ядер, разных конфигов."


P.S. И у вас в почтовом клиенте (Mac OS X Mail?) нет кнопочки "Ответить
в рассылку"? Постоянно сыпятся дубли писем.

Ответить