浅谈Windows 上的线程亲和性(Thread affinity)

前言

        线程属性包括是否分离、亲和性、调度策略和优先级等。Linux默认的调度策略是CFS(完全公平调度算法),而 Windows 是基于优先级抢占式的策略。

        在这些方面,Windows 和 Linux 差异巨大。本文仅针对 Windows 系统的线程亲和性进行探讨。

线程亲和性(Thread affinity)

什么是线程亲和性(Thread affinity)?

        线程亲和性(Thread affinity)指进程和 CPU 核的亲和性,即线程在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性。

        通俗的说就是将线程绑定到 CPU 上某一个或多个核上。注意,此处的核是指逻辑核心,而非物理核心。

        称为线程绑定CPU,更好理解一些。

为什么要设置线程亲和性(Thread affinity)?

        简单说,为了提升执行效率。

        首先,这个问题是随着CPU多核多线程技术而来的。

        对于应用程序来说,感知到的是逻辑CPU,物理 CPU(主板上插着的CPU)包含多个核心,如常说8核CPU,就对应了8个逻辑CPU。超线程技术(Hyper-Threading)进一步,利用特殊的硬件指令将两个逻辑CPU模拟成两个两个物理CPU,实现了多核多线程。

        最终,逻辑CPU数量 = 物理CPU数量 x CPU cores x 2(如果支持并开启HT)

        在多核系统上,操作系统通常可以在不同内核之间自由移动进程和线程,以确保整体工作负载均匀分布在可用内核上。这在通用计算机(如同时运行大量应用程序的笔记本电脑)上非常有用。

        但是,移动进程和线程可能会导致性能问题。

        每个 CPU 有独立的缓存,即CPU cache(高速缓冲存储器)。缓存着进程、线程的数据。在不绑定 CPU 的情况下,线程会被系统调度到其他 CPU 上,CPU cache 命中率很低,需要从内存、硬盘加载对应的数据,代价非常昂贵。而绑定 CPU 后,线程始终(或大概率)跑在指定的CPU上,性能会有进一步的提升。        

       

        通过绑定CPU,减少上下文切换、缓存未命中和内存访问延迟提高了程序的执行效率。

什么时候需要设置线程亲和性(Thread affinity)?

        那么,是不是任何时候将线程绑定到特定 CPU 就能达到最佳执行效率呢?        

        不!

        设置线程亲和性通常是为了优化特定类型的应用程序的性能,特别是在那些对性能要求极高的场景中。例如高性能计算(High-Performance Computing, HPC)、实时系统(Real-time Systems)、数据库、多级缓存优化、特定硬件操作等。

        对于大多数常规的应用程序,操作系统的调度器已经足够智能,能够根据当前的系统负载和资源使用情况做出合理的调度决策。强制设置线程亲和性可能不会带来显著的性能提升,甚至可能引起一些问题,如资源利用率不均、系统响应性下降、兼容性问题、热管理问题甚至性能下降。

        在大多数情况下,让操作系统的调度器来管理线程调度是更好的选择。

如何设置线程亲和性

        在 Windows 上,通过任务管理器即可手动调整。     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/8388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手游广告归因新选择:Xinstall助力精准衡量投放效果

在手游市场竞争日益激烈的今天,广告主们面临着如何精准衡量广告投放效果的难题。手游广告归因平台的出现,为广告主们提供了一种全新的解决方案。而Xinstall,作为其中的佼佼者,正以其独特的优势,助力广告主们破解这一难…

​The Sandbox VoxEdit 迷你创作比赛|春天的资产

VoxEdit 迷你比赛 我们将为您带来一场新的 VoxEdit 迷你比赛!在为期 8 天的比赛中,您将有机会快速创建并展示您的可用资产。 立即下载 VoxEdit 并开始参赛吧: The Sandbox - VoxEdit 比赛主题: 设计与春季环境相关的资产。本次比…

前端高频面试题 5.08

事件委托 事件委托是前端开发中常用的一种优化性能和代码可维护性的方法,它基于DOM的事件冒泡机制。当一个元素触发事件时,这个事件会按照从顶层到底层的顺序传播,直到最底层的元素(通常是文档的根节点)。事件委托利用…

第1章. STM32单片机入门知识介绍

目录 0. 《STM32单片机自学教程》专栏 1.1 嵌入式系统简介 1.1.1 什么是嵌入式系统 1.1.2 嵌入式系统的特点 1.1.3 嵌入式系统的应用领域 1.2 单片机基本概念 1.3 ARM简介 1.3.1 ARM公司简介 1.3.2 ARM处理器简介 1.4 STM32简介 1.4.1 基于Cortex内核的MCU 1.4.…

分红76.39亿,分红率再创新高,成长活力无限的伊利带来丰厚回报

伊利47万股东,又等来了一个好消息。 4月29日,伊利股份发布2023年报,实现营业总收入1261.79亿元,归母净利润104.29亿元,双创历史新高,实现连续31年稳健增长。 在递交亮眼成绩单的同时,乳业巨头伊…

