关于affinity mask

来源:互联网 发布:浙江大学网络教育专业 编辑:程序博客网 时间:2024/05/19 09:36

affinity mask 选项

在 Microsoft® Windows NT® 4.0 和 Windows® 2000 中,进行中的活动(线程)可以在处理器间迁移,每次迁移都刷新处理器高速缓存。在系统负荷繁重的情况下,指定一个处理器运行某特定的线程可以提高系统性能,方法是减少处理器缓存重新加载的次数。处理器和线程之间的关联称为处理器亲和力。

利用 affinity mask 选项可以在系统负荷过重时提高对称多处理器 (SMP) 系统(多于 4 个处理器)的性能。可以将线程与特定的处理器相关联,并指定 Microsoft SQL Server™ 要使用的处理器。也可以使 SQL Server 的活动在已由 Windows NT 4.0 或 Windows 2000 操作系统指派了特定工作负荷的处理器之外的处理器上运行。

如果将代表某处理器的位设为 1,则该处理器将被选择进行线程分配。如果将 affinity mask 设为 0(默认值),则由 Windows NT 4.0 或 Windows 2000 调度算法设置线程的亲和力。当把 affinity mask 设为任一非零值,SQL Server 亲和力逻辑将该值解释为指定可选处理器的位掩码。使 SQL Server 线程不运行在特定的处理器上有助于评估系统对 Windows NT 4.0 或 Windows 2000 专用进程的处理能力。例如,可以使用 affinity mask 评估其它网络接口卡 (NIC) 是否提高了性能,或评定负荷增加时的 NIC 性能。

由于 SQL Server 处理器亲和力是一项特殊的操作,建议仅在需要时才使用该功能。大多数情况下,Windows NT 4.0 或 Windows 2000 的默认亲和力可提供最佳性能。

在更改 affinity mask 设置前,要注意 Windows NT 4.0 和 Windows 2000 将与 NIC 相关联的延迟进程调用 (DPC) 活动指派给系统中编号最大的处理器。在安装了多块活动的 NIC 的系统中,每一块额外卡的活动都分配给系统中下一个最高数字代号的处理器。例如,一个有八个处理器、两块 NIC 卡的系统分别把其 DPC 安排给处理器 7 和处理器 6。

说明  可以使用系统监视器(在 Windows NT 4.0 中是性能监视器)查看并分析个别处理器的使用情况。

 

例如,如果处理器 1、2 和 5 是可用的,且位 1、2 和 5 均设为 1,而位 0、3、4、6 和 7为 0,则指定十六进制值 0x26,即十进制值的 38。将位从右至左进行编号。最右边的位为位 0。设置位 1、2 和 5(即第 3、第 5 和第 6 位)为 1,则根据指定的位计算而得的数字为为二进制的 00100110,亦即十进制的 38 或十六进制的 0x26。

下面是一个八处理器系统的 affinity mask 值。

十进制值 二进制掩码 允许 SQL Server 线程运行在哪些处理器上 1 00000001 0 3 00000011 0 和 1 7 00000111 0、1 和 2 15 00001111 0、1、2 和 3 31 00011111 0、1、2、3 和 4 63 00111111 0、1、2、3、4 和 5 127 01111111 0、1、2、3、4、5 和 6(仅使 SQL Server 活动与 DPC 处理器隔离)

affinity mask 是一个高级选项。如果使用 sp_configure 系统存储过程更改设置,则仅当 show advanced options 设置为 1 时才能更改 affinity mask。该设置在服务器停止并重新启动后生效。 

原创粉丝点击