Перейти до

прерывания по ядрам проца


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

  Всем доброго дня!

  Задача простая, для спеца, помогите адаптировать скрипт для привязки прерываний по ядрам проца как вариант отсюда:

https://dadv.livejournal.com/139366.html

у меня два камня по 6-сть ядер, сетевые 10Г.

Ссылка на сообщение
Поделиться на других сайтах
  • Відповіді 50
  • Створено
  • Остання відповідь

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

[root@nas ~]# netstat -w1 -I ix1             input            ix1           output    packets  errs idrops      bytes    packets  errs      bytes colls     266321     0     0  344035762     1376

Будешь, будешь никуда не денешся.   https://forum.nag.ru/index.php?/topic/155130-freebsd-121-8xigb-schastya-ne-sluchilos-pomogite/

А вот в линуксе... ?

Posted Images

19 минут назад, a_n_h сказал:

  Всем доброго дня!

  Задача простая, для спеца, помогите адаптировать скрипт для привязки прерываний по ядрам проца как вариант отсюда:

https://dadv.livejournal.com/139366.html

у меня два камня по 6-сть ядер, сетевые 10Г.

А что не так из коробки? Какая версия ос?

Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, maxx сказал:

А что не так из коробки? Какая версия ос?

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

 

Ссылка на сообщение
Поделиться на других сайтах
23 минуты назад, a_n_h сказал:

экспериментировать на рабочем - не буду

Будешь, будешь никуда не денешся.

 

https://forum.nag.ru/index.php?/topic/155130-freebsd-121-8xigb-schastya-ne-sluchilos-pomogite/

  • Thanks 1
Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, KaYot сказал:

Будешь, будешь никуда не денешся.

 

https://forum.nag.ru/index.php?/topic/155130-freebsd-121-8xigb-schastya-ne-sluchilos-pomogite/

это уже видел, по скрипту можешь помочь?

Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, KaYot сказал:

Ну если там светлые умы во главе с Иваном не нашли решения - значит его нет.

Какая версия bsd?

нужно немного другое - разбросать прерывания сетевых на все ядра кроме 0-го.

цитирую отсюда:

https://dadv.livejournal.com/139366.html

"мы получим разнесение нулевых очередей разных интерфейсов igb по разным ядрам".

 

Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, a_n_h сказал:

нужно немного другое - разбросать прерывания сетевых на все ядра кроме 0-го.

цитирую отсюда:

https://dadv.livejournal.com/139366.html

"мы получим разнесение нулевых очередей разных интерфейсов igb по разным ядрам".

 

Так то для 7 фрихи. уже все переписанно 10 раз. И да, уже обсасывалось тут на форуме, для фрихи не нужно много ядер, нужна частоста.

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

Та до сраки тот скрипт. Помню во времена 7 фрихи помогало просто прибивание думминет в статику к 0 ядру. И нагрузка падала в разы.
man cpuset

Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, a_n_h сказал:

  Всем доброго дня!

  Задача простая, для спеца, помогите адаптировать скрипт для привязки прерываний по ядрам проца как вариант отсюда:

https://dadv.livejournal.com/139366.html

у меня два камня по 6-сть ядер, сетевые 10Г.

 

Если пппое то даже не играйся. Страдания очищают.

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

Уточню, я хочу убрать прерывания сетевых с 0-го ядра и оставить на нем только шейпер. Кто может помочь со скриптом?

Ссылка на сообщение
Поделиться на других сайтах
11 часов назад, KaYot сказал:

А вот в линуксе...

 

А что в Линуксе ? Какойто свой особый механизм RSS отличный от того который Inter заложил в архитектуру  82598EB ?

Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, Чучундра сказал:

А что в Линуксе ? Какойто свой особый механизм RSS отличный от того который Inter заложил в архитектуру  82598EB ?

Да, там в наличии софт-RSS называемый RPS. Можно включить на абсолютно любом железе и любом трафике.

Ссылка на сообщение
Поделиться на других сайтах
11 часов назад, a_n_h сказал:

Кто может помочь со скриптом?

 

Если не получается сделать автоматический скрипт, всегда же можно сделать руками.

Смотрим какие прерывания каких сетевых куда привязалась

#vmstat -ai | grep ix

Скорее всего лучше привязывать одну сетевую к одному процессору (чтобы избежать накладных расходов).

 

Привязываем первую сетевую

