Řekl bych, že tomu MSI-X je šumafuk, jestli to je jedno jádro z jednoho křemíku, nebo z jiné patice. To dle mě rozhodně neřeší. Problém vyvstane, když "něco" přehodí zpracování toho paketu na fyzicky jiný procesor. Sice je QPI kurňa rychlá, ale na L3 (nebo nedejbože L2) cache prostě nemá. Proto je pro naše účely lepší jednoprocesorová deska (je levnější, jednodušší) a do toho X jádrový procesor. A zase nemá smysl to přehánět ... záleží i na architektuře té cache, aby to přehazování nebylo i uvnitř toho čipu (i když bude stát méně, než přehazování po sběrnici). Stejně mám pocit, že by se nám víc líbila P4 vytuněná DDR3 paměťmi, PCIe řadičem a frekvencí 10GHz :-)
Jak to funguje je vidět zde na výpisu. Jenže to zjevně samo neřeší vztah víc síťových karet. A je to přitom vcelku fuk ... alespoň pro moje zatížení. On asi ani nemůže ... IP se při průchodu změní, tedy je jiný hash a tedy to odejde jinou frontou. Je to vlastně vysvětlení toho, proč raději nebrat víceprocesory.
cat /proc/interrupts
36: 0 3287284149 0 0 PCI-MSI-edge eth0-tx-0
37: 0 3524206145 0 0 PCI-MSI-edge eth0-tx-1
38: 0 0 3485284196 0 PCI-MSI-edge eth0-tx-2
39: 0 0 3503557503 0 PCI-MSI-edge eth0-tx-3
40: 3887101291 0 0 0 PCI-MSI-edge eth0-rx-0
41: 4103775932 0 0 0 PCI-MSI-edge eth0-rx-1
42: 0 3893604539 0 0 PCI-MSI-edge eth0-rx-2
43: 0 3966980993 0 0 PCI-MSI-edge eth0-rx-3
44: 0 0 1 0 PCI-MSI-edge eth0
48: 343183805 0 0 0 PCI-MSI-edge eth1-tx-0
49: 0 507105959 0 0 PCI-MSI-edge eth1-tx-1
50: 0 284386692 0 0 PCI-MSI-edge eth1-tx-2
51: 0 0 391352316 0 PCI-MSI-edge eth1-tx-3
52: 0 0 2954374222 0 PCI-MSI-edge eth1-rx-0
53: 0 0 0 3344080799 PCI-MSI-edge eth1-rx-1
54: 0 0 0 3229378466 PCI-MSI-edge eth1-rx-2
55: 3247770185 0 0 0 PCI-MSI-edge eth1-rx-3
56: 9 0 0 0 PCI-MSI-edge eth1
Jiná otázka by byla, kdyby to byl aplikační server. Škoda, že nemám živou ukázku. Ale asi to budu dál zkoumat, protože se mi nezdá toto. Je to to supermicro s E3-1230, ještě nenasazené v provozu. Nějak se mi tam nezdá, že jsou ty přerušení všechny v CPU0.
69: 1 0 0 0 0 0 0 0 PCI-MSI-edge eth4
70: 5621 0 0 0 0 0 0 0 PCI-MSI-edge eth4-TxRx-0
71: 3207 0 0 0 0 0 0 0 PCI-MSI-edge eth4-TxRx-1
72: 2636 0 0 0 0 0 0 0 PCI-MSI-edge eth4-TxRx-2
73: 3196 0 0 0 0 0 0 0 PCI-MSI-edge eth4-TxRx-3
74: 2815 0 0 0 0 0 0 0 PCI-MSI-edge eth4-TxRx-4
75: 3410 0 0 0 0 0 0 0 PCI-MSI-edge eth4-TxRx-5
76: 3274 0 0 0 0 0 0 0 PCI-MSI-edge eth4-TxRx-6
77: 2739 0 0 0 0 0 0 0 PCI-MSI-edge eth4-TxRx-7
Ten E3 Xeon ti bude stačit hodně dlouho ... mám na bráně starší X3470 (2.9GHz) a výkonu to má přehršel. Běžná síť, přes 2600 uživatelů, odhadem 3 tisíce počítačů, ve špičkách i přes 700Mbit (pps ti teď nepovím) a vytížení procesoru abys hledal funkcí magnify :-) Dělá NATku i shapper (obecně: nix-zahraničí, nix jedna class, do zahraničí co uživatel, to class).
Ani paměti není moc potřeba. Tedy je lepší vzít méně a rychlejší (dle specifikace - většinou čím víc, tím pomaleji jedou), než více. Samozřejmě využít všechny kanály. Já tam mám 4GB a dlouhodobé vytížení nejde přes 1.3GB.
Stejně se moc nedoporučuje vytěžovat ethernet na 100%, takže takovýto stroj ti bude stačit prostě na furt. Co pro vyšší rychlosti zatím netuším, všechny testy, datasheety atp. se týkají routingu, zatím nikdo tímto stylem neotestoval NAT+HTB. Ale asi se bude dát relativně běžnými prostředky na pár gigabitů dostat.
Tohle už je vyšší dívčí. Málokdo se s tím setkal. Velké sítě NAT většinou neřeší vůbec a bez conntracku i ten linux jde výkonem nahoru. Kromě toho se jim už spíš vyplatí nějaký HW router, pokud nepotřebuješ plné tabulky, nemusíš utrácet milióny (ale jenom statisíce :-). A shappery se přesouvají blíž ke klientům (to vyžaduje dobře nadimenzované páteře, což je ovšem u sítí našeho typu občas problém). Případně se na to vykašlou, plácnou se přes kapsu a koupí packeteera nebo allota.
A jestli sis dobře všiml jedné poznámky: přenosová kapacita v bajtech je poměrně nezajímavý údaj. Problém se ukáže až s nárůstem paketů za vteřinu. A pro všechno, co pracuje s konexemi (tedy conntrack) ještě počet nových konexí za vteřinu. Tedy jedna mrcha na ethernetu ti to teoreticky dokáže zbořit, zvlášť pokud jí necháš cucat gigo :-) Přitom to na přenosech jako takových vůbec nepoznáš.