<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 5, 2016 at 12:57 PM, Dave Täht <span dir="ltr"><<a href="mailto:dave@taht.net" target="_blank">dave@taht.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
<br>
On 1/5/16 10:27 AM, Jonathan Morton wrote:<br>
> Undoubtedly.  But that beefy quad-core CPU should be able to handle it<br>
> without them.<br>
<br>
</span>Sigh. It's not just the CPU that matters. Context switch time, memory<br>
bus and I/O bus architecture, the intelligence or lack thereof of the<br>
network interface, and so on.<br>
<br>
To give a real world case of stupidity in a hardware design - the armada<br>
385 in the linksys platform connects tx and rx packet related interrupts<br>
to a single interrupt line, requiring that tx and rx ring buffer cleanup<br>
(in particular) be executed on a single cpu, *at the same time, in a<br>
dedicated thread*.<br>
<br>
Saving a single pin (which doesn't even exist off chip) serializes<br>
tx and rx processing. DUMB. (I otherwise quite like much of the marvel<br>
ethernet design and am looking forward to the turris omnia very much)<br>
<br>
...<br>
<br>
Context switch time is probably one of the biggest hidden nightmares in<br>
modern OOO cpu architectures - they only go fast in a straight line. I'd<br>
love to see a 1ghz processor that could context switch in 5 cycles.<br></blockquote><div><br></div><div>Seeing that most modern CPUs take thousands to tens of thousands of cycles to switch, 5 is similar to saying "instantly". Some of that overhead is shooting down the TLB and many layers of cache misses. You can't have different virtual memory space and not take some large switching overhead without devoting a lot of transistors to massive caches. And the larger the caches, the higher the latency.</div><div><br></div><div>Modern PC hardware can use soft interrupts to reduce hardware interrupts and context switching. My Intel i350 issues a steady about 150 interrupts per second per core regardless the network load, while maintaining tens of microsecond ping times. </div><div><br></div><div>I'm not sure what they could do with custom architectures, but there will always be an issue with context switching overhead, but they may be able to cache a few specific contexts knowing that the embedded system will rarely have more than a few contexts doing the bulk of the work.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Having 4 cores responding to interrupts masks this latency somewhat<br>
when having multiple sources of interrupt contending... (but see above -<br>
you need dedicated interrupt lines per major source of interrupts for<br>
it to work)<br>
<br>
and the inherent context switch latency is still always there. (sound<br>
cheshire's rant)<br>
<br>
The general purpose "mainstream" processors not handling interrupts well<br>
anymore is one of the market drivers towards specialized co-processors.<br>
<br>
...<br>
<br>
Knowing broadcom, there's probably so many invasive offloads, bugs<br>
and errata in this new chip that 90% of the features will never be<br>
used. But "forwarding in-inspected, un-firewalled, packets in massive<br>
bulk so as to win a benchmark race", ok, happy they are trying.<br>
<br>
Maybe they'll even publish a data sheet worth reading.<br>
<div class="HOEnZb"><div class="h5"><br>
><br>
> - Jonathan Morton<br>
><br>
><br>
><br>
> _______________________________________________<br>
> Bloat mailing list<br>
> <a href="mailto:Bloat@lists.bufferbloat.net">Bloat@lists.bufferbloat.net</a><br>
> <a href="https://lists.bufferbloat.net/listinfo/bloat" rel="noreferrer" target="_blank">https://lists.bufferbloat.net/listinfo/bloat</a><br>
><br>
_______________________________________________<br>
Bloat mailing list<br>
<a href="mailto:Bloat@lists.bufferbloat.net">Bloat@lists.bufferbloat.net</a><br>
<a href="https://lists.bufferbloat.net/listinfo/bloat" rel="noreferrer" target="_blank">https://lists.bufferbloat.net/listinfo/bloat</a><br>
</div></div></blockquote></div><br></div></div>