Czy IPTables korzysta z procesorów wielordzeniowych?


10

Czy każdy pakiet jest przetwarzany przez inny rdzeń? Czy jest to proces jednowątkowy?


2
Nie jestem pewien, dlaczego Chopper3 zamknął to pytanie. Aby odpowiedzieć na to pytanie: Iptables jest tak naprawdę tylko front-endem przestrzeni użytkownika dla zapory linuksowej, którą jest netfilter. Netfilter to tak naprawdę system haków w jądrze wokół przetwarzania pakietów. Każdy pakiet jest przetwarzany przez jądro, wyzwalając przerwanie. To, czy saldo jądra zakłóca na wielu procesorach, zależy od tego, ile ma lat. Zobacz ten wątek na StackOverflow na ten temat. stackoverflow.com/questions/7467688/...
JakePaulus

+1, ponieważ myślę, że to prawdziwe pytanie.
Sachin Divekar

@JakePaulus To równoważenie IRQ nigdy nie przypisze więcej niż jednego rdzenia do jednego przerwania. Więc zmiana rdzeni dla każdego pakietu na jednej linii nigdy nie nastąpi?
Nils

Z punktu widzenia pamięci podręcznej pamięci procesora przełączanie rdzeni dla pojedynczego połączenia nie ma większego sensu - prawdopodobnie nawet spowolniłoby rzeczy, gdyby te rdzenie nie dzieliły tej samej pamięci podręcznej. Ale dlaczego zadajesz to pytanie?
Nils

@Nils Przerwania generowane przez interfejs mogą zostać przekierowane na inny, mniej obciążony procesor. Ponadto wiele interfejsów może mieć swoje przerwania wysyłane do różnych procesorów w celu rozłożenia obciążenia. Myślę, że masz rację, że ruch z jednego interfejsu nie jest zrównoważony między procesorami na podstawie pakietu.
JakePaulus

Odpowiedzi:


6

Iptables jest tak naprawdę tylko front-endem przestrzeni użytkownika dla zapory linuksowej, którą jest netfilter. Netfilter to tak naprawdę system haków w jądrze wokół przetwarzania pakietów. Każdy pakiet jest przetwarzany przez jądro, wyzwalając przerwanie. To, czy saldo jądra zakłóca na wielu procesorach, zależy od tego, ile ma lat. Zobacz ten wątek na StackOverflow na ten temat. /programming/7467688/netfilter-hooks-on-multi-core-system

Jak wspomniał Nils, przerwania te nie byłyby zrównoważone w zależności od pakietu. Zostałyby zbalansowane według IRQ (na interfejs) lub ewentualnie przeniesione całkowicie na inny procesor, gdyby ktoś był zbyt zajęty.


alternatywnie możesz również zdławić swoje przerwania lub przydzielić je do różnych rdzeni. Widziałem w niektórych przypadkach, że łączą one wszystkie przerwania sieciowe z kilkoma rdzeniami, aby zapewnić ponowne zamówienie najmniejszej liczby pakietów i migrację procesów między rdzeniami.
chandank
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.