Перейти до

FreeBSD 8.2 & Polling


Рекомендованные сообщения

Всем привет !

Есть фря 8.2, сервак с сетевыми карточками: fxp0, em0, age0, re0.

Подскажите нужно ли включать polling на всех интерфейсах ? Или только на интеле ?

В инете пишут по разному, у кого какие реальные результаты.

Спасибо.

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

Оффтоп, но может кто-то посоветует, как на интеловых картах распаралеливать ппое траффик по нескольким прерываниям.

 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 ядер свободны.

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

Оффтоп, но может кто-то посоветует, как на интеловых картах распаралеливать ппое траффик по нескольким прерываниям.

 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 :)

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

Оффтоп, но может кто-то посоветует, как на интеловых картах распаралеливать ппое траффик по нескольким прерываниям.

 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.

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

при 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-адреса пакета).

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

мы тоже долго думалиискалимечтали...до конца просто поставили проц i5 с частотой 3,4 ггц и теперь НАС при 750мбитах(сетевуха igb.фря 7,4) по процу:

1-ое ядро на котором лежит РРРоЕ грузится ну максимум на 55%,

2-4 на 12-15 процентов...

тоисть вход распредиляется прекрасно по интерруптам, а весь исход по РРРоЕ грузит проц до 55%...

тоесть по расчетам 1 гиг прожует как раз с небольшим запасом...

 

до этого на делловском серваке с 2-мя двухядерными ксенонами по 3,3 ггц частоте проц в 98% впёрся при 580-600 мбитах....

вот вам и i5 )

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

при 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-адреса пакета).

можно ссылочку на патч? или де чего пачетать?

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

мы тоже долго думалиискалимечтали...до конца просто поставили проц 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 кппс могут дать большую нагрузку чем предыдущие все.

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

при 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-адреса пакета).

можно ссылочку на патч? или де чего пачетать?

ничего не тюнилось, просто родные дрова с сайта интел, НО не последние...так как именно последние глюкали очень сильно(система тупо раз в сутки зависала)

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

ничего не тюнилось, просто родные дрова с сайта интел, НО не последние...так как именно последние глюкали очень сильно(система тупо раз в сутки зависала)

 

интересует следующее

патч на распределение очередей

Подсказали вот такое. Незнаю или оно, нету пока тестовой машины - проверить. Обкатаю "напешу атчот".

# 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:

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

Подсказали вот такое. Незнаю или оно, нету пока тестовой машины - проверить. Обкатаю "напешу атчот".

он и есть. но сделан только для заголовков IP.

для заголовков ethernet (=PPPoE) его надо дописывать по аналогии.

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

  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];

не оно ли это? Или там есть какая-то особая магия о которой мы не знаем? Поделитесь...

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

  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];

не оно ли это? Или там есть какая-то особая магия о которой мы не знаем? Поделитесь...

Похоже что оно.

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

  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 и дрова игбы, картинко не поменялась. Заранее благодарны, с нас коньяк если будете у нас на колыме.

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

А не соблаговолит ли, глубокоуважаемых джин, кинуть уже пропатченными исходниками, кторые дают такие чудесные результаты, ибо - либо я что-то неправильно делаю, либо что-то пошло не так. Но даже пропачив if_ethersubr.c и дрова игбы, картинко не поменялась. Заранее благодарны, с нас коньяк если будете у нас на колыме.

Было бы время сделать все полностью не давал бы туманных ответов, а выкинул бы патч) А так увы, более ничего не имеем. Ежели у вас есть понимающие люди, можем списаться и покумекать вместе.

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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...