Ad esempio, abbiamo 1 CPU con 8 core. Quanti massimi CPU-Core diversi possono essere utilizzati per l'elaborazione di un pacchetto IP quando passa su Eth0-> TCP/IP-> App (esclude l'elaborazione in Applicazione)?Quanti massimi CPU-Core diversi possono essere utilizzati per l'elaborazione di un pacchetto IP?
Ad esempio, potrebbe essere di 3 CPU-core:
- hardware Interrupt di processo
- calcolo del checksum del processo
- processo di copia del kernel-space -> user-space (il cui puntatore è stato inviato la presa)
Questo è molto importante per le prestazioni, poiché ogni trasferimento di dati tra i core è molto costoso.
Questa è una domanda molto interessante. Non sono sicuro della tua giustificazione sul perché è importante, ma è interessante dal punto di vista del design del kernel. – Owen
Mi sembra che un approccio più semplice e più fruttuoso al parallelismo sarebbe avere core diversi che lavorano su diversi pacchetti. E 2 e 3 possono essere scaricati da e CPU. E se è possibile elaborare più pacchetti per interruzione, è possibile ammortizzare il costo di 1. –
La maggior parte dell'hardware supporta già 2. 3 dipende dalla progettazione del sistema, ma è quasi da evitare. Viene fatto anche da diverse parti della pila. Ignorare completamente l'elaborazione dei pacchetti viene eseguita a diversi livelli, quindi in diversi moduli. Almeno i frame Ethernet raw non vengono normalmente spostati nello/dallo spazio utente. In generale, il kernal dovrebbe mantenere la località, ma non è una questione di frame Ethernet. – Olaf