РЕШЕНО - Использование двух ядер процессора Core 2 Duo

На доскональное знание данной темы, не может претендовать, пожалуй ни один спец, из ныне живущих на земле. ;-)
Так поможем друг другу.

Модераторы: Trinity admin`s, Free-lance moderator`s

Ответить
ambient_sky
Power member
Сообщения: 44
Зарегистрирован: 09 янв 2007, 09:58
Откуда: Slovakia
Контактная информация:

РЕШЕНО - Использование двух ядер процессора Core 2 Duo

Сообщение ambient_sky » 14 янв 2008, 12:36

Здравствуйте всем.
Бегает роутер на Debian Etch, kernel - 2.6.23.1 ( Ванилла, без патчей). На iptables только пар правил, NAT, ещё shaping [by HTB], трафик около 30Mbit/s (ап и даун). Ядро комрилировалось с поддержкой CPU Core 2 Duo, SMP и MultiCore Scheduler support включено прямо в ядро. Preemption Model - Low-Latency Desktop. Проблема в том, что роутинг/шейпинг/НАТ грузит только одно ядро CPU (смотрю с помощью htop, нагрузка ядра - bar красного цвета в htop). Что нужно сделать чтобы роутинг/NAT/шейпинг грузили оба ядра?
З.Ы. На оригинальном Дебиан ядре было тоже самое.

Всем заранее спасибо за ответы.
Последний раз редактировалось ambient_sky 19 фев 2008, 15:15, всего редактировалось 1 раз.

Аватара пользователя
setar
Site Admin
Site Admin
Сообщения: 1990
Зарегистрирован: 22 авг 2002, 12:03
Откуда: St. Petersburg

Сообщение setar » 14 янв 2008, 17:11

используется ли "-m state --state ESTABLISHED,RELATED" или тупо по правилам протаскиваем каждый пакет ??

я бы попробовал ещё патчи реального времени (Realtime - Complete Preemption)

ambient_sky
Power member
Сообщения: 44
Зарегистрирован: 09 янв 2007, 09:58
Откуда: Slovakia
Контактная информация:

Сообщение ambient_sky » 14 янв 2008, 18:12

-m state использую, да вобщем то и правил немного, в мангле ничего.
Около 600 клиентов, на каждого 6 правил QoS (tc filter, tc class).

gw-domino:/home/ra# iptables -nvL
Chain INPUT (policy ACCEPT 367K packets, 27M bytes)
pkts bytes target     prot opt in     out     source               destination
1046 66332 SSHD       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:23123
 38M   25G ACCEPT     0    --  lo     *       0.0.0.0/0            0.0.0.0/0
 130  115K DROP       0    --  eth4   *       10.0.0.0/8           0.0.0.0/0
  16   656 DROP       0    --  eth4   *       172.16.0.0/12        0.0.0.0/0
  63  2914 DROP       0    --  eth4   *       192.168.0.0/16       0.0.0.0/0
  12   936 DROP       0    --  eth4   *       169.254.0.0/16       0.0.0.0/0
   0     0 DROP       0    --  eth4   *       224.0.0.0/4          0.0.0.0/0
   0     0 DROP       0    --  eth4   *       240.0.0.0/4          0.0.0.0/0
   0     0 DROP       tcp  --  eth4   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:199
   0     0 DROP       udp  --  eth4   *       0.0.0.0/0            0.0.0.0/0           udp dpt:161
 518 39368 DROP       udp  --  eth4   *       0.0.0.0/0            0.0.0.0/0           udp dpt:123
   0     0 DROP       89   --  eth4   *       0.0.0.0/0            0.0.0.0/0
 457 45011 ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
33139 2606K ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 8
4184  379K ACCEPT     89   --  eth5   *       0.0.0.0/0            0.0.0.0/0
6636  550K ACCEPT     89   --  eth3   *       0.0.0.0/0            0.0.0.0/0
  24  1705 ACCEPT     udp  --  *      *       xxx.xxx.53.2           xxx.xxx.53.1          udp dpt:161

Chain FORWARD (policy ACCEPT 77M packets, 49G bytes)
pkts bytes target     prot opt in     out     source               destination
 115  8411 DROP       0    --  eth4   *       10.0.0.0/8           0.0.0.0/0
  99  4296 DROP       0    --  eth4   *       172.16.0.0/12        0.0.0.0/0
  16  1927 DROP       0    --  eth4   *       192.168.0.0/16       0.0.0.0/0
   0     0 DROP       0    --  eth4   *       169.254.0.0/16       0.0.0.0/0
   0     0 DROP       0    --  eth4   *       224.0.0.0/4          0.0.0.0/0
   0     0 DROP       0    --  eth4   *       240.0.0.0/4          0.0.0.0/0
 734 55985 DROP       0    --  *      eth4    0.0.0.0/0            10.0.0.0/8
  11   867 DROP       0    --  *      eth4    0.0.0.0/0            172.16.0.0/12
2990  243K DROP       0    --  *      eth4    0.0.0.0/0            192.168.0.0/16
  79  3808 DROP       0    --  *      eth4    0.0.0.0/0            169.254.0.0/16
   0     0 DROP       0    --  *      eth4    0.0.0.0/0            224.0.0.0/4
   0     0 DROP       0    --  *      eth4    0.0.0.0/0            240.0.0.0/4

