So I'm working on this kernel module that does some page table manipulation and I noticed that flushing a TLB entry is slow. How slow you ask? Over 100 ns per call to invlpg! That's 280 cycles or more. I'm willing to accept this...but for hardware supported paging and address translation this seems counterintuitive. Anyone know why this is so bad?
I'm running on a 4 core 2.8 Ghz Intel core i5