kvirtu 315 Posted 2012-04-19 08:15:25 Share Posted 2012-04-19 08:15:25 Всем привет ! Есть фря 8.2, сервак с сетевыми карточками: fxp0, em0, age0, re0. Подскажите нужно ли включать polling на всех интерфейсах ? Или только на интеле ? В инете пишут по разному, у кого какие реальные результаты. Спасибо. Link to post Share on other sites
nightfly 1,246 Posted 2012-04-19 08:20:04 Share Posted 2012-04-19 08:20:04 Нет, не нужно нигде. Посмотрите за окно - там 2012-й год. Link to post Share on other sites
KabaH 31 Posted 2012-04-19 08:23:52 Share Posted 2012-04-19 08:23:52 Полинг это анахронизм. Реальные поцоны юзают канонические Интеловские сетевые карточки умеющие управлять частотой прерываний. Link to post Share on other sites
LV10 281 Posted 2012-04-19 08:41:05 Share Posted 2012-04-19 08:41:05 polling ушел в небытие сразу после фряхи8 и дров от яндекса Link to post Share on other sites
kvirtu 315 Posted 2012-04-19 08:47:18 Author Share Posted 2012-04-19 08:47:18 понял, спс всем. Link to post Share on other sites
maxx 202 Posted 2012-04-19 14:34:53 Share Posted 2012-04-19 14:34:53 Оффтоп, но может кто-то посоветует, как на интеловых картах распаралеливать ппое траффик по нескольким прерываниям. PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 12 root 1 171 ki31 0K 16K CPU4 4 164.7H 97.75% idle: cpu4 14 root 1 171 ki31 0K 16K CPU2 2 163.4H 96.58% idle: cpu2 13 root 1 171 ki31 0K 16K CPU3 3 163.8H 91.80% idle: cpu3 11 root 1 171 ki31 0K 16K RUN 5 160.0H 77.44% idle: cpu5 16 root 1 171 ki31 0K 16K RUN 0 99.1H 58.54% idle: cpu0 [color=#ff0000] 32 root 1 -68 - 0K 16K CPU2 2 39.1H 52.73% irq256: igb0 [/color] 15 root 1 171 ki31 0K 16K CPU1 1 129.0H 48.54% idle: cpu1 65 root 1 -68 - 0K 16K CPU0 0 67.1H 37.74% dummynet 55 root 1 -68 - 0K 16K WAIT 5 334:24 21.68% irq268: igb1 53 root 1 -68 - 0K 16K WAIT 4 348:16 7.76% irq267: igb1 51 root 1 -68 - 0K 16K WAIT 3 333:13 7.52% irq266: igb1 45 root 1 -68 - 0K 16K RUN 0 401:31 6.93% irq263: igb1 33 root 1 -68 - 0K 16K - 5 262:24 5.13% igb0 que 47 root 1 -68 - 0K 16K WAIT 1 339:59 5.08% irq264: igb1 49 root 1 -68 - 0K 16K WAIT 2 342:34 4.93% irq265: igb1 3349 root 2 45 0 121M 41768K select 3 168:04 1.22% mpd5 Ибо такая картина нихера не радует. в праймтайм ложит 1 ядро проца в полку. Прибивание к нескольким ядрам только усугубляет результат. Остальные 5 ядер свободны. Link to post Share on other sites
sergeev 1 Posted 2012-04-19 18:05:54 Share Posted 2012-04-19 18:05:54 net.isr ? Link to post Share on other sites
adeep 212 Posted 2012-04-19 19:37:51 Share Posted 2012-04-19 19:37:51 Оффтоп, но может кто-то посоветует, как на интеловых картах распаралеливать ппое траффик по нескольким прерываниям. PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 12 root 1 171 ki31 0K 16K CPU4 4 164.7H 97.75% idle: cpu4 14 root 1 171 ki31 0K 16K CPU2 2 163.4H 96.58% idle: cpu2 13 root 1 171 ki31 0K 16K CPU3 3 163.8H 91.80% idle: cpu3 11 root 1 171 ki31 0K 16K RUN 5 160.0H 77.44% idle: cpu5 16 root 1 171 ki31 0K 16K RUN 0 99.1H 58.54% idle: cpu0 [color=#ff0000] 32 root 1 -68 - 0K 16K CPU2 2 39.1H 52.73% irq256: igb0 [/color] 15 root 1 171 ki31 0K 16K CPU1 1 129.0H 48.54% idle: cpu1 65 root 1 -68 - 0K 16K CPU0 0 67.1H 37.74% dummynet 55 root 1 -68 - 0K 16K WAIT 5 334:24 21.68% irq268: igb1 53 root 1 -68 - 0K 16K WAIT 4 348:16 7.76% irq267: igb1 51 root 1 -68 - 0K 16K WAIT 3 333:13 7.52% irq266: igb1 45 root 1 -68 - 0K 16K RUN 0 401:31 6.93% irq263: igb1 33 root 1 -68 - 0K 16K - 5 262:24 5.13% igb0 que 47 root 1 -68 - 0K 16K WAIT 1 339:59 5.08% irq264: igb1 49 root 1 -68 - 0K 16K WAIT 2 342:34 4.93% irq265: igb1 3349 root 2 45 0 121M 41768K select 3 168:04 1.22% mpd5 Ибо такая картина нихера не радует. в праймтайм ложит 1 ядро проца в полку. Прибивание к нескольким ядрам только усугубляет результат. Остальные 5 ядер свободны. PPPoE? попробуйте 9ку фрю и включенный net.isr. Возможно придется дописать патч в isr с хэш-функцией для разделения трафика по потокам(ядрам). Есть готовый для L3 Link to post Share on other sites
maxx 202 Posted 2012-04-19 19:45:25 Share Posted 2012-04-19 19:45:25 Оффтоп, но может кто-то посоветует, как на интеловых картах распаралеливать ппое траффик по нескольким прерываниям. PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 12 root 1 171 ki31 0K 16K CPU4 4 164.7H 97.75% idle: cpu4 14 root 1 171 ki31 0K 16K CPU2 2 163.4H 96.58% idle: cpu2 13 root 1 171 ki31 0K 16K CPU3 3 163.8H 91.80% idle: cpu3 11 root 1 171 ki31 0K 16K RUN 5 160.0H 77.44% idle: cpu5 16 root 1 171 ki31 0K 16K RUN 0 99.1H 58.54% idle: cpu0 [color=#ff0000] 32 root 1 -68 - 0K 16K CPU2 2 39.1H 52.73% irq256: igb0 [/color] 15 root 1 171 ki31 0K 16K CPU1 1 129.0H 48.54% idle: cpu1 65 root 1 -68 - 0K 16K CPU0 0 67.1H 37.74% dummynet 55 root 1 -68 - 0K 16K WAIT 5 334:24 21.68% irq268: igb1 53 root 1 -68 - 0K 16K WAIT 4 348:16 7.76% irq267: igb1 51 root 1 -68 - 0K 16K WAIT 3 333:13 7.52% irq266: igb1 45 root 1 -68 - 0K 16K RUN 0 401:31 6.93% irq263: igb1 33 root 1 -68 - 0K 16K - 5 262:24 5.13% igb0 que 47 root 1 -68 - 0K 16K WAIT 1 339:59 5.08% irq264: igb1 49 root 1 -68 - 0K 16K WAIT 2 342:34 4.93% irq265: igb1 3349 root 2 45 0 121M 41768K select 3 168:04 1.22% mpd5 Ибо такая картина нихера не радует. в праймтайм ложит 1 ядро проца в полку. Прибивание к нескольким ядрам только усугубляет результат. Остальные 5 ядер свободны. PPPoE? попробуйте 9ку фрю и включенный net.isr. Возможно придется дописать патч в isr с хэш-функцией для разделения трафика по потокам(ядрам). Есть готовый для L3 при net.isr swi1 отжирает 1 ядро в 0 и начинает дропать пакеты, параллелить никак не хочет, ввиду того что сетевой стек раскидывает на ядра по заголовакам айпи пакетов. В ппое траффике таковых нету так что внуренний интерфейс априори ложится на 1 ядро. На интерфейсе ошибки. при включенном более менее вменяемо пашет. в 9ке разве реализовано распараллеливание процессов по макам ? Че-то я на 2 насе поставил 9ку - картина 1 в 1. Link to post Share on other sites
adeep 212 Posted 2012-04-19 21:37:07 Share Posted 2012-04-19 21:37:07 при net.isr swi1 отжирает 1 ядро в 0 и начинает дропать пакеты, параллелить никак не хочет, ввиду того что сетевой стек раскидывает на ядра по заголовакам айпи пакетов. В ппое траффике таковых нету так что внуренний интерфейс априори ложится на 1 ядро. На интерфейсе ошибки. при включенном более менее вменяемо пашет. в 9ке разве реализовано распараллеливание процессов по макам ? Че-то я на 2 насе поставил 9ку - картина 1 в 1. сравните: включен isr: 12 root -72 - 0K 496K WAIT 2 0:02 7.67% intr{swi1: netisr 2} 12 root -72 - 0K 496K WAIT 1 0:02 7.28% intr{swi1: netisr 1} 12 root -72 - 0K 496K WAIT 0 0:05 4.20% intr{swi1: netisr 0} 12 root -72 - 0K 496K WAIT 3 0:02 4.20% intr{swi1: netisr 3} я что-то не так делаю? Вы упустили оба важных момента: фря 9.х и патч на распределение очередей - там достаточно просто, надо дописать строк 10-20 исходного кода, чтобы сделать распределение очередей на основе информации PPPoE заголовков (к примеру хэш на основе MAC-адреса пакета). Link to post Share on other sites
fastvd 62 Posted 2012-04-20 06:46:54 Share Posted 2012-04-20 06:46:54 мы тоже долго думалиискалимечтали...до конца просто поставили проц i5 с частотой 3,4 ггц и теперь НАС при 750мбитах(сетевуха igb.фря 7,4) по процу: 1-ое ядро на котором лежит РРРоЕ грузится ну максимум на 55%, 2-4 на 12-15 процентов... тоисть вход распредиляется прекрасно по интерруптам, а весь исход по РРРоЕ грузит проц до 55%... тоесть по расчетам 1 гиг прожует как раз с небольшим запасом... до этого на делловском серваке с 2-мя двухядерными ксенонами по 3,3 ггц частоте проц в 98% впёрся при 580-600 мбитах.... вот вам и i5 ) Link to post Share on other sites
maxx 202 Posted 2012-04-20 07:40:46 Share Posted 2012-04-20 07:40:46 при net.isr swi1 отжирает 1 ядро в 0 и начинает дропать пакеты, параллелить никак не хочет, ввиду того что сетевой стек раскидывает на ядра по заголовакам айпи пакетов. В ппое траффике таковых нету так что внуренний интерфейс априори ложится на 1 ядро. На интерфейсе ошибки. при включенном более менее вменяемо пашет. в 9ке разве реализовано распараллеливание процессов по макам ? Че-то я на 2 насе поставил 9ку - картина 1 в 1. сравните: включен isr: 12 root -72 - 0K 496K WAIT 2 0:02 7.67% intr{swi1: netisr 2} 12 root -72 - 0K 496K WAIT 1 0:02 7.28% intr{swi1: netisr 1} 12 root -72 - 0K 496K WAIT 0 0:05 4.20% intr{swi1: netisr 0} 12 root -72 - 0K 496K WAIT 3 0:02 4.20% intr{swi1: netisr 3} я что-то не так делаю? Вы упустили оба важных момента: фря 9.х и патч на распределение очередей - там достаточно просто, надо дописать строк 10-20 исходного кода, чтобы сделать распределение очередей на основе информации PPPoE заголовков (к примеру хэш на основе MAC-адреса пакета). можно ссылочку на патч? или де чего пачетать? Link to post Share on other sites
maxx 202 Posted 2012-04-20 07:58:23 Share Posted 2012-04-20 07:58:23 мы тоже долго думалиискалимечтали...до конца просто поставили проц i5 с частотой 3,4 ггц и теперь НАС при 750мбитах(сетевуха igb.фря 7,4) по процу: 1-ое ядро на котором лежит РРРоЕ грузится ну максимум на 55%, 2-4 на 12-15 процентов... тоисть вход распредиляется прекрасно по интерруптам, а весь исход по РРРоЕ грузит проц до 55%... тоесть по расчетам 1 гиг прожует как раз с небольшим запасом... до этого на делловском серваке с 2-мя двухядерными ксенонами по 3,3 ггц частоте проц в 98% впёрся при 580-600 мбитах.... вот вам и i5 ) ну у меня на 6 яйцевом феноме запас поболе будет. Но именно интересует распаралеливание для ппое траффика. ибо при 650 мегабитах по ядрам след картинка. http://clip2net.com/s/1PuNQ к 0 ядру прибит думинет прерывания внутреннего интерфейса к 1-2 но нагрузку ложит четко на 1. И это после тюнинга сетевухи. Кстати насчет запаса, я бы небыл столь категоричен. Нагрузка на яйца растет по экспоненте, так что лишние 20 кппс могут дать большую нагрузку чем предыдущие все. Link to post Share on other sites
fastvd 62 Posted 2012-04-23 06:55:47 Share Posted 2012-04-23 06:55:47 при net.isr swi1 отжирает 1 ядро в 0 и начинает дропать пакеты, параллелить никак не хочет, ввиду того что сетевой стек раскидывает на ядра по заголовакам айпи пакетов. В ппое траффике таковых нету так что внуренний интерфейс априори ложится на 1 ядро. На интерфейсе ошибки. при включенном более менее вменяемо пашет. в 9ке разве реализовано распараллеливание процессов по макам ? Че-то я на 2 насе поставил 9ку - картина 1 в 1. сравните: включен isr: 12 root -72 - 0K 496K WAIT 2 0:02 7.67% intr{swi1: netisr 2} 12 root -72 - 0K 496K WAIT 1 0:02 7.28% intr{swi1: netisr 1} 12 root -72 - 0K 496K WAIT 0 0:05 4.20% intr{swi1: netisr 0} 12 root -72 - 0K 496K WAIT 3 0:02 4.20% intr{swi1: netisr 3} я что-то не так делаю? Вы упустили оба важных момента: фря 9.х и патч на распределение очередей - там достаточно просто, надо дописать строк 10-20 исходного кода, чтобы сделать распределение очередей на основе информации PPPoE заголовков (к примеру хэш на основе MAC-адреса пакета). можно ссылочку на патч? или де чего пачетать? ничего не тюнилось, просто родные дрова с сайта интел, НО не последние...так как именно последние глюкали очень сильно(система тупо раз в сутки зависала) Link to post Share on other sites
maxx 202 Posted 2012-04-23 08:20:34 Share Posted 2012-04-23 08:20:34 ничего не тюнилось, просто родные дрова с сайта интел, НО не последние...так как именно последние глюкали очень сильно(система тупо раз в сутки зависала) интересует следующее патч на распределение очередей Подсказали вот такое. Незнаю или оно, нету пока тестовой машины - проверить. Обкатаю "напешу атчот". # cat if_ethersubr.c.patch *** if_ethersubr.c Fri Jan 13 09:52:49 2012 --- if_ethersubr.c_ Sun Oct 30 19:40:28 2011 *************** *** 622,627 **** --- 622,633 ---- ifp->if_imcasts++; } + m->m_flags |= M_FLOWID; + m->m_pkthdr.flowid = eh->ether_dhost[0] + eh->ether_dhost[1] + eh->ether_dhost[2] + eh->ether_dhost[3] + eh->ether_d + m->m_pkthdr.flowid += eh->ether_shost[0] + eh->ether_shost[1] + eh->ether_shost[2] + eh->ether_shost[3] + eh->ether_s + + + #ifdef MAC /* * Tag the mbuf with an appropriate MAC label before any other *************** *** 873,878 **** --- 879,908 ---- if ((m = ip_fastforward(m)) == NULL) return; isr = NETISR_IP; + + struct ipheader { + u_char offset [12]; //ip header fields not actually needed here + u_char src [4]; //ip src + u_char dst [4]; //ip dst + } __packed __aligned(4); + + if (m->m_pkthdr.len < sizeof(struct ipheader)) { //from ip_fastforward + if_printf(ifp, "flowid math: discard frame with too small headern"); + goto discard; + } + if (m->m_len < sizeof (struct ipheader) && + (m = m_pullup(m, sizeof (struct ipheader))) == NULL) { //ip_fastforward + if_printf(ifp, "flowid math: discard frame at pullupn"); + return; /* mbuf already free'd */ + } + struct ipheader *ip; + ip = mtod(m, struct ipheader *); + m->m_pkthdr.flowid += ip->src[0] + ip->src[1] + ip->src[2] + ip->src[3]; + m->m_pkthdr.flowid += ip->dst[0] + ip->dst[1] + ip->dst[2] + ip->dst[3]; + + //if_printf(ifp, "Calculated flow id %dn", m->m_pkthdr.flowid); + + break; case ETHERTYPE_ARP: Link to post Share on other sites
adeep 212 Posted 2012-04-23 09:28:53 Share Posted 2012-04-23 09:28:53 Подсказали вот такое. Незнаю или оно, нету пока тестовой машины - проверить. Обкатаю "напешу атчот". он и есть. но сделан только для заголовков IP. для заголовков ethernet (=PPPoE) его надо дописывать по аналогии. Link to post Share on other sites
Kto To 602 Posted 2012-04-24 20:26:50 Share Posted 2012-04-24 20:26:50 m->m_flags |= M_FLOWID; m->m_pkthdr.flowid = eh->ether_dhost[0] + eh->ether_dhost[1] + eh->ether_dhost[2] + eh->ether_dhost[3] + eh->ether_dhost[4] + eh->ether_dhost[5]; m->m_pkthdr.flowid += eh->ether_shost[0] + eh->ether_shost[1] + eh->ether_shost[2] + eh->ether_shost[3] + eh->ether_shost[4] + eh->ether_shost[5]; не оно ли это? Или там есть какая-то особая магия о которой мы не знаем? Поделитесь... Link to post Share on other sites
maxx 202 Posted 2012-05-09 18:12:15 Share Posted 2012-05-09 18:12:15 Поделитесь... Видимо не хотят делица. Link to post Share on other sites
adeep 212 Posted 2012-05-09 18:54:17 Share Posted 2012-05-09 18:54:17 m->m_flags |= M_FLOWID; m->m_pkthdr.flowid = eh->ether_dhost[0] + eh->ether_dhost[1] + eh->ether_dhost[2] + eh->ether_dhost[3] + eh->ether_dhost[4] + eh->ether_dhost[5]; m->m_pkthdr.flowid += eh->ether_shost[0] + eh->ether_shost[1] + eh->ether_shost[2] + eh->ether_shost[3] + eh->ether_shost[4] + eh->ether_shost[5]; не оно ли это? Или там есть какая-то особая магия о которой мы не знаем? Поделитесь... Похоже что оно. Link to post Share on other sites
maxx 202 Posted 2012-05-09 22:00:16 Share Posted 2012-05-09 22:00:16 m->m_flags |= M_FLOWID; m->m_pkthdr.flowid = eh->ether_dhost[0] + eh->ether_dhost[1] + eh->ether_dhost[2] + eh->ether_dhost[3] + eh->ether_dhost[4] + eh->ether_dhost[5]; m->m_pkthdr.flowid += eh->ether_shost[0] + eh->ether_shost[1] + eh->ether_shost[2] + eh->ether_shost[3] + eh->ether_shost[4] + eh->ether_shost[5]; не оно ли это? Или там есть какая-то особая магия о которой мы не знаем? Поделитесь... Похоже что оно. А не соблаговолит ли, глубокоуважаемых джин, кинуть уже пропатченными исходниками, кторые дают такие чудесные результаты, ибо - либо я что-то неправильно делаю, либо что-то пошло не так. Но даже пропачив if_ethersubr.c и дрова игбы, картинко не поменялась. Заранее благодарны, с нас коньяк если будете у нас на колыме. Link to post Share on other sites
adeep 212 Posted 2012-05-10 07:19:34 Share Posted 2012-05-10 07:19:34 А не соблаговолит ли, глубокоуважаемых джин, кинуть уже пропатченными исходниками, кторые дают такие чудесные результаты, ибо - либо я что-то неправильно делаю, либо что-то пошло не так. Но даже пропачив if_ethersubr.c и дрова игбы, картинко не поменялась. Заранее благодарны, с нас коньяк если будете у нас на колыме. Было бы время сделать все полностью не давал бы туманных ответов, а выкинул бы патч) А так увы, более ничего не имеем. Ежели у вас есть понимающие люди, можем списаться и покумекать вместе. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now