[+] Rozdzielanie procesów mi

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2341
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

[+] Rozdzielanie procesów między jądra procesora

Post 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.
Załączniki
CPU.jpg
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post 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.
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2341
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Post autor: LordRuthwen »

Kart sieciowych mam 6, więc będę sprawdzał :)
Dzięki za naprowadzenie.
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Zerknij pod hasłem:

Kod: Zaznacz cały

smp affinity
lub:

Kod: Zaznacz cały

irq affinity
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/
Van Pytel
Beginner
Posty: 166
Rejestracja: 09 maja 2010, 17:05

Post autor: Van Pytel »

Awatar użytkownika
LordRuthwen
Moderator
Posty: 2341
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Post 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.
Załączniki
CPU-RX.jpg
ODPOWIEDZ