全国协议5人面授小班,企业级独立开发考核,转业者的IT软件工程师基地 登录/注册 | 如何报名

免费领取试听课程

并获得专业顾问一对一进行选课辅导

课程名称不能为空
姓名不能为空
手机号码不能为空

领取成功

macOS是怎么进行核心分配的?

行业新闻 汉码未来 | mac 芯片

2022-05-23 09:46:44

在活动监视器的CPU历史窗口中,根据时间显示核心负载(即CPU%),最早的值显示在最左侧。左侧奇数序列号的核心是真实的核心,显示大负载下的8核英特尔至强W。右侧偶数序列号的核心是超线程模拟的虚拟核心,也负责处理大负载。

macOS是怎么进行核心分配的?

1.架构

CPU核心有两种M1系列芯片:

E核心,其内部处理单位约为P核心的一半,最大时钟频率为2064MHz。

P核心,频率最高,原始M1为324MHz,M1Pro/Max/Ultra为3228MHz。

CPU核心配置M1系列芯片有三种方式:

原始M1包含4个E和4个P核心,用于MacbookAir。

M1Pro和Max有2个E和8个P核心,用于14英寸和16英寸Macboo和MacstudioMax。

MacstudioUltra有4个E和16个P核心。

M1Pro芯片的缩水版在一些14寸MacbookPro笔记本中使用,其P核心数量从8个降到6个。

为了简化核心管理,macOS根据其功能将核心分为2~4个相同类型的核心。不幸的是,系统级别的核心编号(如powertrics等工具显示的核心编号)与活动监视器中看到的核心编号不同。为了与后者保持一致,我们在这里使用了活动监视器中看到的核心编号,但是集群的编号与系统的编号一致。在macosmonterey12.3.1中,三个芯片的功能如下:

在原始M1中,每种类型的核心只有一个簇,分别是E0和P0,每个簇包含四个核心的同一类型;

M1Pro和Max有一个串(E0)包含两个E核,两个串(P0和P1)分别包含四个P核;

M1Ultra有一个簇(E0)包含4个E核心,四个簇(P0.P1.P2.P3)分别包含4个P核心。

每个集群中的所有核心在同一时钟频率下运行,并且通常(但不是在所有情况下)保持集群中的负载平衡。偶尔,负载分配不均匀。在某些极端情况下,一些线程可能被分配到集群中的单个核心。

2.线程控制。

与Asashilinux不同,macos不支持直接访问核心。核心类型或集群,至少开放的API不提供这些功能。通常,它们需要由GrandCentraldispatch设置的服务质量来管理,MacOS使用这个功能来确定线程管理策略。

最低QOS的线程只能在E簇上运行,较高的QOS的核心可以分配给E或P核心。通过taskpolicy命令行工具或setpriority()函数动态修改,可以对后者的行为进行修改。这些工具可以限制高QOS线程只能在E和核心上运行,也可以在E或P核心上运行。然而,它们不能改变最低QOS线程的规则,这些线程只能在E核心上运行。

MacOS本身采用的策略是,大多数后台任务都以最低QOS运行。这些任务包括自动时间机器备份。Spotligt索引维护等。其中还包括归档工具的压缩和解压缩任务。例如,如果你以xip格式下载Xcode,解压缩需要很长时间,因为代码只能在核心运行,无法更改。

3.后台线程。

由于E簇大小不同,原始M1和M1Pro/Max芯片上最低QOS线程的加载和运行方式也不同。

原来的M1芯片有四个E核心,所以当QOS9的线程运行时,时钟频率会设置为1000MHz(1GHz)左右。M1Pro/Max,只有两个E核心,采用了不同的方法:如果只有一个线程,它会以1000MHz左右的频率在簇上运行,但是如果有两个或两个以上的线程,频率会增加到2064MHz。这样可以保证M1Pro/Max的E簇可以在不同的情况下提供至少相当于原始M1的后台任务性能。

一个常见的例外是,一些具有最低QOS的线程(如backupd)也会受到I/O的限制,这种线程将以1000MHz的频率在M1Pro/Max上运行。

4.用户线程。

所有QOS高于9的线程处理方法都是相似的,但是不同的队列优先级会导致不同的结果。

由于高QOS的线程可以在任何类型的线程上运行,M1和M1Pro/Max的管理模式是不同的。原来的M1只有一个P簇,所以每次最多可以分配8个线程到两个线程,每个线程运行4个线程。当线程数小于或等于4时,将尽可能全部分配到P簇上运行,只有当队列中有更多高QOS线程时,才会使用E簇。P核心的执行频率约为3GHz,而E核心的执行频率为2GHz,约为QOS9线程运行频率的两倍。

M1Pro和Max芯片有三个簇,其中两个包含四个P核心,另一个包含两个E核心。队列中的前四个线程将被分配到第一个P簇(P0);如果有5~8的线程,它将被分配到第二个P簇(P1),否则第二个P簇将是免费的,以减少功耗。如果队列中有更多的线程,它将被分配到E核心。每个核心类型的最大频率是:P0.P1为3228MHz,E0为2064MHz。

M1ultra芯片有五个集群,每个集群有四个核心。它的策略与M1Pro/Max芯片相同,但只有当所有四个P集群都被使用时,才会使用E0。

然而,在两种情况下,代码似乎只在一个核心上运行:在引导过程中,代码只在一个活跃的E核心上运行,直到操作系统核心初始化并运行其他核心。另一种情况是在安装MacOS更新之前。当准备下载更新时。在M1Pro/Max芯片上,分配了五个相当于一个核心的线程资源,因此可以看出CPU的利用率是100%,但限制在一个P核心,即第二个P集群(P0)中的第一个核心。


以上就是汉码未来给大家分享的文章,希望对小伙伴们有所帮助,想要了解更多macOS是怎么进行核心分配的?相关内容的小伙伴可以登录汉码未来官网咨询,主打5人小班,全程面授,主打Java开发,web前端开发等课程,有专业的授课老师为你答疑解惑。

    

分享到:

下一篇: 暂无资讯


【免责声明】由于政策等各方面情况的不断调整与变化,本网站所提供的信息仅供参考,请以权威部门公布的正式信息为准。本网站在文章内容来源出处标注为其他平台的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如您对内容、版权等问题存在异议请与本站联系,我们会及时进行处理解决。 删除,请联系客服。
为什么选择汉码未来