Giann , però ad esempio gestire le PPPoE ancora in single core (correggetemi se sbaglio)
In realtà quella è solo la configurazione di default che dipende dall'hashing hardware dei pacchetti che fanno le schede di rete per smistarle nelle loro code. C'è un meccanismo in base al quale i pacchetti vengono smistati sulle code della scheda dei in base all'hash che è fatto all'header IP (v4 o v6) dei pacchetti. Quando c'è il frame PPP fra Ethernet e IP, l'hash hardware non funziona e i pacchetti finiscono tutti nella stessa coda.
Di default (net.isr.dispatch=direct
), FreeBSD processa tutto il pacchetto in un singolo interrupt - in questo modo siccome un singolo core è associato ad una specifica coda, l'interrupt finisce chiamare sempre lo stesso core. Impostando net.isr.dispatch=deferred
l'interrupt si limita a prelevare il pacchetto e lo mette poi in una coda dalla quale possono prelevare tutti i core per completare l'elaborazione. Se non c'è PPPoE di mezzo è più efficiente il primo meccanismo, se c'è PPPoE conviene abilitare il secondo, se un core non ce la fa a starci dietro.
Giann perché lo trovo "più indietro" rispetto a Linux,
Sono tutte e due fimasti fermi indietro di 50 anni, ma questo è un altro discorso... il problema è che nessuno ormai osa più scrivere un OS moderno che non abbia un design vecchio di decenni.
Giann on essere compatibile con cake ma solo con fq_codel
Prima di fasciarsi la testa però è utile fare delle misure quantitative per vedere se il problema c'è sul serio nel tuo caso e quindi richiede una soluzione o il bufferbloat non avviene.