深入了解 Windows Server 2008 内核变化
2008-03-27 12:35:20 来源:WEB开发网在 Windows Server 2003 中,调度程序扩展此概念的方法是:将包含理想处理器的节点视为该线程的理想节点,并且当理想处理器正忙于执行另一个线程时,调度程序会尝试在理想节点中的另一个 CPU 上调度该线程。Windows Server 2003 内存管理器也支持 NUMA,并且在可能的情况下,它会将线程的内存分配定向到正在执行此线程的节点的内存中。
在 Windows Server 2008 中,内存管理器将内核的非分页内存缓冲区(内核和设备驱动程序用于存储必需保存在 RAM 中的数据的内存)分到各个节点,这样可以在产生分配的节点上为线程分配内存。系统页表项 (PTE) 是从发生分配的节点中分配,如果需要新页表页来满足内存分配,则会按照在 Windows Server 2003 中所采取的方式在相同的节点内存中分配,而不会从任何其他节点的内存中分配。
在 Windows Server 2003 中,当线程进行内存分配时,内存管理器在分配内存时将优先考虑在线程当前执行的节点中进行分配。如果线程暂时调度到非理想节点,则在此期间执行的所有分配操作都将在非理想节点中执行。所以,当线程最终回到其理想节点中执行时,它将不再像最初一样紧挨着所分配内存中存储的数据或代码。
为解决这一问题,在 Windows Server 2008 中,内存管理器在所有线程内存分配时都将优先考虑线程的理想节点,即使线程正在另一节点附近执行。内存管理器还能自动了解处理器和节点之间的延迟,所以当理想节点中没有足够的可用内存时,它会检查与理想节点最近的另一节点。此外,当线程引用代码或数据时,内存管理器将把其待机列表中的页面迁移到线程的理想节点。
希望控制分配位置的应用程序可使用新的 NUMA 内存 API,它使这些应用程序能够为内存分配、文件映射视图和文件映射对象指定首选节点。对于与文件映射相关的分配,内存管理器会检查映射操作是否指定节点,然后检查文件映射对象是否指定节点,如果两者都未指定,则最后它将回来继续选用线程的理想节点。
更多精彩
赞助商链接