cpuset -l 0 -x 264 - пропускаем если хотим освободить 1е ядро.
cpuset -l 1 -x 265
cpuset -l 2 -x 266
cpuset -l 3 -x 267
cpuset -l 4 -x 268
cpuset -l 5 -x 269

Привязываем вторую сетевую

cpuset -l 7 -x 270 - пропускаем если хотим освободить 1е ядро.
cpuset -l 8 -x 271
cpuset -l 9 -x 272
cpuset -l 10 -x 273
cpuset -l 11 -x 273
cpuset -l 12 -x 273

Вернуть всё назад:

cpuset -l all

 

Но вот в линуксе .... :)))
 

  • Thanks 1
Ссылка на сообщение
Поделиться на других сайтах
50 минут назад, KaYot сказал:

Да, там в наличии софт-RSS называемый RPS. Можно включить на абсолютно любом железе и любом трафике.

 

И как эффективность этих софтварных костылей в сравнении с апаратным RSS ? 

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Чучундра сказал:

И как эффективность этих софтварных костылей в сравнении с апаратным RSS ? 

Шикарно.

Раскидывается любой трафик включая pppoe и qinq.

Настраивается одной командой.

Оверхед по ресурсам незаметный.

Я у себя на БРАСах rss на 82599 и не включал(все те же приколы с pppoe/dual tag), rps работает на ура.

В bsd же был подобный механизм netisr, как я понимаю проблема в 12 версии или с настройками, или вообще этот функционал сломали.

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Sоrk сказал:

 

Если не получается сделать автоматический скрипт, всегда же можно сделать руками.

Смотрим какие прерывания каких сетевых куда привязалась


#vmstat -ai | grep ix

Скорее всего лучше привязывать одну сетевую к одному процессору (чтобы избежать накладных расходов).

 

Привязываем первую сетевую


cpuset -l 0 -x 264 - пропускаем если хотим освободить 1е ядро.
cpuset -l 1 -x 265
cpuset -l 2 -x 266
cpuset -l 3 -x 267
cpuset -l 4 -x 268
cpuset -l 5 -x 269

Привязываем вторую сетевую


cpuset -l 7 -x 270 - пропускаем если хотим освободить 1е ядро.
cpuset -l 8 -x 271
cpuset -l 9 -x 272
cpuset -l 10 -x 273
cpuset -l 11 -x 273
cpuset -l 12 -x 273

Вернуть всё назад:


cpuset -l all

 

Но вот в линуксе .... :)))
 

не могу понять как увидеть, что ядро пропущено?

сейчас у меня так:

 

irq274: ix0:rxq0             29596385622       3922
irq275: ix0:rxq1             33744311933       4472
irq276: ix0:rxq2             33954968789       4500
irq277: ix0:rxq3             35729378578       4735
irq278: ix0:rxq4             33376476692       4423
irq279: ix0:rxq5             34195852351       4531
irq280: ix0:rxq6             34520995755       4575
irq281: ix0:rxq7             33012787218       4375
irq282: ix0:rxq8             29012983261       3845
irq283: ix0:rxq9             31046493718       4114
irq284: ix0:rxq10            30474822199       4038
irq285: ix0:rxq11            29883343925       3960
irq286: ix0:aq                         1          0
irq287: ix1:rxq0             31508582829       4175
irq288: ix1:rxq1             37638595294       4988
irq289: ix1:rxq2             38130247994       5053
irq290: ix1:rxq3             41004433258       5434
irq291: ix1:rxq4             37474567508       4966
irq292: ix1:rxq5             38623631542       5118
irq293: ix1:rxq6             38875899365       5152
irq294: ix1:rxq7             36431069859       4828
irq295: ix1:rxq8             28823369510       3819
irq296: ix1:rxq9             34704245264       4599
irq297: ix1:rxq10            33799119202       4479
irq298: ix1:rxq11            32901409324       4360
 

как правильно освободить 1-е ядро 1-го проца?

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, a_n_h сказал:

как правильно освободить 1-е ядро 1-го проца?

 

привязать 274-285 к ядрам 1-5 первого процессора

287-298 к ядрам к ядрам 0-6 второго процессора

 

логично предположить что тогда ни одно прерывание сетевой карты не будет привязано 0-му ядру первого процессора.

 

список ядер можно посмотреть как-то так:
sysctl dev.cpu

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

как то так

 

