详解Windows Server 2008内核新变化
2008-08-21 12:36:42 来源:WEB开发网NUMA 系统通常是多处理器系统,其中的内存延迟随访问它的处理器不同而有所不同(请参见图 4)。内存被分成多个节点,CPU 和节点之间的延迟可能各不相同,并且每个 CPU 都被视为它可最快访问的那个节点的一部分。
图 4 示例 NUMA 系统
NUMA 系统(尤其是具有超过八个 CPU 的系统)通常比一致内存访问系统更加经济且性能更高。一致内存访问系统必须平等地为所有 CPU 提供内存,而 NUMA 系统则能够为直接连接到 CPU 的内存提供高速互连,同时为与 CPU 相隔较远的内存提供较为便宜但更高延迟的连接。
为能在 NUMA 系统中有效扩展,操作系统或应用程序必须了解节点拓扑结构,以便使计算能够在包含计算数据和代码的内存附近执行。例如,Windows 调度程序为每个线程分配一个所谓的理想处理器,该处理器是调度程序试图始终在其上执行该线程的 CPU。这样做可以使线程置于 CPU 缓存中的数据能够尽可能地在每次该线程运行时可用。
在 Windows Server 2003 中,调度程序扩展此概念的方法是:将包含理想处理器的节点视为该线程的理想节点,并且当理想处理器正忙于执行另一个线程时,调度程序会尝试在理想节点中的另一个 CPU 上调度该线程。Windows Server 2003 内存管理器也支持 NUMA,并且在可能的情况下,它会将线程的内存分配定向到正在执行此线程的节点的内存中。
在 Windows Server 2008 中,内存管理器将内核的非分页内存缓冲区(内核和设备驱动程序用于存储必需保存在 RAM 中的数据的内存)分到各个节点,这样可以在产生分配的节点上为线程分配内存。系统页表项 (PTE) 是从发生分配的节点中分配,如果需要新页表页来满足内存分配,则会按照在 Windows Server 2003 中所采取的方式在相同的节点内存中分配,而不会从任何其他节点的内存中分配。
更多精彩
赞助商链接