G@riK Posted March 3, 2011 Posted March 3, 2011 Добрый день. Столкнулись с проблемой с IPFW3: ipfw: setsockopt(IP_DUMMYNET_CONFIGURE): Cannot allocate memory При этом перестает бегать трафик (скорее всего связано с невозможностью выделить память под создание новых PIPE). В консоль валятся сообщения Mar 3 12:06:11 bridge kernel: Bump sched buckets to 65536 (was 0) Mar 3 12:06:11 bridge kernel: config_sched cannot allocate scheduler 65564 Mar 3 12:06:11 bridge kernel: Bump sched buckets to 65536 (was 0) Mar 3 12:06:11 bridge kernel: config_sched cannot allocate scheduler 65565 Если в это время попробовать что-либо выполнить в консоли (sysctl, tcpdump, etc), то система перезагружается без предупреждения! Каждое день в 6 часов утра перезапускается фаервол. Но как видно из графиков ниже, память все равно не освобождается и фаервол отрабатывает некорректно. Если перезапустить фаервол руками, то ничего не меняется. Помогает только перезагрузка системы. На графиках также видно, что память то свободная была, но почему-то ошибки о нехватке все равно продолжают сыпаться. В чем может быть причина такого поведения? Почему не освобождается память? Может у нас неправильно выставлены параметры в sysctl? Система FreeBSD 8.1-STABLE-201010 #1: Fri Feb 4 16:46:02 MSK 2011 В начале rc.firewall прописаны такие правила для очистки очередей и пайпов: IPFW="/sbin/ipfw -fq" $IPFW flush $IPFW pipe flush $IPFW queue flush for tables in 1 2 3 4 5 6 7 8 10 11 20 21 40 41 80 81 120 121 122 123 110 111 112 113 42 43 44 45 46 47 48 49 50 51 52 do ipfw table "$tables" flush done Далее правила такого рода: ... $IPFW pipe 11 config bw 1040Kbit/s mask dst-ip 0xffffffff $IPFW pipe 12 config bw 1040Kbit/s mask src-ip 0xffffffff $IPFW add pipe 11 ip from any to table\(10\) via igb0 out $IPFW add pipe 12 ip from table\(11\) to any via igb1 out $IPFW add pipe 11 ip from any to table\(10\) via igb2 out $IPFW add pipe 12 ip from table\(11\) to any via igb3 out $IPFW add allow ip from any to table\(10\) $IPFW add allow ip from table\(11\) to any ... Вот такие параметры в sysctl: net.inet.ip.dummynet.io_pkt_drop: 7804870 net.inet.ip.dummynet.io_pkt_fast: 0 net.inet.ip.dummynet.io_pkt: 561862570 net.inet.ip.dummynet.queue_count: 0 net.inet.ip.dummynet.fsk_count: 30 net.inet.ip.dummynet.si_count: 1002 net.inet.ip.dummynet.schk_count: 60 net.inet.ip.dummynet.tick_lost: 0 net.inet.ip.dummynet.tick_diff: 30374 net.inet.ip.dummynet.tick_adjustment: 56758939 net.inet.ip.dummynet.tick_delta_sum: -88 net.inet.ip.dummynet.tick_delta: -200 net.inet.ip.dummynet.red_max_pkt_size: 1500 net.inet.ip.dummynet.red_avg_pkt_size: 512 net.inet.ip.dummynet.red_lookup_depth: 256 net.inet.ip.dummynet.expire_cycle: 0 net.inet.ip.dummynet.expire: 1 net.inet.ip.dummynet.debug: 0 net.inet.ip.dummynet.io_fast: 1 net.inet.ip.dummynet.pipe_byte_limit: 1048576 net.inet.ip.dummynet.pipe_slot_limit: 100 net.inet.ip.dummynet.hash_size: 65536 net.inet.ip.fw.curr_dyn_buckets: 256 net.inet.ip.fw.dyn_buckets: 131072 Вставить ник Quote
Сильвер Posted March 3, 2011 Posted March 3, 2011 Добрый день. Столкнулись с проблемой с IPFW3: ipfw: setsockopt(IP_DUMMYNET_CONFIGURE): Cannot allocate memory vmstat -z |grep NetGraph что показывает в этот момент? Вставить ник Quote
G@riK Posted March 3, 2011 Author Posted March 3, 2011 Добрый день. Столкнулись с проблемой с IPFW3: ipfw: setsockopt(IP_DUMMYNET_CONFIGURE): Cannot allocate memory vmstat -z |grep NetGraph что показывает в этот момент? Попробуем, но, как я уже писал, при попытке что-либо ввести в консоли, сервер уходит в ребут. Вставить ник Quote
Сильвер Posted March 3, 2011 Posted March 3, 2011 А случайно нет ли на этой же машине ng_nat? Вставить ник Quote
G@riK Posted March 3, 2011 Author Posted March 3, 2011 А случайно нет ли на этой же машине ng_nat? Нет, на этом сервере делается только шейпинг. Вставить ник Quote
Сильвер Posted March 4, 2011 Posted March 4, 2011 А случайно нет ли на этой же машине ng_nat? Нет, на этом сервере делается только шейпинг. Тогда можно не смотреть. Обновляйтесь на всякий случай до Stable, включайте отладку и пытайтесь снять дампы. Если получится, пишите pr, если нет - пишите в freebsd-ipfw@. Может вам повезёт больше. Вставить ник Quote
G@riK Posted March 4, 2011 Author Posted March 4, 2011 Может вам повезёт больше. Это тоже наше сообщение :) Вставить ник Quote
Ilya Evseev Posted March 5, 2011 Posted March 5, 2011 net.inet.ip.dummynet.hash_size: 65536net.inet.ip.fw.dyn_buckets: 131072 Не многовато? imho можно смело уменьшить раз в 8. Вставить ник Quote
G@riK Posted March 15, 2011 Author Posted March 15, 2011 (edited) Уменьшили, но поведение осталось таким же. Т.е. когда в 3 ночи перезапускаем ipfw, количество памяти уменьшается. Начало /etc/rc.firewall: IPFW="/sbin/ipfw -fq" $IPFW flush $IPFW pipe flush $IPFW queue flush for tables in 1 2 3 4 5 6 7 8 10 11 20 21 40 41 80 81 120 121 122 123 110 111 112 113 42 43 44 45 46 47 48 49 50 51 52 do ipfw table "$tables" flush done ... Т.е. очищаем таблицы и перечитываем правила (в примере выше не показано). Edited March 15, 2011 by G@riK Вставить ник Quote
snark Posted April 1, 2011 Posted April 1, 2011 for tables in 1 2 3 4 5 6 7 8 10 11 20 21 40 41 80 81 120 121 122 123 110 111 112 113 42 43 44 45 46 47 48 49 50 51 52 do ipfw table "$tables" flush done if [ -n "`ipfw table all list`" ]; then ipfw table all flush fi не? Вставить ник Quote
arni Posted April 6, 2011 Posted April 6, 2011 Похоже на мемлик, который недавно устранили : http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/156083 Сам наткнулся на эту багу, а после патча все нормализовалось. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.