cpuset -l 0 -t $(procstat -t 0 | awk '/dummynet/ {print $2}')

CORE=0
for IRQS in `vmstat -i|grep ix0:q|awk '{print($1)}'|sed s/[^0-9]//g`; do
let "CORE+=1" >/dev/null
cpuset -l $CORE -x $IRQS
done

CORE=0
for IRQS in `vmstat -i|grep ix1:q|awk '{print($1)}'|sed s/[^0-9]//g`; do
let "CORE+=1" >/dev/null
cpuset -l $CORE -x $IRQS
done

CORE=0
for procid in `procstat -a -t |grep ix0:q|grep intr|awk '{print($2)}'|sed s/[^0-9]//g`; do
let "CORE+=1" >/dev/null
cpuset -l $CORE -t $procid
done

CORE=0
for procid in `procstat -a -t |grep ix1:q|grep intr|awk '{print($2)}'|sed s/[^0-9]//g`; do
let "CORE+=1" >/dev/null
cpuset -l $CORE -t $procid
done

  • Thanks 1
Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, KaYot сказал:

Раскидывается любой трафик включая pppoe и qinq.

 

qiniq я раскидывал на апаратном RSS, как оказалось после прочтения даташита RSS в 82599 поддерживает двойной vlan

Ссылка на сообщение
Поделиться на других сайтах
Только что, Чучундра сказал:

 

qiniq я раскидывал на апаратном RSS, как оказалось после прочтения даташита RSS в 82599 поддерживает двойной vlan

Но надо патчить драйвер. А с не-IP вообще ничего не поможет.

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

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

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

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

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

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