头歌实践教学平台:CG3-v2.0-图形几何变换

第3关:图形的平移与旋转 一. 任务描述 1. 本关任务 (1) 理解几何变换基本原理, 掌握平移和旋转变换的方法; (2) 根据几何变换基本原理,将main函数中的空白部分补充完整。 2. 输入 (1) 代码将自动输入一个边长为2的obj正方体模型,具体模型如下图&…

DDR4 SDRAM 和LPDDR4的区别

DDR4 SDRAM(Double Data Rate Fourth Generation Synchronous Dynamic Random-Access Memory)和LPDDR4(Low Power Double Data Rate Fourth Generation)都是内存技术的标准,但它们设计用于不同的平台,并在性能、功耗和物理尺寸方面有所差异: 应用领域: DDR4 SDRAM 主要…

Unity图文混排EmojiText的使用方式和注意事项

​​​​​​​ 效果演示: 使用方式: 1、导入表情 2、设置图片格式 3、生成表情图集 4、创建/修改目标材质球 5、测试 修复换行问题 修复前: 修复后: 修复代码: 组件扩展 1、右键扩展 2、组件归类&#…

【MySQL数据库设计规范】安全规范

欢迎点开这篇文章,自我介绍一下哈,本人笔名姑苏老陈,是一个JAVA开发老兵。 本文收录于 《MySQL数据库设计规范》专栏中,该专栏主要分享一些关于MySQL数据库设计相关的技术规范文章,定期更新,欢迎关注&#…

ansible-3

目录 一、Templates 模块 1.1.先准备一个以 .j2 为后缀的 template 模板文件,设置引用的变量 1.2.修改主机清单文件,使用主机变量定义一个变量名相同,而值不同的变量 1.3.编写 playbook 二、tags 模块 三、Roles 模块 四、编写模块 4…

环形链表问题详解

引言 环形链表的题大家都应该做过,如果没有做过可以去某扣上做一下 ,下面有传送门 141. 环形链表 - 力扣(LeetCode)https://leetcode.cn/problems/linked-list-cycle/submissions/530160081/ 正文 如果在面试的情况下出现了环形链表的题大…

43.乐理基础-拍号-常见的拍号与强弱关系

首先拍号的定义:39.认识音符、40.什么是一拍、41.小节、小节线、终止线、42.看懂拍号的意义 通过 39.认识音符、40.什么是一拍、41.小节、小节线、终止线、42.看懂拍号的意义 应该可以知道 Y的取值只能是2、4、8、16、32、64。。。。因为Y指的是Y分音符,…

数据结构之单单单——链表

一.链表 1)链表的概念 链表(Linked List)是一种物理存储结构上非连续,非顺序的储存结构,数据元素的逻辑顺序是通过链表中指针链接次序实现的。要注意,链表也是线性表----->但链表在物理结构上不是线性的…

(自适应手机端)物流运输快递仓储网站模板 - 带三级栏目

(自适应手机端)物流运输快递仓储网站模板 - 带三级栏目PbootCMS内核开发的网站模板,该模板适用于物流运输网站、仓储货运网站等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可;自适应手机端,同一个后台…

SOLIDWORKS Electrical电气元件智能开孔

实际的电气元器件安装中,一些元器件需要穿过孔洞安装,例如按钮、指示灯会在配电柜的控制面板上,需要穿过控制面板安装。这部分内容放在软件建模、装配时,往往比较复杂因为考虑孔的大小符合元器件规格、孔跟随元器件移动、同一元器…

MinimogWP WordPress 主题下载——优雅至上,功能无限

无论你是个人博客写手、创意工作者还是企业站点的管理员,MinimogWP 都将成为你在 WordPress 平台上的理想之选。以其优雅、灵活和功能丰富而闻名,MinimogWP 不仅提供了令人惊叹的外观,还为你的网站带来了无限的创作和定制可能性。 无与伦比的…

后端常用技能:解决java项目前后端传输数据中文出现乱码、问号问题

0. 问题背景 最近做一个解析数据的小工具,本地运行时都正常,发布到服务器上后在导出文件数据时发现中文全部变成了问号,特此记录下问题解决的思路和过程 1. 环境 java 1.8 springboot 2.6.13 额外引入了fastjson,commons-csv等…

5.1 Java全栈开发前端+后端(全栈工程师进阶之路)-服务端框架-MyBatis框架-相信我看这一篇足够

0.软件框架技术简介 软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也 指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。 框架的功能类似于基础设…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷1(私有云)

#需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包及镜像)或有问题的,可私聊博主!!! #需要资源(软件包…

XSKY SDS 6.4 重磅更新:NFS 性能飙升 3 倍,对象多站点等 10 多项功能强势升级

近日,XSKY星辰天合发布了 XSKY SDS V6.4 新版本,该版本在文件的性能提升、对象容灾能力完善方面改进异常显著,同时也大幅提高了存储系统的安全特性,适配更多的信创软硬件生态。 近来,软件定义存储(SDS&…