4.1. Corey: an operating system for many cores#
由于内核为了保护更多的数据,因此锁的竞争随着核数的增加变得日益严峻。共享数据 和锁的竞争开销,核间的TLB invalidation的开销让内核成为瓶颈。
主要的思想是避免在多核机器上做成本较高的操作。程序应该控制所有的共享,这里有 两层含义:
内核只使用本地的数据结构
内核暴露接口给用户态来让用户权衡收益和共享开销。
这样做的结果就是程序能定制处理器和共享内存的使用,来实现极致性能。内核默认 不在核间共享数据,但是如果应用程序需要共享数据时,内核具备这种能力。Adress trees可以控制哪些页表条目时核私有的,哪些时可以共享的。操作前者没有什么竞争, 而且也极少有核间的TLB Invalidations, 操作后者可以在lazily contruct时减少 soft page fault。内核可以让应用程序指定运行在哪个核上,减少竞争,通过共享内存 来实现IPC,避免陷入到内核态。