Вхід

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

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

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

  • Схожий контент

    • Від mac
      Глюк в тому, що один (так - тільки один) mac адрес onu існує в білінгу у вигляді строки. Це трохи заважає.
      olt - bdcom gepon.
      Наскільки зрозумів, це виключно проблема реалізації snmpwalk у freebsd, де snmpwalk може на свій розсуд віддати mac адресу не як hex-string, а як звичайний string.
      Можливо snmpwalk тригериться на якомусь символі, мені невідомо.
       
      # tcpdump -vv -i em0 udp port 161 and host olt and host ub | grep "3320.101.10.4.1.1.241 ... olt.snmp > ub.47940: [udp sum ok] { SNMPv2c C="*****" { GetResponse(44) R=93278354 E:3320.101.10.4.1.1.241="8LO"W*" } } ub.47940 > olt.snmp: [udp sum ok] { SNMPv2c C="*****" { GetNextRequest(34) R=93278355 E:3320.101.10.4.1.1.241 } } snmpwalk -c***** -v2c -t5 olt .1.3.6.1.4.1.3320.101.10.4.1.1 SNMPv2-SMI::enterprises.3320.101.10.4.1.1.241 = STRING: "8LO\"W*" snmpwalk -Ox -c***** -v2c -t5 olt .1.3.6.1.4.1.3320.101.10.4.1.1 SNMPv2-SMI::enterprises.3320.101.10.4.1.1.241 = Hex-STRING: 38 4C 4F 22 57 2A  
      Це стосується таких параметрів у snmp конфізі bdcom
       
      [signal] MACINDEX=".1.3.6.1.4.1.3320.101.10.4.1.1" [misc] ONUINDEX=".1.3.6.1.4.1.3320.101.11.1.1.3"  
      За для усунення глюку спробував трошки змінити код і завдати тип snmp параметру явно у ./api/libs/api.ponbdcom.php у function collect()
      Це працює. Мабуть станеться у нагоді:
       
      # diff api.ponbdcom.php{.new,.bak} 37c37 < $onuIndex = $this->snmp->walk('-Ox ' . $oltIp . ':' . self::SNMPPORT, $oltCommunity, $onuIndexOid, self::SNMPCACHE); --- > $onuIndex = $this->snmp->walk($oltIp . ':' . self::SNMPPORT, $oltCommunity, $onuIndexOid, self::SNMPCACHE); 91c91 < $macIndex = $this->snmp->walk('-Ox ' . $oltIp . ':' . self::SNMPPORT, $oltCommunity, $macIndexOID, self::SNMPCACHE); --- > $macIndex = $this->snmp->walk($oltIp . ':' . self::SNMPPORT, $oltCommunity, $macIndexOID, self::SNMPCACHE);  
      P.S. Створив тему, а зараз міркую: а може це глюк у ПЗ olt. Оновлю фірмваре olt та перевірю...
       

    • Від a_n_h
      Всем доброго дня и мирного неба!
        После многочисленных экспериментов выяснил, что на последних версиях freebsd  максимум удавалось прокачать до 14 ГБт суммарно трафика со 100% загрузкой процессора. На том-же железе но с установленной freebsd 11.2 прокачивается до 20-ти ГБт суммарно тестового трафика с загрузкой процессора около 50%. 
        Подскажите, что можно убрать или наоборот добавить в систему с freebsd 13,3 для получения аналогичного результата...
    • Від mac
      Здається, після оновлення PHP 7.4 до PHP 8.2 feesharvester припинив працювати:
       
      /usr/local/bin/curl "http://127.0.0.1/billing/?module=remoteapi&key={SERIAL}&action=feesharvester" <br /> <b>Fatal error</b>: Uncaught TypeError: Unsupported operand types: string - string in {UBPATH}/billing/api/libs/api.fundsflow.php:570 Stack trace: #0 {UBPATH}/billing/modules/remoteapi/feesharvester.php(22): FundsFlow-&gt;harvestFees('2024-01') ...  
      Невеличке розслідування врешті з'ясувало, що це через наявність пробілу у деяких логінах абонентів. Як так сталося? Тому що інколи був неуважно додан трейлінг пробіл до номеру будинка і цей пробіл потрапив до логіну абоненту. Логін абоненту неможливо змінити ніяким чином штатними засобами. Я не розглядаю створення нового абонента для усунення помілки.

      Був обран такий шлях вирішення проблеми. Заміну функції php explode() знайшов у мережі. Мабуть це станеться в нагоді:

       
      diff api.fundsflow.php.bak api.fundsflow.php.new 559c559 < $eachfee = explode(' ', $eachline); --- > $eachfee = preg_split("~(?<!\\\\)(?:\\\\{2})*'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(*SKIP)(*F)|\s+~s" , $eachline);  
    • Від FantoM_EscapE
      Хочу перенести свій білінг NODENY із фізичного сервера на віртуальний. Шукаю адміна який зможе допомогти у цьому питанні, так як нашого адміна банально призвали до війська. Вся схема на даний момент робоча, маю доступи до всього. Потрібно проінсталити на новішу версію FREEBSD, бо на моїй 10 річній вже не працюють нові SSL сертифікати. Кого зацікавила дана пропозиція - прошу у приватні повідомлення. обсудимо ціну і строки. або пишіть на будь-який месенджер 0677792091
    • Від rusol
      Добрый вечер.
       
      Есть от провайдера блок реальных адресов, к примеру 100.1.1.192/26
       
      Раньше сеть была в одном влане и записи в /etc/rc.conf были такие:

       
      ifconfig_ix0="inet 192.168.0.1 netmask 255.255.255.0" # Шлюз для пользователей с локальным IP ifconfig_ix0_alias0="inet 100.1.1.193 netmask 255.255.255.192" # Шлюз для пользователей с реальными IP  
      После чего стала задача часть пользователей переводить во вланы тоже с разделением на локальные IP и реальные, первый влан создал где-то пару лет назад и все работает:
       
      ifconfig_vlan1="vlan 1 vlandev ix0 192.168.1.1 netmask 255.255.255.0" # Шлюз для пользователей с локальным IP во Влане 1 ifconfig_vlan1_alias0="inet 100.1.1.248 netmask 255.255.255.248" # Шлюз для пользователей с реальными IP  во Влане 1  
      И вот стоит задача создать еще один влан, делаю по аналогии с вланом 1, только маску смещаю назад:
       
      ifconfig_vlan2="vlan 2 vlandev ix0 192.168.1.1 netmask 255.255.255.0" # Шлюз для пользователей с локальным IP во Влане 2 ifconfig_vlan2_alias0="inet 100.1.1.246 netmask 255.255.255.254" # Шлюз для пользователей с реальными IP во Влане 2  
      Когда я внес это в /etc/rc.conf и прописал команду:
       
      ifconfig vlan2 create  
      Все заработало.
       
      Но как только перезагрузился сервер, перестали работать реальные IP без вланов, в первом влане и во втором. Не пойму что не так делаю, возможно я с маской подсети что-то недопонимаю...

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