CPU利用率为多少时可以兼顾计算效率和时间效率?—— 75% —— 科学计算时如何正确的使用超线程CPU——使用超线程CPU进行计算密集型任务时的注意事项
2023年12月28日 更新
现在这个AI火热的时代科学计算任务占比越来越大,但是平时使用时也有一些不为人注意的地方需要知道,本文就讨论一下使用超线程CPU时的注意事项。
超线程CPU就是现在的多线程CPU,以Intel和AMD的X86 CPU为例,一个10个物理核心的CPU则有20个逻辑核心,其中多出来的10个核心就是超线程架构扩展出的逻辑CPU核心。假设1个物理核心的计算能力为100%,那么扩展多出的一个逻辑核心的计算能力为30%,也就是说1个物理核心扩展出1个物理核心和一个逻辑核心,那么总性能为130%而不是200%。
一个10个物理核心的CPU,开启超线程功能,共20个逻辑核心。假设一个科学计算任务需要使用5个CPU逻辑核心,在开启超线程的CPU上用时1个小时完成任务,CPU使用率为25%;那么同时运行两个该任务,那么占用10个CPU逻辑核心,两个任务并行运行且同时完成,用时仍为1个小时,CPU使用率为50%。
继续思考(重点内容):
如果这次是同时运行四个该任务,那么占用20个CPU逻辑核心,四个任务并行运行,CPU使用率为100%,总用时为4/2.6=1.53846小时。也就是说使用超线程技术扩展出逻辑核心其性能并不是真实物理核心的100%而是30%,因为该CPU共有10个物理核心,运行四个计算任务时需要使用10个真实物理核心和10个扩展多出的逻辑核心,而这多出的10个核心并不能按照真实核心来计算,因此正确计算时我们需要先按照真实物理核心数计算用时2个小时的用时,然后再除去逻辑核心扩展后的CPU性能1.3倍得出最终的运行用时。
正确的计算方法为:
不可分割的计算量(需要并行运行的计算量):4个任务,每个任务单独运行均需5个物理核心运行一个小时,因此这里需要并行的计算量为1+1+1+1=4,即4小时。
任意时刻上CPU可被使用的计算能力(一个任务运行时需要5个物理CPU核心,即5个物理核心的计算能力为1):1+1+0.3+0.3=2.6
因此,4个任务并行,使用10个物理核心外加10个扩展出的逻辑核心,总用时为4/2.6=1.53846小时。
可以看到,如果我们希望尽快的完成运算任务,那么在上述的CPU架构中最多可以运行两个计算任务,如果再多运行计算任务那么总的时长就会增加。这个问题是极为被忽略的,而造成这个问题的原因就是超线程扩展出的CPU核心并没有达到真实CPU核心的性能,而是只能达到30%。
扩展内容:
在上述的CPU架构和计算任务下,如果同时运行3个计算任务,那么用时多久?
3个计算任务如果同时并行需要15个物理核心,但是实际只有10个物理核心,因此并行运行3个计算任务需要使用10个物理核心和5个逻辑核心,因此按照之前给出的计算方法我们可以得到计算量为1+1+1=3,计算能力为1+1+0.3=2.3,因此总用时为:3/2.3=1.30434小时,此时的CPU使用率为75%。
PS:
操作系统在计算CPU使用率时是不会区分逻辑核心和物理核心的。
=============================
总结一下:
一个10物理核心,10扩展核心的CPU,运行一个需5物理核心并行的任务用时一小时,那么有:
并行运行1个计算任务:用时1小时,CPU使用率为25%
并行运行2个计算任务:用时1小时,CPU使用率为50%
并行运行3个计算任务:用时1.30434小时,CPU使用率为75%
并行运行4个计算任务:用时1.53846小时,CPU使用率为100%
同时有:
并行运行5个计算任务:用时5/2.6=1.92307小时,CPU使用率为100%
因此通过上面的分析,我们可以回答问题:CPU利用率为多少时可以兼顾效率和时间?
个人认为一个科学计算用处的CPU,最好的利用率在75%左右,这样可以使CPU有个比较高的利用率同时也可以尽可能保证每个任务可以在较短的时间内运行完成,同时由于当CPU利用率为100%时我们是难以区分此时的服务器是出于哪种情况,比如上面的4个任务并行,5个任务并行,6个任务并行,其CPU利用率均为100%(服务器CPU为多用户共享使用的),如果管理员不对CPU利用率做一定的要求,那么如果是5个任务并行的情况下会导致每个计算任务的用时都增加了1倍,也就是从1个小时增加到了1.92小时,虽然保证了CPU总的利用率但是却影响了用户的单独体验的感受,因此我个人给出的计算型CPU利用率最好为75%左右,如果是50%则明显存在利用率不足,75%以内的利用率可以保证每个计算任务都可以获得近似于独占服务器情况下的运行时间,而且如果CPU利用率高于75%甚至高于85%,那么也会极可能由于CPU的高负载导致的供电和发热问题使CPU运行频率降低(CPU降频),因此综合来考虑,保持计算型CPU利用率在75%左右是综合最优的一种设置。
CPU利用率为多少时可以兼顾计算效率和时间效率?—— 75% —— 科学计算时如何正确的使用超线程CPU——使用超线程CPU进行计算密集型任务时的注意事项的更多相关文章
- CPU利用率异常的分析思路和方法交流探讨
CPU利用率异常的分析思路和方法交流探讨在生产运行当中,经常会遇到CPU利用率异常或者不符合预期的情况,此时,往往暗示着系统性能问题.那么究竟是核心应用的问题?是监控工具的问题?还是系统.硬件.网络层 ...
- python多进程提高cpu利用率
cpu参数: 1个物理cpu,2个逻辑cpu(超线程),单核 具体 http://blog.csdn.net/dba_waterbin/article/details/8644626 物理CPU. ...
- cpu利用率和cpu 队列
SIP的第四期结束了,因为控制策略的丰富,早先的的压力测试结果已经无法反映在高并发和高压力下SIP的运行状况,因此需要重新作压力测试.跟在测试人员后面做了快一周的压力测试,压力测试的报告也正式出炉,本 ...
- 查看进程,按内存从大到小 ,查看进程,按CPU利用率从大到小排序
查看进程,按内存从大到小 ps -e -o "%C : %p : %z : %a"|sort -k5 -nr 查看进程,按CPU利用率从大到小排序 ps -e -o "% ...
- 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小
原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...
- HighChartS cpu利用率动态图(Java版)
来源:http://www.cnblogs.com/haifg/p/3217699.html 最近项目需要监控服务器cpu的利用率,并做成动态图.在网上查找了一些资料,最终选择了HighChart ...
- Linux如何统计进程的CPU利用率
1.0 概述 在Linux的/proc文件系统,可以看到自启动时候开始,所有CPU消耗的时间片:对于个进程,也可以看到进程消耗的时间片.这是一个累计值,可以"非阻塞"的输出.获得一 ...
- 如何提高多线程程序的cpu利用率
正如大家所知道的那样,多核多cpu越来越普遍了,而且编写多线程程序也是件很简单的事情.在Windows下面,调用CreateThread函数一次就能够以你想要的函数地址新建一个子线程运行.然后,事情确 ...
- Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
目录(?)[-] proc文件系统 proccpuinfo文件 procstat文件 procpidstat文件 procpidtasktidstat文件 系统中有关进程cpu使用率的常用命令 ps ...
- [进程管理]Load和CPU利用率是如何算出来的
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.penglixun.com/tech/system/how_to_ca ...
随机推荐
- SQL SERVER 2012的安装
1.将光盘镜像用虚拟光驱加载(WIN10自带虚拟光驱) 2.双击setup.exe 3.选择"安装"-"全新 SQL Server 独立安装或向现有安装添加功能" ...
- C#/.NET/.NET Core拾遗补漏合集(24年6月更新)
前言 在这个快速发展的技术世界中,时常会有一些重要的知识点.信息或细节被忽略或遗漏.<C#/.NET/.NET Core拾遗补漏>专栏我们将探讨一些可能被忽略或遗漏的重要知识点.信息或细节 ...
- getRefs is undefined html vue2项目 报错
vue2项目提示 getRefs is undefined 在div上面写了,ref,还写了v-if 然后再watch中操作了 ref 导致报错. 分析: 组件因为v-if 为 false 没有注册和 ...
- RuoYi-Cloud从配置到运行
前期准备工作 若依微服务版(RuoYi-Cloud)代码下载:https://gitee.com/y_project/RuoYi-Cloud 注册中心(nacos)下载:https://www.ali ...
- Linux 环境编程:errno的基本用法
背景 error是一个包含在<errno.h>中的预定义的外部int变量,用于表示最近一个函数调用是否产生了错误.若为0,则无错误,其它值均表示一类错误. errno只在函数返回错误时才有 ...
- 一文为你深度解析LLaMA2模型架构
本文分享自华为云社区<[云驻共创]昇思MindSpore技术公开课 大咖深度解析LLaMA2 模型架构>,作者: Freedom123. 一.前言 随着人工智能技术的不断发展,自然语言处理 ...
- 尝试官方的第一个SpringNative 0.11程序(WSL2)
Spring Native是Spring推出微服务体系Spring Cloud之后的又一大举动,从名字可以猜出,Spring Native是一门面向云原生的技术.如果你还对这个概念不太理解,可以多看一 ...
- Git 清除缓存账密
[已解决] git push 报错:git: 'credential-manager' is not a git command. See 'git --help'. 解决方案1)运行 git con ...
- linux系统是未来_大小写敏感_case_sensitive_编程原生态
修改 py 文件 回忆上次内容 上次尝试了 两个vim 同时打开 同一py文件 vim出现了Error 有各种选择 错误拼写 pront 导致 运行时 出现了NameError ...
- oeasy教您玩转vim - 1 - # 存活下来 🥊
存活下来 更新 apt 源,升级 vim vim 是什么 vim 是类 unix 系统上的一个文本编辑神器,在 Linux 系统环境中也被许多程序员使用,书写程序和文档. 我们本次课程将围绕 Vim ...