Strona 1 z 1
[+] Rozdzielanie procesów między jądra procesora
: 13 grudnia 2012, 09:32
autor: LordRuthwen
Witam.
Chciałbym się dowiedzieć czy istnieje możliwość (zakładam, że tak) rozdzielenia procesów między jądra/rdzenie procesora.
Posiadam maszynę z procesorem Intel(R) Xeon(R) CPU E3-1220 V2 @ 3.10GHz i pracuje w zasadzie tylko jeden.
Załącznik CPU.jpg nie jest już dostępny
Dodatkowo pytanie czy dałoby się rozgraniczyć, że konkretnymi tablicami iptables ma zajmować się konkretny rdzeń?
Będzie tam około 30 różnych tablic, ich sumaryczny ruch to około 800 Mb/s w jedną stronę, ruch ten ma być filtrowany tak jak obecny (obecnie tablic jest 6 i około 250 Mb/s ruchu), stąd też chciałem to rozłożyć jakoś ładnie po rdzeniach.
: 13 grudnia 2012, 09:48
autor: lessmian2
Jak dla mnie, to nie ma sensu ręcznie przydzielać procesów do poszczególnych rdzeni procesora. Tym zajmuje się scheduler jądra i robi to bardzo dobrze. U Ciebie występuje trochę inny problem. Sterownik karty sieciowej działa jednowątkowo. Scheduler, jeśli przydzieli już proces do danego rdzenia, to stara się go nie przenosić, jeśli nie ma takiej potrzeby - stąd obciążenie tylko jednego rdzenia. Zainteresuj się, czy Twoja karta sieciowa i jej sterownik wspierają NAPI (rx polling mode) - w uproszczeniu, mechanizm ten stara się jak najbardziej rozrzucić przerwania generowane przez sterownik po wszystkich rdzeniach, co skutkuje rozłożeniem obciążenia. Często dystrybucyjne sterowniki mają tą opcję wyłączoną i trzeba sobie samemu przekompilować sterownik.
: 13 grudnia 2012, 10:00
autor: LordRuthwen
Kart sieciowych mam 6, więc będę sprawdzał

Dzięki za naprowadzenie.
: 13 grudnia 2012, 11:13
autor: mariaczi
Zerknij pod hasłem:
lub:
Co nieco np. tutaj:
http://nfsec.pl/root/3121
[Na trzepaku był temat poruszany, ale coś nie mogę znaleźć na szybko).
Edycja:
https://irqbalance.org/
: 16 grudnia 2012, 11:34
autor: Van Pytel
: 29 listopada 2013, 09:50
autor: LordRuthwen
Znalazłem rozwiązanie mojej bolączki. Nic nie muszę robić, wszystko jest i samo się robi.
Zainstalowałem:
irqbalance i po sprawie.
Dodane:
Drobna aktualizacja: zmieniłem maszynę (a przy okazji też i wersję systemu z Debiana 6 na Debiana 7) i irqbalance przestał działać jak trzeba, obciążył tylko dwa pierwsze rdzenie, dwa ostatnie się nudzą.
Rozwiązaniem, szytym na miarę, okazało się rozdzielenie przerwań na konkretne rdzenie za pomocą smp affinity - szybko łatwo i przyjemnie, bo mogę rx/tx każdego interfejsu przypisać konkretnemu rdzeniowi lub ich grupie, np. rdzeń 1, 2 i 3, a 0 nie.
Zmiana maszyny była spowodowana tym, że dostawała zadyszki przy ruchu powyżej 700 Mb/s, obecna jest delikatnie bardziej wydajna i 1,2 Gb/s nie robi na niej specjalnego wrażenia.