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

Иванов Денис

Пользователи
  • Публикации

    68
  • Зарегистрирован

  • Посещение

Все публикации пользователя Иванов Денис


  1. А что мешает на время подключить привод к материнской плате? Стойка? Попробуйте воспользоваться другими утилитами для подготовки флешки, например Linux Live USB
  2. Убедитесь что выполняете команду с привилегиями root. Попробуйте sudo modprobe netconsole ...
  3. Значит логи бесполезны. Как уже было сказано выше: нужно собрать все сообщения, которые ядро выплёвывает на экран. В статье по ссылке описаны два метода сбора сообщений ядра: через COM-порт и средствами модуля netconsole. Какой выбрали?
  4. Вам сюда: http://www.debian-administration.org/articles/492
  5. 16 суток - полёт нормальный... :) До того как обновить версию igb, мы сделали клон бриджа. Патч помог обоим : bridge1: kernel 2.6.33.20 + патч + igb 3.3.6 bridge2: kernel 2.6.33.20 + патч + igb 3.1.16 Всем огромное спасибо! Вопрос закрыт.
  6. Нагуглившись начитавшись о сабже и различных его реализациях, решил попробовать поиграться c адаптивным HLS. В перспективе хотелось бы применить технологию для публикации изображения с камеры на веб страничке, и чтобы была возможность просмотра с мобильных устройств на Android и iOS. Если верить википедии, то HLS работает в Android 3/4 и iOS 4.3/5 Рекомендованные форматы: для Android, для iOS C iOS всё просто: <html> <head> <title>Apple Test</title> <meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/> </head> <body style="background-color:#FFFFFF; "> <center> <video src="index.m3u8" controls autoplay ></video> </center> </body> </html> Но вот с Android уже не так просто. Если на Android установить Adobe Flash 11, то будет работать плеер основанный на OSMF, но его еще предстоит найти или написать. Смог нагуглить только два бесплатных плеера: 1) бета версия JWPlayer 2) плагин для MediaCore, который я так и не смог установить. Никаких инструкций по установке плагина тоже не нашёл. Ну чтож, выбора особо нет... Встроил jwplayer в страничку: <html> <head> <script type="text/javascript" src="player.js"></script> </head> <body> <div id="player">You need Flash to play this</div> <script type="text/javascript"> jwplayer("player").setup({ file: 'high.m3u8', flashplayer: 'player.swf', provider:'adaptiveProvider.swf', width: 300, height: 200, }); function loadStream(url) { jwplayer("player").load({file: url,provider: 'adaptiveProvider.swf'}); jwplayer("player").play(); return false; } </script> </body> </html> Денег конечно же нет, поэтому пришлось установить vlc 2 + apache2 на Ubuntu 11.10 amd64 По умолчанию vlc подтянул обычный libavcodec, но позже я заменил его на libavcodec-extra Первая попытка: vlc -I dummy -R rtsp://login:password@mycamera.org/live.sdp \ --sout='#std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/index.m3u8, \ index-url=http://mysite.org/segment-#.mts}, \ mux=ts{use-key-frames}, \ dst=/var/www/segment-#.mts}' Камера уже отдаёт H264 (AVC+AAC), поэтому без транскодинга. jwplayer проиграл первый сегмент и остановился издав несколько звуков похожих на щелчки. Попробовал отключить звук на камере и в vlc vlc -I dummy -R rtsp://login:password@mycamera.org/live.sdp \ --sout='#transcoding{acodec=none}:std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/index.m3u8, \ index-url=http://mysite.org/segment-#.mts}, \ mux=ts{use-key-frames}, \ dst=/var/www/segment-#.mts}' Не помогло. Попробовал с транскодингом звука: vlc -I dummy -R rtsp://login:password@mycamera.org/live.sdp \ --sout='#transcoding{acodec=aac}:std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/index.m3u8, \ index-url=http://mysite.org/segment-#.mts}, \ mux=ts{use-key-frames}, dst=/var/www/segment-#.mts}' Не помогло. Попробовал с транскодингом и звука и видео: vlc -I dummy -R rtsp://login:password@mycamera.org/live.sdp \ --sout='#transcoding{vcodec=h264,acodec=aac}:std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/index.m3u8, \ index-url=http://mysite.org/segment-#.mts}, mux=ts{use-key-frames}, dst=/var/www/segment-#.mts}' jwplayer не останвливается, но картинка очень сильно рассыпается - смотреть невозможно. Позже нашёл причину остановки jwplayer на форуме longtailvideo.com Получилось забирать H264 с камеры и транскодить только звук: vlc -I dummy -R rtsp://login:password@mycamera.org/live.sdp \ --sout='#transcoding{aenc=ffmpeg{aac-profile=low},acodec=mp4a,ab=128,channels=2,samplerate=44100}:std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/index.m3u8, \ index-url=http://mysite.org/segment-#.mts}, \ mux=ts{use-key-frames}, \ dst=/var/www/segment-#.mts}' Показывает отлично. Далее попробовал разбить поток на два: первый оригинальный - high.m3u8, а второй с заниженными разрешением, частотой кадров и битрейтом - low.m3u8 Указал их в общем index.m3u8 #EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=3000000 high.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=50000 low.m3u8 vlc -I dummy -R rtsp://login:password@mycamera.org/live.sdp \ --sout='#transcoding{aenc=ffmpeg{aac-profile=low},acodec=mp4a,ab=128,channels=2,samplerate=44100}:std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/high.m3u8, \ index-url=http://mysite.org/high-#.mts}, \ mux=ts{use-key-frames}, \ dst=/var/www/high-#.mts}' \ --sout='#transcoding{vcodec=h264,width=174,height=144,fps=12,vb=50,aenc=ffmpeg{aac-profile=low},acodec=mp4a,ab=128,channels=2,samplerate=44100}:std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/low.m3u8, \ index-url=http://mysite.org/low-#.mts}, \ mux=ts{use-key-frames}, dst=/var/www/low-#.mts}' Как работает "адаптивность" проверять не стал, т.к. в low.m3u8 рассыпается картинка. :( Проверял с разными источниками видео (камерами, файлами со статическим видео) - сыпется. Боюсь что сам не справлюсь с рассыпанием картинки, поэтому прошу помощи... :)
  7. Alex/AT, очередное спасибо! igb 3.3.6 не панацея. Пропатчили ядро. Ждём...
  8. В 3х случаях из 4х время kernel panic совпало с временем выполнения cron'ом элементарного сценария архивирования конфигов: #!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DEVREGEXP="/var$" MINAVAIL=1 cd /scripts/backup/tars/ # удалить старые архивы while [ "`df -g | grep $DEVREGEXP | awk '{ print $4 }'`" -le "$MINAVAIL" ]; do LIST=`ls -tr` rm `echo $LIST | awk '{print $1}'` done # сформировать имя файла архива: годмесяцденьчасминута-bridge.tar NAME=`date +%Y%m%d%H%M-linbridge.tar` # добавить в архив директории # /etc /root /usr/local/etc /usr/local/www /var/spool/cron/crontabs /scripts # исключая директории # /root/tmp /scripts/backup/tars cd /scripts/backup/tars/ tar vcpf $NAME --exclude /root/tmp --exclude /scripts/backup/tars /etc /root /usr/local/etc /var/spool/cron/crontabs /scripts # передать архив в хранилище lftp <<End-Of-Session open xxx.xxx.xxx.xxx user linbridge ******** put $NAME bye End-Of-Session Размер архива ~70МБ.
  9. Проработал неделю и наконец упал. :) [484747.917726] BUG: unable to handle kernel paging request at ffffc90012167000 [484747.917763] IP: [<ffffffff8124a2c3>] dev_queue_xmit+0x248/0x425 [484747.917794] PGD bf020067 PUD bf021067 PMD bd95a067 PTE 0 [484747.917820] Oops: 0000 [#1] SMP [484747.917839] last sysfs file: /sys/module/configfs/initstate [484747.917858] CPU 2 [484747.917875] Pid: 0, comm: swapper Not tainted 2.6.33.20 #1 SABERTOOTH X58/System Product Name [484747.917907] RIP: 0010:[<ffffffff8124a2c3>] [<ffffffff8124a2c3>] dev_queue_xmit+0x248/0x425 [484747.917941] RSP: 0018:ffff880001a43710 EFLAGS: 00010202 [484747.917960] RAX: ffff8800beeb2000 RBX: ffff8800b10f04e8 RCX: 0000000000000001 [484747.917990] RDX: ffff8800b0e10008 RSI: 0000000000010000 RDI: ffff8800b10f04e8 [484747.918020] RBP: ffff8800bb97e000 R08: 0000000080000000 R09: 0000000000000000 [484747.918050] R10: ffff8800b6c0d050 R11: 0000000000000000 R12: ffffc90012167000 [484747.918080] R13: ffff880037cac680 R14: 000000001ce20b03 R15: 0000000000001800 [484747.918110] FS: 0000000000000000(0000) GS:ffff880001a40000(0000) knlGS:0000000000000000 [484747.918142] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [484747.918160] CR2: ffffc90012167000 CR3: 00000000b78ea000 CR4: 00000000000006e0 [484747.918191] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [484747.918221] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [484747.918251] Process swapper (pid: 0, threadinfo ffff8800beebe000, task ffff8800bee85340) [484747.918282] Stack: [484747.918296] ffff8800b10f04e8 ffffffff812705cf ffff8800a5bb3a80 ffff8800b10f04e8 [484747.918322] <0> 0000000000000000 ffff8800b0e1250c 000000001ce20b03 ffffffff81271022 [484747.918360] <0> 0000000001a437d0 0000000001a437d0 0000000080000000 ffff8800bd860c00 [484747.918410] Call Trace: [484747.918425] <IRQ> [484747.918442] [<ffffffff812705cf>] ? ip_finish_output2+0x1c2/0x20f [484747.918462] [<ffffffff81271022>] ? ip_queue_xmit+0x2e5/0x346 [484747.918482] [<ffffffff812823db>] ? tcp_transmit_skb+0x6f9/0x737 [484747.918502] [<ffffffff81284974>] ? tcp_write_xmit+0x80c/0x8fc [484747.918524] [<ffffffffa037792c>] ? br_nf_post_routing+0x1a4/0x1b7 [bridge] [484747.918546] [<ffffffff81284ab7>] ? __tcp_push_pending_frames+0x22/0x4e [484747.918566] [<ffffffff8127e384>] ? tcp_data_snd_check+0x21/0xea [484747.918586] [<ffffffff812814d6>] ? tcp_rcv_state_process+0x8b0/0x8ee [484747.918607] [<ffffffff8128747f>] ? tcp_v4_do_rcv+0x2dc/0x33c [484747.918626] [<ffffffff8128837a>] ? tcp_v4_rcv+0x40d/0x665 [484747.918646] [<ffffffff8126714a>] ? nf_hook_slow+0x62/0xc3 [484747.918666] [<ffffffff8126d4e6>] ? ip_local_deliver_finish+0x0/0x1ae [484747.918686] [<ffffffff8126d623>] ? ip_local_deliver_finish+0x13d/0x1ae [484747.918707] [<ffffffff8126d0c3>] ? ip_rcv_finish+0x31f/0x34b [484747.918727] [<ffffffff8126d35a>] ? ip_rcv+0x26b/0x2a6 [484747.918746] [<ffffffffa03738e6>] ? br_handle_frame_finish+0x112/0x14d [bridge] [484747.918778] [<ffffffffa037752c>] ? br_nf_pre_routing_finish+0x258/0x27a [bridge] [484747.918809] [<ffffffff8126714a>] ? nf_hook_slow+0x62/0xc3 [484747.918829] [<ffffffffa03772d4>] ? br_nf_pre_routing_finish+0x0/0x27a [bridge] [484747.918862] [<ffffffff8100e996>] ? read_tsc+0x5/0x16 [484747.918882] [<ffffffffa03781ad>] ? br_nf_pre_routing+0x534/0x553 [bridge] [484747.918905] [<ffffffff810df7ca>] ? get_partial_node+0x15/0x82 [484747.918925] [<ffffffff812670a4>] ? nf_iterate+0x43/0x87 [484747.918945] [<ffffffffa03737d4>] ? br_handle_frame_finish+0x0/0x14d [bridge] [484747.918975] [<ffffffff8126714a>] ? nf_hook_slow+0x62/0xc3 [484747.918995] [<ffffffffa03737d4>] ? br_handle_frame_finish+0x0/0x14d [bridge] [484747.919028] [<ffffffffa03a6731>] ? igb_alloc_rx_buffers+0x121/0x310 [igb] [484747.919049] [<ffffffff8100e1b4>] ? nommu_map_page+0x0/0x9c [484747.919070] [<ffffffffa0373ad4>] ? br_handle_frame+0x1b3/0x1db [bridge] [484747.919091] [<ffffffff8124915f>] ? netif_receive_skb+0x340/0x45e [484747.919111] [<ffffffff81249533>] ? dev_gro_receive+0xd5/0x223 [484747.919131] [<ffffffff812493aa>] ? napi_skb_finish+0x1c/0x31 [484747.919151] [<ffffffffa03a7020>] ? igb_poll+0x700/0xb70 [igb] [484747.919171] [<ffffffff8100e996>] ? read_tsc+0x5/0x16 [484747.919190] [<ffffffff812498ca>] ? net_rx_action+0xa9/0x1cb [484747.919210] [<ffffffff8108fe01>] ? __rcu_process_callbacks+0xb4/0x278 [484747.919232] [<ffffffff810499e6>] ? __do_softirq+0xe0/0x1a2 [484747.919252] [<ffffffff8101cf7b>] ? lapic_next_event+0x18/0x1d [484747.919273] [<ffffffff8108c1e4>] ? handle_IRQ_event+0x55/0x109 [484747.919293] [<ffffffff8100991c>] ? call_softirq+0x1c/0x30 [484747.919312] [<ffffffff8100b03f>] ? do_softirq+0x3f/0x79 [484747.919331] [<ffffffff81049847>] ? irq_exit+0x36/0x79 [484747.919350] [<ffffffff8100a7a2>] ? do_IRQ+0xa3/0xb9 [484747.919369] [<ffffffff812f6093>] ? ret_from_intr+0x0/0x11 [484747.919387] <EOI> [484747.919404] [<ffffffff8100fd62>] ? mwait_idle+0x6d/0x78 [484747.919423] [<ffffffff8100fd14>] ? mwait_idle+0x1f/0x78 [484747.919444] [<ffffffff81007b7f>] ? cpu_idle+0xa3/0xdd [484747.919462] Code: ab a8 00 00 00 45 89 ed 66 8b 83 a6 00 00 00 49 c1 e5 07 4c 03 ad 00 03 00 00 80 e4 cf 80 cc 20 4d 8b 65 08 66 89 83 a6 00 00 00 <49> 83 3c 24 00 0f 84 d2 00 00 00 4d 8d 84 24 9c 00 00 00 4c 89 [484747.919627] RIP [<ffffffff8124a2c3>] dev_queue_xmit+0x248/0x425 [484747.919649] RSP <ffff880001a43710> [484747.919665] CR2: ffffc90012167000 [484747.919863] ---[ end trace d69d3035353cd75c ]--- [484747.919903] Kernel panic - not syncing: Fatal exception in interrupt [484747.919947] Pid: 0, comm: swapper Tainted: G D 2.6.33.20 #1 [484747.919990] Call Trace: [484747.920028] <IRQ> [<ffffffff812f3e3a>] ? panic+0x78/0x13d [484747.920097] [<ffffffff81044b13>] ? kmsg_dump+0xa1/0x145 [484747.920139] [<ffffffff812f6eaf>] ? oops_end+0xa9/0xb6 [484747.920182] [<ffffffff8102b36a>] ? no_context+0x1f4/0x201 [484747.920226] [<ffffffff812f6375>] ? page_fault+0x25/0x30 [484747.920271] [<ffffffff8124a2c3>] ? dev_queue_xmit+0x248/0x425 [484747.920314] [<ffffffff812705cf>] ? ip_finish_output2+0x1c2/0x20f [484747.920358] [<ffffffff81271022>] ? ip_queue_xmit+0x2e5/0x346 [484747.920401] [<ffffffff812823db>] ? tcp_transmit_skb+0x6f9/0x737 [484747.920445] [<ffffffff81284974>] ? tcp_write_xmit+0x80c/0x8fc [484747.920490] [<ffffffffa037792c>] ? br_nf_post_routing+0x1a4/0x1b7 [bridge] [484747.920534] [<ffffffff81284ab7>] ? __tcp_push_pending_frames+0x22/0x4e [484747.920579] [<ffffffff8127e384>] ? tcp_data_snd_check+0x21/0xea [484747.920623] [<ffffffff812814d6>] ? tcp_rcv_state_process+0x8b0/0x8ee [484747.920669] [<ffffffff8128747f>] ? tcp_v4_do_rcv+0x2dc/0x33c [484747.920712] [<ffffffff8128837a>] ? tcp_v4_rcv+0x40d/0x665 [484747.920755] [<ffffffff8126714a>] ? nf_hook_slow+0x62/0xc3 [484747.920797] [<ffffffff8126d4e6>] ? ip_local_deliver_finish+0x0/0x1ae [484747.920842] [<ffffffff8126d623>] ? ip_local_deliver_finish+0x13d/0x1ae [484747.920887] [<ffffffff8126d0c3>] ? ip_rcv_finish+0x31f/0x34b [484747.920930] [<ffffffff8126d35a>] ? ip_rcv+0x26b/0x2a6 [484747.920972] [<ffffffffa03738e6>] ? br_handle_frame_finish+0x112/0x14d [bridge] [484747.921029] [<ffffffffa037752c>] ? br_nf_pre_routing_finish+0x258/0x27a [bridge] [484747.921084] [<ffffffff8126714a>] ? nf_hook_slow+0x62/0xc3 [484747.921128] [<ffffffffa03772d4>] ? br_nf_pre_routing_finish+0x0/0x27a [bridge] [484747.921182] [<ffffffff8100e996>] ? read_tsc+0x5/0x16 [484747.923851] [<ffffffffa03781ad>] ? br_nf_pre_routing+0x534/0x553 [bridge] [484747.923895] [<ffffffff810df7ca>] ? get_partial_node+0x15/0x82 [484747.923938] [<ffffffff812670a4>] ? nf_iterate+0x43/0x87 [484747.923981] [<ffffffffa03737d4>] ? br_handle_frame_finish+0x0/0x14d [bridge] [484747.924036] [<ffffffff8126714a>] ? nf_hook_slow+0x62/0xc3 [484747.924079] [<ffffffffa03737d4>] ? br_handle_frame_finish+0x0/0x14d [bridge] [484747.924134] [<ffffffffa03a6731>] ? igb_alloc_rx_buffers+0x121/0x310 [igb] [484747.924179] [<ffffffff8100e1b4>] ? nommu_map_page+0x0/0x9c [484747.924224] [<ffffffffa0373ad4>] ? br_handle_frame+0x1b3/0x1db [bridge] [484747.924268] [<ffffffff8124915f>] ? netif_receive_skb+0x340/0x45e [484747.924311] [<ffffffff81249533>] ? dev_gro_receive+0xd5/0x223 [484747.924354] [<ffffffff812493aa>] ? napi_skb_finish+0x1c/0x31 [484747.924399] [<ffffffffa03a7020>] ? igb_poll+0x700/0xb70 [igb] [484747.924441] [<ffffffff8100e996>] ? read_tsc+0x5/0x16 [484747.924483] [<ffffffff812498ca>] ? net_rx_action+0xa9/0x1cb [484747.924526] [<ffffffff8108fe01>] ? __rcu_process_callbacks+0xb4/0x278 [484747.924570] [<ffffffff810499e6>] ? __do_softirq+0xe0/0x1a2 [484747.924614] [<ffffffff8101cf7b>] ? lapic_next_event+0x18/0x1d [484747.924657] [<ffffffff8108c1e4>] ? handle_IRQ_event+0x55/0x109 [484747.924699] [<ffffffff8100991c>] ? call_softirq+0x1c/0x30 [484747.924742] [<ffffffff8100b03f>] ? do_softirq+0x3f/0x79 [484747.924785] [<ffffffff81049847>] ? irq_exit+0x36/0x79 [484747.924827] [<ffffffff8100a7a2>] ? do_IRQ+0xa3/0xb9 [484747.924869] [<ffffffff812f6093>] ? ret_from_intr+0x0/0x11 [484747.924911] <EOI> [<ffffffff8100fd62>] ? mwait_idle+0x6d/0x78 [484747.925023] [<ffffffff81007b7f>] ? cpu_idle+0xa3/0xdd
  10. Благодарю! Не надеялся получить столько ответов. :) Ждём очередной kernel panic чтобы получить полный backtrace, затем пробуем свежие драйвера igb (3.3.6), отключить "засыпание CPU" и GRO. Если не поможет, то будем разбираться с предложенными патчами и другими ядрами.
  11. Забыл написать, что там же работает snmpd /usr/sbin/snmpd -Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid xxx.xxx.xxx.xxx
  12. Приветствую, уважаемые! Может кто-то сталкивался с такой ситуацией: Имеется бридж, который по совместительству еще и шейпер (LARTC: HTB+U32+SFQ). Пропускает до 2Гбит. Раз в несколько дней падает в kernel panic. Обычно падает не в пики активности, а тихо так - часов в 5 утра. Красными полосками отметил моменты сбоев на графике: Снимки экранов: (практически одинаковые) Debian 6.0.4 x86_64 с ядром 2.6.33.20 собранным из исходников от kernel.org и драйвером igb 3.1.16 от Intel. В .config исходников ядра только одно изменение: # CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set # CONFIG_HZ_300 is not set CONFIG_HZ_1000=y CONFIG_HZ=1000 igb: rmmod igb modprobe igb IntMode=2,2,2,2 InterruptThrottleRate=5000,5000,5000,5000 RSS=4,4,4,4 QueuePairs=1,1,1,1 LLIPort=80 service networking restart (только что заметил по ошибке скопипащенную опцию LLIPort=80 - уберу после очередной kernel panic :) ) Организован бондинг: br0 / \ bond0 bond1 / \ / \ eth0 eth1 eth2 eth3 modprobe bonding max_bonds=2 mode=4 downdelay=200 updelay=200 xmit_hash_policy=layer2+3 # /etc/network/interfaces auto eth0 iface eth0 inet manual bond-master bond0 auto eth1 iface eth1 inet manual bond-master bond0 auto eth2 iface eth2 inet manual bond-master bond1 auto eth3 iface eth3 inet manual bond-master bond1 auto bond0 allow-hotplug bond0 iface bond0 inet manual bond_mode 802.3ad bond_miimon 100 bond_downdelay 200 bond_updelay 200 bond_primary eth0 eth1 auto bond1 allow-hotplug bond1 iface bond1 inet manual bond_mode 802.3ad bond_miimon 100 bond_downdelay 200 bond_updelay 200 bond_primary eth2 eth3 auto br0 allow-hotplug br0 iface br0 inet static address xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx network xxx.xxx.xxx.xxx broadcast xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx bridge_ports bond0 bond1 bridge_maxwait 0 Тюнинг интерфейсов: # привязка очередей к ядрам CPU echo 1 > /proc/irq/`cat /proc/interrupts | grep 'eth0-TxRx-0' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 2 > /proc/irq/`cat /proc/interrupts | grep 'eth0-TxRx-1' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 4 > /proc/irq/`cat /proc/interrupts | grep 'eth0-TxRx-2' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 8 > /proc/irq/`cat /proc/interrupts | grep 'eth0-TxRx-3' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 10 > /proc/irq/`cat /proc/interrupts | grep 'eth1-TxRx-0' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 20 > /proc/irq/`cat /proc/interrupts | grep 'eth1-TxRx-1' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 40 > /proc/irq/`cat /proc/interrupts | grep 'eth1-TxRx-2' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 80 > /proc/irq/`cat /proc/interrupts | grep 'eth1-TxRx-3' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 80 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-0' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 40 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-1' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 20 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-2' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 10 > /proc/irq/`cat /proc/interrupts | grep 'eth2-TxRx-3' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 8 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-0' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 4 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-1' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 2 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-2' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity echo 1 > /proc/irq/`cat /proc/interrupts | grep 'eth3-TxRx-3' | awk -F \: '{printf $1}'| tr -d ' '`/smp_affinity # изменение размеров буферов ethtool -G eth0 rx 2048 ethtool -G eth0 tx 2048 ethtool -G eth1 rx 2048 ethtool -G eth1 tx 2048 ethtool -G eth2 rx 2048 ethtool -G eth2 tx 2048 ethtool -G eth3 rx 2048 ethtool -G eth3 tx 2048 # отключение flow control ethtool -A eth0 autoneg off rx off tx off ethtool -A eth1 autoneg off rx off tx off ethtool -A eth2 autoneg off rx off tx off ethtool -A eth3 autoneg off rx off tx off # изменение размера очереди передаваемых пакетов ifconfig eth0 txqueuelen 10000 ifconfig eth1 txqueuelen 10000 ifconfig eth2 txqueuelen 10000 ifconfig eth3 txqueuelen 10000 # установка параметров STP brctl stp br0 on brctl setfd br0 4 brctl setmaxage br0 6 brctl setbridgeprio br0 0 В iptables самые обычные правила, но используется ipset (из дистрибутива), conntrack выключен: rmmod iptable_nat rmmod nf_nat rmmod nf_conntrack_ipv4 rmmod nf_defrag_ipv4 rmmod nf_conntrack # cat /proc/net/ip_conntrack cat: /proc/net/ip_conntrack: Нет такого файла или каталога /etc/sysctl.conf # Controls source route verification net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.all.rp_filter = 0 # Do not accept source routing net.ipv4.conf.default.accept_source_route = 0 # Controls the System Request debugging functionality of the kernel kernel.sysrq = 0 # Controls whether core dumps will append the PID to the core filename # Useful for debugging multi-threaded applications kernel.core_uses_pid = 1 # Controls the use of TCP syncookies net.ipv4.tcp_syncookies = 1 # Controls the maximum size of a message, in bytes kernel.msgmnb = 65536 # Controls the default maxmimum size of a mesage queue kernel.msgmax = 65536 # Controls the maximum shared segment size, in bytes kernel.shmmax = 68719476736 # Controls the maximum number of shared memory segments, in pages kernel.shmall = 4294967296 net.core.wmem_default = 4194394 net.core.rmem_default = 8388608 net.core.wmem_max = 16777216 net.core.rmem_max = 16777216 net.ipv4.tcp_rmem = 8192 8388608 16777216 net.ipv4.tcp_wmem = 8192 4194394 16777216 net.ipv4.tcp_no_metrics_save = 1 net.core.netdev_max_backlog = 1000 net.core.somaxconn = 262144 net.ipv4.tcp_max_tw_buckets = 1440000 Как организован шейпер уже писал тут: http://forum.nag.ru/forum/index.php?showtopic=73649&view=findpost&p=695955 Клонировали эту систему на новую машину: ничего не изменилось. Отключили бы шейпер, но это может затянуться на несколько суток. В данный момент собираем сообщения ядра средствами netconsole и ждём очередной kernel panic...
  13. NiTr0, благодарю за отклик! :) Действительно, это совсем не то что нам нужно. К сожалению SC не дружит с большим количеством подсетей, поэтому нам не подходит. Попробовал хеш-фильтр и производительность увеличилась в разы. Спасибо, за отличный совет! :) Пример для 4х сетей, в которых по 254 абонента: 10.0.0.0/24 10.0.1.0/24 10.0.2.0/24 10.0.3.0/24 #!/bin/bash # сетевой интерфейс DEV='bond1' # скорость по умолчанию DEFAULT_RATE='2000mbit' # сброс tc q d dev $DEV root handle 1: htb # корневые дисциплина и класс tc q a dev $DEV root handle 1: htb default ffff tc c a dev $DEV parent 1: classid 1:1 htb rate $DEFAULT_RATE # хеш-фильтр tc f a dev $DEV parent 1:0 prio 5 protocol ip u32 tc f a dev $DEV parent 1:0 prio 5 handle 2: protocol ip u32 divisor 256 tc f a dev $DEV protocol ip parent 1:0 prio 5 u32 ht 800:: match ip dst 10.0.0.0/8 hashkey mask 0x000000ff at 16 link 2: # краевые класс и дисиплина по умолчанию tc c a dev $DEV parent 1:1 classid 1:ffff htb rate $DEFAULT_RATE tc q a dev $DEV parent 1:ffff handle 2: sfq perturb 10 # краевые классы, фильтры и дисциплины для ключа 1 tc c a dev $DEV parent 1:1 classid 1:2 htb rate 10mbit tc f a dev $DEV protocol ip parent 1:0 prio 5 u32 ht 2:1: match ip src 10.0.0.1 flowid 1:2 tc q a dev $DEV parent 1:2 handle 3: sfq perturb 10 tc c a dev $DEV parent 1:1 classid 1:3 htb rate 5mbit tc f a dev $DEV protocol ip parent 1:0 prio 5 u32 ht 2:1: match ip src 10.0.1.1 flowid 1:3 tc q a dev $DEV parent 1:3 handle 4: sfq perturb 10 tc c a dev $DEV parent 1:1 classid 1:4 htb rate 20mbit tc f a dev $DEV protocol ip parent 1:0 prio 5 u32 ht 2:1: match ip src 10.0.2.1 flowid 1:4 tc q a dev $DEV parent 1:4 handle 5: sfq perturb 10 tc c a dev $DEV parent 1:1 classid 1:5 htb rate 1mbit tc f a dev $DEV protocol ip parent 1:0 prio 5 u32 ht 2:1: match ip src 10.0.3.1 flowid 1:5 tc q a dev $DEV parent 1:5 handle 6: sfq perturb 10 # ... еще 252 аналогичных блока ... # ... для ключа 254 (0xFE) tc c a dev $DEV parent 1:1 classid 1:100 htb rate 50mbit tc f a dev $DEV protocol ip parent 1:0 prio 5 u32 ht 2:fe: match ip src 10.0.0.254 flowid 1:100 tc q a dev $DEV parent 1:100 handle 101: sfq perturb 10 tc c a dev $DEV parent 1:1 classid 1:101 htb rate 8mbit tc f a dev $DEV protocol ip parent 1:0 prio 5 u32 ht 2:fe: match ip src 10.0.1.254 flowid 1:101 tc q a dev $DEV parent 1:101 handle 102: sfq perturb 10 tc c a dev $DEV parent 1:1 classid 1:102 htb rate 1mbit tc f a dev $DEV protocol ip parent 1:0 prio 5 u32 ht 2:fe: match ip src 10.0.2.254 flowid 1:102 tc q a dev $DEV parent 1:102 handle 103: sfq perturb 10 tc c a dev $DEV parent 1:1 classid 1:103 htb rate 20mbit tc f a dev $DEV protocol ip parent 1:0 prio 5 u32 ht 2:fe: match ip src 10.0.3.254 flowid 1:103 tc q a dev $DEV parent 1:103 handle 104: sfq perturb 10
  14. Господа, прошу помочь советом. :) Имеется бридж, который производит шейпинг входящего трафика нескольких тысяч абонентов. Всё это реализовано средствами Linux Traffic Control (tc). Т.к. приходится создавать тысячи классов и фильтров, была организована иерархия классов дисциплины HTB. Таким образом для каждого пакета может производится не от 1 до тысяч проверок, а от 3 до нескольких сотен (для нашей сети). 10.1.0.0/16 / \ / \ 10.1.2.0/24 10.1.3.0/24 / \ / \ / \ / \ 10.1.2.3 10.1.2.4 10.1.3.4 10.1.3.5 Как Вы думаете, если вдруг понадобится увеличить производительность, то поможет ли следующий подход: Средствами ipset для каждого тарифа создаётся iphash таблица. В таблицы добавляются IP адреса абонентов с соответствующими тарифами. ipset -N 8mbit ipset -A 10.1.2.123 # ... и т.д. ... ipset -N 50mbit ipset -A 10.1.2.124 # ... и т.д. ... ipset -N 2mbit ipset -A 10.10.9.234 # ... и т.д. ... Средствами iptables на внешнем интерфейсе пакеты маркируются идентификаторами тарифов. iptables -t mangle -A PREROUTING -i bond0 -m set --set 8mbit dst -j MARK --set-mark 8 iptables -t mangle -A PREROUTING -i bond0 -m set --set 50mbit dst -j MARK --set-mark 50 iptables -t mangle -A PREROUTING -i bond0 -m set --set 2mbit dst -j MARK --set-mark 2 А для tc остаётся создать несколько простых дисциплин, классов и фильтров: # внутренний сетевой интерфейс DEV='bond1' # скорость по умолчанию DEFAULT_RATE='100mbit' # сброс tc qdisc del dev $DEV root handle 1: htb # корневые дисциплина и класс tc qdisc add dev $DEV root handle 1: htb default 9999 tc class add dev $DEV parent 1: classid 1:1 htb rate $DEFAULT_RATE # краевые классы, фильтры и дисциплины для каждого тарифа: tc class add dev $DEV parent 1:1 classid 1:8 htb rate 8mbit tc filter add dev $DEV protocol ip parent 1:0 handle 8 flowid 1:8 tc class add dev $DEV parent 1:1 classid 1:50 htb rate 50mbit tc filter add dev $DEV protocol ip parent 1:0 handle 50 flowid 1:50 tc class add dev $DEV parent 1:1 classid 1:2 htb rate 2mbit tc filter add dev $DEV protocol ip parent 1:0 handle 2 flowid 1:2 # краевые класс и дисиплина по умолчанию tc class add dev $DEV parent 1:1 classid 1:9999 htb rate $DEFAULT_RATE tc qdisc add dev $DEV parent 1:9999 handle 2: sfq perturb 10 Стоит попробовать, или лучше сразу смотреть в сторону других решений? На всякий случай, пример текущей реализации без iptables и ipset: # сетевой интерфейс DEV='bond1' # скорость по умолчанию DEFAULT_RATE='100mbit' # сброс tc qdisc del dev $DEV root handle 1: htb # корневые дисциплина и класс tc qdisc add dev $DEV root handle 1: htb default 9999 tc class add dev $DEV parent 1: classid 1:1 htb rate $DEFAULT_RATE # классы и фильтры для 10-и сетей /16 tc class add dev $DEV parent 1:1 classid 1:2 htb rate $DEFAULT_RATE tc filter add dev $DEV protocol ip parent 1:0 u32 match ip dst 10.1.0.0/16 flowid 1:2 tc class add dev $DEV parent 1:1 classid 1:3 htb rate $DEFAULT_RATE tc filter add dev $DEV protocol ip parent 1:0 u32 match ip dst 10.2.0.0/16 flowid 1:3 # ... и т.д. ... tc class add dev $DEV parent 1:1 classid 1:11 htb rate $DEFAULT_RATE tc filter add dev $DEV protocol ip parent 1:0 u32 match ip dst 10.10.0.0/16 flowid 1:11 # краевые класс и дисиплина по умолчанию tc class add dev $DEV parent 1:1 classid 1:9999 htb rate $DEFAULT_RATE tc qdisc add dev $DEV parent 1:9999 handle 2: sfq perturb 10 # классы и фильтры для 100-а сетей /24 tc class add dev $DEV parent 1:2 classid 1:12 htb rate $DEFAULT_RATE tc filter add dev $DEV protocol ip parent 1:0 u32 match ip dst 10.1.0.0/24 flowid 1:12 tc class add dev $DEV parent 1:2 classid 1:13 htb rate $DEFAULT_RATE tc filter add dev $DEV protocol ip parent 1:0 u32 match ip dst 10.1.1.0/24 flowid 1:13 # ... и т.д. ... tc class add dev $DEV parent 1:11 classid 1:112 htb rate $DEFAULT_RATE tc filter add dev $DEV protocol ip parent 1:0 u32 match ip dst 10.10.9.0/24 flowid 1:112 # краевые классы, фильтры и дисциплины для пары тысяч абонентов tc class add dev $DEV parent 1:5 classid 1:113 htb rate 8mbit tc filter add dev $DEV protocol ip parent 1:0 u32 match ip dst 10.1.2.123 flowid 1:113 tc qdisc add dev $DEV parent 1:113 handle 3: sfq perturb 10 tc class add dev $DEV parent 1:5 classid 1:114 htb rate 50mbit tc filter add dev $DEV protocol ip parent 1:0 u32 match ip dst 10.1.2.124 flowid 1:114 tc qdisc add dev $DEV parent 1:114 handle 4: sfq perturb 10 # ... и т.д. ... tc class add dev $DEV parent 1:112 classid 1:2345 htb rate 2mbit tc filter add dev $DEV protocol ip parent 1:0 u32 match ip dst 10.10.9.234 flowid 1:2345 tc qdisc add dev $DEV parent 1:2345 handle 2232: sfq perturb 10
  15. Вопрос любителям Exim4: Очень хочется использовать Exim4 в качестве прозрачного SMTP прокси. Возможно ли это? Знаю что можно настроить его как открытый релей: (Ubuntu 8.04.4 LTS и Exim4 version 4.69-2ubuntu0.1) $ cat /etc/exim4/update-exim4.conf.conf # /etc/exim4/update-exim4.conf.conf # # Edit this file and /etc/mailname by hand and execute update-exim4.conf # yourself or use 'dpkg-reconfigure exim4-config' # # Please note that this is _not_ a dpkg-conffile and that automatic changes # to this file might happen. The code handling this will honor your local # changes, so this is usually fine, but will break local schemes that mess # around with multiple versions of the file. # # update-exim4.conf uses this file to determine variable values to generate # exim configuration macros for the configuration file. # # Most settings found in here do have corresponding questions in the # Debconf configuration, but not all of them. # # This is a Debian specific file dc_eximconfig_configtype='internet' dc_other_hostnames='-e false' dc_local_interfaces='' dc_readhost='' dc_relay_domains='*' dc_minimaldns='true' dc_relay_nets='локальная сеть' dc_smarthost='' CFILEMODE='644' dc_use_split_config='true' dc_hide_mailname='' dc_mailname_in_oh='true' dc_localdelivery='mail_spool' MAIN_TLS_ENABLE='true' Но этого не достаточно, т.к. некоторые почтовые клиенты (например Mozilla Thunderbird) с настроенной аутентификацией не могут отправлять почту. Объяснять абонентам о том что в почтовых клиентах нужно отключить аутентификацию - не самый лучший выход из ситуации.