To me, that is amazing systems architectural design - so many different parts of a regular linux kernel all working together to let this fastpath happen.
Would such a thing be possible on Mac OSX's Mach ports or Windows's Named Pipes?
To me, that is amazing systems architectural design - so many different parts of a regular linux kernel all working together to let this fastpath happen.
Would such a thing be possible on Mac OSX's Mach ports or Windows's Named Pipes?
I assume this is what the author meant by “page table contention” as a bottleneck: Without TLB invalidation there would be no need for either process/thread to ever touch page tables in a scenario like this.
TLB has to be flushed for process context switch on x86 regardless of Windows/Linux - but modern systems typically allow it to be selectively flushed (the system can elect to not flush tlb for the shared mappings that exist in both processes).
TLB miss vs Cache miss are an order of magnitude apart, and multiple orders if the corresponding pte itself is resident in dcache.
What’s the mechanism for this? AFAIK one of the main motivations for the recent heated discussions on PostgreSQL adopting a threaded model would be eliminating TLB flushes in high-context-switch environments. Can Linux already preserve their (massive) shared mappings?
The OS juggles these based on what processes are resident on CPU and the various active mappings then uses INVPCID[0] during a context switch.
It's not just the algo's, it's very much the latency.
( eg: https://www.velvetech.com/blog/fpga-in-high-frequency-tradin... )
if(((i%3)||(i%5))== 0)
buy_0_day_to_expiry_options() if (is_trading_day())
buy_0_day_to_expiry_options()