页面换出时 TLB 缓存刷新

页面换出时 TLB 缓存刷新

我最近听说Linux在该物理地址中的相应数据被换出时简单地刷新TLB缓存,导致TLB利用率不足。我不知道是否所有操作系统都这样做。

如果这是真的,那么增加 RAM 并避免上下文切换会将缓存保留在 TLB 中吗?

答案1

看来Linux内核对TLB和TLB缓存的处理方式是一样的。在独立于体系结构的级别上,没有像刷新部分​​或整个 TLB 缓存 AFAIK 这样的事情。例如,虚拟机将分页,并且此操作有一些挂钩,如果需要,将触发硬件相关的代码。根据 CPU 的不同,内核可能会对每个页面输出执行多次页面刷新,或者 CPU 支持页面刷新范围,或者两者都不支持,并且内核使用最昂贵的刷新来刷新整个缓存。

关于这个主题有两篇有趣的文章:

答案2

交换数据比删除 TLB 行(之后就没有任何用处)要昂贵得多。并且刷新整个 TLB 可能也便宜得多。

Linux 的大佬们绝对是性能狂人。如果他们按照您的说法进行操作,那是因为受影响的架构不允许有更好的事情(或者根本不重要)。

相关内容