Na przykład mamy 1 procesor z 8 rdzeniami. Ile maksymalnie różnych rdzeni procesora można wykorzystać do przetwarzania jednego pakietu IP, gdy przechodzi on przez Eth0-> TCP/IP-> App (wyklucza przetwarzanie w aplikacji)?Ile maksymalnie różnych rdzeni procesora można wykorzystać do przetwarzania jednego pakietu IP?
Na przykład, może to być 3 CPU Cores:
- sprzętu Proces przerwania
- proces obliczania sumy kontrolnej
- proces kopiowania kernel-space -> user-space (którego wskaźnik został wysłany do gniazdo)
Jest to bardzo ważne dla wydajności, ponieważ każdy transfer danych między rdzeniami jest bardzo kosztowny.
To bardzo interesujące pytanie. Nie jestem pewien co do twojego uzasadnienia, dlaczego jest to ważne, ale jest interesujące z perspektywy projektowania jądra. – Owen
Wydaje mi się, że prostsze i bardziej owocne podejście do paralelizmu polegałoby na tym, że różne rdzenie pracują nad różnymi pakietami. I 2 i 3 mogą być odciążone i CPU. A jeśli możesz przetworzyć wiele pakietów na przerwanie, możesz zamortyzować koszt 1. –
Większość sprzętu już obsługuje 2. 3 zależy od projektu systemu, ale trudno go uniknąć. Robi się to także w różnych częściach stosu. Zupełnie ignoruj przetwarzanie pakietów odbywa się na różnych poziomach, a więc w różnych modułach. Przynajmniej ramki surowej sieci Ethernet zwykle nie są przenoszone do/z przestrzeni użytkownika. Ogólnie rzecz biorąc, kernal powinien zachować lokalność, ale to nie jest juist kwestia ramek Ethernetowych. – Olaf