Chain OUTPUT (policy ACCEPT 39M packets, 25G bytes)
pkts bytes target     prot opt in     out     source               destination
   0     0 DROP       0    --  *      eth4    0.0.0.0/0            10.0.0.0/8
   0     0 DROP       0    --  *      eth4    0.0.0.0/0            172.16.0.0/12
   0     0 DROP       0    --  *      eth4    0.0.0.0/0            192.168.0.0/16
   0     0 DROP       0    --  *      eth4    0.0.0.0/0            169.254.0.0/16
   0     0 DROP       0    --  *      eth4    0.0.0.0/0            224.0.0.0/4
   0     0 DROP       0    --  *      eth4    0.0.0.0/0            240.0.0.0/4

Chain SSHD (1 references)
pkts bytes target     prot opt in     out     source               destination
1046 66332 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:23123

gw-domino:/home/ra# iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 1250K packets, 88M bytes)
pkts bytes target     prot opt in     out     source               destination
  68  3366 DNAT       0    --  eth4   *       0.0.0.0/0            xxx.xxx.53.32         to:192.168.49.121
  45  3332 DNAT       0    --  eth4   *       0.0.0.0/0            xxx.xxx.53.45         to:192.168.50.81

Chain POSTROUTING (policy ACCEPT 97150 packets, 7678K bytes)
pkts bytes target     prot opt in     out     source               destination
   0     0 SNAT       0    --  *      eth4    192.168.50.81        0.0.0.0/0           to:xxx.xxx.53.45
 279 15547 SNAT       0    --  *      eth4    192.168.49.121       0.0.0.0/0           to:xxx.xxx.53.32
  16  1199 SNAT       0    --  *      eth4    192.168.220.6        0.0.0.0/0           to:xxx.xxx.53.82
   0     0 SNAT       0    --  *      eth4    192.168.40.20        0.0.0.0/0           to:xxx.xxx.53.200
   0     0 SNAT       0    --  *      eth4    10.200.200.0/24      0.0.0.0/0           to:xxx.xxx.53.200
142K 9141K SNAT       0    --  *      eth4    10.0.0.0/8           0.0.0.0/0           to:xxx.xxx.16.126
   0     0 SNAT       0    --  *      eth4    172.16.0.0/12        0.0.0.0/0           to:xxx.xxx.16.126
753K   52M SNAT       0    --  *      eth4    192.168.0.0/16       0.0.0.0/0           to:xxx.xxx.16.126

Chain OUTPUT (policy ACCEPT 136 packets, 11033 bytes)
pkts bytes target     prot opt in     out     source               destination
Вложения
Clipboard01.jpg

Аватара пользователя
setar
Site Admin
Site Admin
Сообщения: 1990
Зарегистрирован: 22 авг 2002, 12:03
Откуда: St. Petersburg

Сообщение setar » 15 янв 2008, 22:31

да, дела...
не встречал такого, вопрос больше к ребятам которые занимаются кернел девелопментом.
попробую уточнить, реально ли вообще это раскидать по ядрам

and3008
Заслуженный сетевик
Сообщения: 1109
Зарегистрирован: 03 янв 2004, 23:30
Откуда: Н.Новгород

Сообщение and3008 » 15 янв 2008, 23:20

А кто сказал, что htop показывает верную информацию?

Версия его какая?

Начиная с версии 0.7 в htop появилась функция CPU affinity. Т.е. процесс можно повесить на конкретный CPU. Нажать надо кнопочку 'a'

Будет типа такая картинка: http://htop.sourceforge.net/affinity.png

ambient_sky
Power member
Сообщения: 44
Зарегистрирован: 09 янв 2007, 09:58
Откуда: Slovakia
Контактная информация:

Сообщение ambient_sky » 16 янв 2008, 02:53

htop версии 0.6.3, из дистрибутива. Насколько я понимаю - аффинити это возможность приделения процессу конкретного ядра/процессора. Конкретно к линуксовому ядру (т.е. в моём случае задачи роутинга/НАТа/шейпинга) ИМХО неприменимо. Поправьте плз если ошибаюсь.

Аватара пользователя
setar
Site Admin
Site Admin
Сообщения: 1990
Зарегистрирован: 22 авг 2002, 12:03
Откуда: St. Petersburg

Сообщение setar » 23 янв 2008, 10:56

беседовал с ребятами занимающимися разработкой ядра, коротко так:
загруженность ядер зависит от построения цепочек правил, если цепочки линейные этим занимается один процесс нагружая одно ядро, нужно использовать древовидные правила (не спрашивайте как это,  я сам не очень понимаю).
так же про htop было сказано что он в некоторых сочетаниях версия ядра+ версия htop может показывать неверные значения. (я думаю что оценочно смотреть его всё же можно)

ambient_sky
Power member
Сообщения: 44
Зарегистрирован: 09 янв 2007, 09:58
Откуда: Slovakia
Контактная информация:

Сообщение ambient_sky » 25 янв 2008, 17:46

Ага, большое спасибо за информацию.

ambient_sky
Power member
Сообщения: 44
Зарегистрирован: 09 янв 2007, 09:58
Откуда: Slovakia
Контактная информация:

Сообщение ambient_sky » 19 фев 2008, 14:51

Нашёл решение!
echo "2" > /proc/irq/19/smp_affinity

2 - это 2 ядро, 19 - IRQ сетевухи.

Нагрузку можно равномерно распределить на все ядра/ЦПУ.

helldomain
Junior member
Сообщения: 17
Зарегистрирован: 19 ноя 2005, 19:32
Откуда: Санкт-Петербург

Сообщение helldomain » 27 май 2008, 08:57

Используйте встроенный в ядро балансер irq.

Ответить

Вернуться в «Серверы - ПО, Unix подобные системы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей