前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从平均负载开始,这进程是 CPU Bound 还是 IO Bound 的?

从平均负载开始,这进程是 CPU Bound 还是 IO Bound 的?

作者头像
Cloud-Cloudys
发布于 2023-10-21 02:10:31
发布于 2023-10-21 02:10:31
31800
代码可运行
举报
运行总次数:0
代码可运行

在排查性能问题的时候,我们经常会使用 top 或者 uptime 两个 Linux 命令,top 命令和 uptime 命令都会给出最近机器 1 min,5 min,15 min 的平均负载情况,一般平均负载值(Average Load)接近甚至超出 CPU cores (现在一般指 processors 的个数, 现在 CPU 的一个 core 一般有两个 processor, 可以处理两个进程) 时,系统会有性能瓶颈.

平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程.

造成平均负载升高的原因一般有以下几种:

  • 1、有 IO Bound 进程(即存在 IO 密集型任务)
  • 2、有 CPU Bound 进程(即存在 CPU 密集型任务)
  • 3、处于就绪状态(Ready)的进程多
  • …..

本篇文章主要记录下造成平均负载升高的两个场景. IO 密集型场景和 CPU 密集型场景.

这里的实验环境在一个操作系统为 Ubuntu 20.04.3 LTS 的容器内, 通过 stress 进行 IO Bound 与 CPU Bound 场景的模拟, 宿主机有 16 个 processors, 8G 运行内存.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --rm -it  ubuntu:latest

root@bfdbc798879c:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@bfdbc798879c:/# top
top - 11:21:53 up  3:10,  0 users,  load average: 0.66, 0.79, 0.46
Tasks:   2 total,   1 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu0  :  1.0 us,  0.6 sy,  0.0 ni, 93.3 id,  0.0 wa,  0.0 hi,  5.1 si,  0.0 st
%Cpu1  : 10.2 us,  0.3 sy,  0.0 ni, 88.1 id,  0.0 wa,  0.0 hi,  1.3 si,  0.0 st
%Cpu2  : 10.4 us,  2.7 sy,  0.0 ni, 87.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu4  : 11.1 us,  0.7 sy,  0.0 ni, 88.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu5  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu6  :  0.7 us,  1.3 sy,  0.0 ni, 98.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu7  :  3.0 us,  0.0 sy,  0.0 ni, 97.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu8  :  0.3 us,  1.0 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu9  :  0.7 us,  0.0 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu10 :  0.0 us,  0.0 sy,  0.0 ni, 99.7 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu11 :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu12 :  0.3 us,  0.3 sy,  0.0 ni, 99.0 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu13 :  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu14 : 10.7 us,  0.7 sy,  0.0 ni, 88.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu15 :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7829.4 total,   1913.4 free,   1582.2 used,   4333.7 buff/cache
MiB Swap:   2048.0 total,   2047.7 free,      0.3 used.   5582.8 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    1 root      20   0    4232   3504   2952 S   0.0   0.0   0:00.02 bash
   12 root      20   0    6092   3332   2828 R   0.0   0.0   0:00.08 top

root@bfdbc798879c:/# free -mh
              total        used        free      shared  buff/cache   available
Mem:          7.6Gi       1.6Gi       1.8Gi       410Mi       4.3Gi       5.4Gi
Swap:         2.0Gi       0.0Ki       2.0Gi

让我们先安装一下 stress 压力测试工具和系统观测要用到的工具.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt-get update
apt-get install -y stress sysstat

CPU Bound 场景

这里我们让三个逻辑 CPU 满载:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 持续 10 min, 3 CPU 满载
stress -c 3 -t 600

我们用 watch 命令持续观察平均负载情况, 平均负载在逐渐变高,此时我的电脑 CPU 风扇也很响了😂

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
watch -d uptime

我们在使用 top 命令可以看到有三个 CPU 已经满载了,使用率百分百,还可以看到是哪个 COMMMAND 造成的,

但是上面不能很清楚的看到 IO 的情况,接下来我们用 mpstat 每隔 5 秒将所有 CPU 的观测情况打出来:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mpstat -P ALL 5

可以很清楚的看到,的确有三个 CPU 的空闲状态为 0(满载),使用率百分百,且 IO Wait 等待时间是很低的,所以单单 CPU Bound 场景可造成 Average Load 的升高.

不使用 top 命令,使用 pidstat 每隔 5 秒, 三次打印进程的 CPU 情况可定位出是哪个进程造成的平均负载升高.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@bfdbc798879c:/# pidstat -u 5 3
Linux 5.4.72-microsoft-standard-WSL2 (bfdbc798879c)     10/07/21        _x86_64_        (16 CPU)

12:01:29      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
12:01:34        0       571  100.00    0.00    0.00    0.00  100.00     9  stress
12:01:34        0       572  100.00    0.00    0.00    0.00  100.00    15  stress
12:01:34        0       573  100.00    0.00    0.00    0.00  100.00    11  stress

IO Bound 场景

stress 压力工具也可以方便的进行 IO Bound 场景的模拟,

开始之前将上面 CPU Bound 场景给终止, 同样地, 我们先开好一个 Terminal 观察平均负载的变化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
watch -d uptime

使用 strees 调起 50 个进程(这里要高于 CPU processors 的数量, 让进程争夺 CPU), 不断打 IO, 持续 10 min:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@bfdbc798879c:/# stress -i 50 -t 600
stress: info: [1756] dispatching hogs: 0 cpu, 50 io, 0 vm, 0 hdd

可以观察到, 平均负载在不断升高, 再使用 mpstat 可以观测到 IO Wait 很高.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mpstat -P ALL 5

可以 GET 到 IO Bound 任务的确会造成平均负载升高, 结合 iostat, 我们还可以观测磁盘设备的读写性能情况:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
iostat -d -x
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-7,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
从0编写基因组!史上最大生物学模型Evo-2全面开源:硅基生命能创造细胞?
基因组(Genome)包含了生物体所有基因以及非编码的DNA序列,承载了生物体发育、生长、繁殖和适应环境所需的全部遗传信息,近年来基因组相关的测序、合成和编辑工具已经彻底改变了生物学研究。
新智元
2025/03/31
850
从0编写基因组!史上最大生物学模型Evo-2全面开源:硅基生命能创造细胞?
Nature|迄今为止最大的生物学AI模型Evo-2
2025年2月19日,Nature上发表文章Biggest-ever AI biology model writes DNA on demand,介绍了一个据称是迄今为止最大的生物学人工智能模型--Evo-2。
智药邦
2025/02/26
4082
Nature|迄今为止最大的生物学AI模型Evo-2
Nat. Mach. Intell. | 综述:Transformer与基因组语言模型
今天为大家介绍的是来自加拿大多伦多大学Bo Wang团队的一篇论文。基于transformer深度学习架构的大型语言模型已经彻底改变了自然语言处理领域。受人类语言与基因组生物学代码之间类比关系的启发,研究人员已开始基于transformer及相关架构开发基因组语言模型(gLMs)。本综述探讨了transformer和语言模型在基因组学中的应用。作者调查了适合使用gLMs的基因组学开放性问题,并论证了对这些问题使用gLMs和transformer架构的理由。作者讨论了gLMs通过无监督预训练任务对基因组进行建模的潜力,特别关注零样本和少样本学习的能力。作者探索了transformer架构的优势和局限性,以及当前gLMs更广泛的优势和局限性。此外,基于目前的研究趋势,作者思考了超越transformer架构的基因组建模的未来。本综述可作为对transformer和语言模型在基因组数据领域感兴趣的计算生物学家和计算机科学家的指南。
DrugAI
2025/04/04
2000
Nat. Mach. Intell. | 综述:Transformer与基因组语言模型
包含400亿个参数!迄今最大开源生物学AI模型Evo 2发布,可设计涵盖生命所有领域的遗传密码
在生命科学领域,人工智能(AI)正逐渐展现出巨大的潜力,为科研带来前所未有的突破。近日,美国Arc研究所与NVIDIA公司、斯坦福大学和加州大学伯克利分校等机构合作,发布了迄今为止最大的公开可用生物学AI模型Evo 2,有望彻底改变人们对生命遗传信息的理解和应用。
DrugAI
2025/03/10
2900
包含400亿个参数!迄今最大开源生物学AI模型Evo 2发布,可设计涵盖生命所有领域的遗传密码
RNA模型可以帮助发现疾病机制和候选药物
今天为大家介绍的是来自Tehmina Masud, Amit Deshwar, Shreshth Gandhi, Brendan J. Frey团队的一篇论文。精确地对RNA生物学进行建模和预测一直是一个长期存在的挑战,对于变异解释和定制治疗的制定具有重要的临床意义。作者提出了一个RNA生物学的基础模型,名为“BigRNA”,它经过了数千个基因组匹配数据集的训练,可以从DNA序列预测组织特异性的RNA表达、剪接、microRNA位点以及RNA结合蛋白的特异性。
DrugAI
2023/11/13
2690
RNA模型可以帮助发现疾病机制和候选药物
阿里联手中科大与港科大发布长上下文基因组基础模型GENERator
在基因组学领域,随着DNA测序技术的飞速发展,我们已经能够以前所未有的速度和精度解析生物的基因组序列。然而,如何准确预测和解读这些序列的功能,依然是一个巨大的挑战。
实验盒
2025/02/18
2730
阿里联手中科大与港科大发布长上下文基因组基础模型GENERator
深度学习在人类基因组学中的应用:下一代测序数据的综述
今天为大家介绍的是来自Mamoon Rashid的一篇关于深度学习在基因测序方面应用的综述论文。基因组学正朝着数据驱动的科学方向发展。随着高通量数据生成技术在人类基因组学中的出现,我们被大量的基因组数据所淹没。为了从这些基因组数据中提取知识和模式,人工智能尤其是深度学习方法起到了重要作用。在当前的综述中,作者讨论了深度学习方法/模型在人类基因组学不同子领域中的发展和应用。
DrugAI
2023/09/09
1.3K0
深度学习在人类基因组学中的应用:下一代测序数据的综述
斯坦福伯克利重磅发现DNA Scaling Law,Evo荣登Science封面!AI设计DNA/RNA/蛋白质再突破
利用基于深度信号处理进展的架构,Evo扩展到了70亿参数,并在单核苷酸分辨率下实现了131千碱基的上下文长度。
新智元
2025/02/14
1440
斯坦福伯克利重磅发现DNA Scaling Law,Evo荣登Science封面!AI设计DNA/RNA/蛋白质再突破
Nat. Methods | 用AI解读DNA,InstaDeep和英伟达联合推出DNA序列预训练模型
今天为大家介绍的是来自InstaDeep公司和英伟达公司的一篇论文。从DNA序列中预测分子表型一直是基因组学中的一个长期挑战,通常由于注释数据的有限性和在不同任务之间无法迁移学习的限制所导致。在本文中,作者提出了一项关于DNA序列预训练基础模型的深入研究,称之为Nucleotide Transformer。该模型的参数数量从5000万到25亿不等,整合了来自3202个人类基因组和850种不同物种基因组的信息。这些transformer模型能够生成针对上下文的核苷酸序列表示,从而即使在数据稀缺的情况下也能实现准确的预测。作者表明,所开发的模型可以通过低成本的微调来解决各种基因组学应用。尽管没有监督信号,这些模型仍能够聚焦于关键的基因组元素,并可用于改进遗传变异的优先级排序。在基因组学中,基础模型的训练和应用为从DNA序列中准确预测分子表型提供了一种具有广泛适用性的方法。
DrugAI
2024/12/31
2910
Nat. Methods | 用AI解读DNA,InstaDeep和英伟达联合推出DNA序列预训练模型
Nat. Methods|Nucleotide Transformer:人类基因组大模型新突破
近年来,自然语言处理(NLP)领域的快速发展为生物信息学带来了新的研究工具,尤其是大语言模型(如BERT、GPT)在蛋白质结构预测和基因调控分析中的成功应用,揭示了人工智能在生命科学中的巨大潜力。然而,基因组学领域仍面临两大核心挑战:如何解析海量非编码DNA的功能以及如何在低数据场景下实现高精度预测。
实验盒
2025/02/08
3690
Nat. Methods|Nucleotide Transformer:人类基因组大模型新突破
DNA语言基础模型,从DNA序列中准确预测分子表型 | Nat.Methods
- 图片说明- a,b,NT训练概述(a)及其通过微调在下游基因组预测任务中的应用(b)。通过探测进行的下游任务预测类似,但没有NT中的重新缩放权重。c,NT模型与其他基础基因组学模型在感知场大小、参数数量和我们基准中包含的18个精选下游任务性能方面的比较。d,为下游任务考虑的基因组特征的图形表示(改编自其他地方48)。- ,
生信菜鸟团
2025/02/20
2320
DNA语言基础模型,从DNA序列中准确预测分子表型 | Nat.Methods
Nat. Mach. Intell. | 聚焦心脏与基因调控:变异致病性判别的专属AI模型
临床上判别致病与良性遗传变异仍是一大挑战。现有的基因组基础模型虽通过弱监督或无监督学习提升了变异效应预测(VEP)准确性,但缺乏疾病特异性。为此,研究人员提出了DYNA(一种基于孪生神经网络的疾病特异性微调方法),可广泛应用于各类基因组基础模型,以提高疾病背景下的VEP表现。研究人员将DYNA应用于心血管疾病的编码区变异预测和RNA剪接调控的非编码变异预测,涵盖多种疾病-基因关联及致病性调控机制。在这两类任务中,DYNA均对预训练模型在小规模稀有变异数据上进行微调,表现出优于原模型的性能,并在ClinVar数据库中的大规模临床注释中得到验证。值得注意的是,不同基础模型在不同VEP任务中各有优势,因此需要DYNA这样的通用工具来最大限度发挥其潜力。综上,DYNA为临床变异解读提供了一种强有力的疾病特异性预测方法。
DrugAI
2025/03/28
980
Nat. Mach. Intell. | 聚焦心脏与基因调控:变异致病性判别的专属AI模型
GenomeOcean:基于宏基因组的大规模基因组基础模型
基因组基础模型(Genome Foundation Models, gFMs)作为计算生物学和生物信息学领域的重要工具,正在逐步改变精准医学、药物发现和复杂生物系统研究的格局。然而,现有模型在数据覆盖、计算效率和功能建模等方面存在明显局限,尤其是在表征低丰度和未培养微生物时表现不足。
实验盒
2025/02/08
2660
GenomeOcean:基于宏基因组的大规模基因组基础模型
DeepMind 利用无监督学习开发 AlphaMissense,预测 7100 万种基因突变
人类基因组共有 31.6 亿个碱基对,无时无刻不在经历复制、转录和翻译,也随时有着出错突变的风险。
HyperAI超神经
2023/09/27
2950
DeepMind 利用无监督学习开发 AlphaMissense,预测 7100 万种基因突变
谷歌DeepMind再登Science:用AI预测基因突变致病性,PK人类专家=89:0.1 | 开源
谷歌DeepMind在AlphaFold的基础上,训练出了专门预测人类基因组中错义突变致病性的AlphaMissense。
量子位
2023/09/22
2600
谷歌DeepMind再登Science:用AI预测基因突变致病性,PK人类专家=89:0.1 | 开源
人类基因组时代的泛基因组学
今天想分享一个主题:人类基因组时代的泛基因组学。主要内容源自今年《Nature Reviews Genetics》上一篇题为《Pan-genomics in the human genome era》的文章。
黄树嘉
2020/09/29
1.1K0
人类基因组时代的泛基因组学
UKBioBERT:融合UK BioBank遗传变异的基因组大语言模型
对于揭示基因调控机制、理解复杂性状的遗传基础,基因表达预测具有重要意义。近年来,深度学习技术的进步推动了序列到功能(sequence-to-function)模型的发展,这些模型通过分析DNA序列信息预测基因表达水平。然而,传统模型多基于单一参考基因组训练,未能充分考虑个体间的遗传变异,导致其在个性化预测和跨群体应用中的性能受限。
实验盒
2025/03/03
4510
UKBioBERT:融合UK BioBank遗传变异的基因组大语言模型
Nat. Biotechnol|仅需4卡3.5小时训练的DNA语言模型助力变异效应预测
预测基因组变异的效应是一个研究热点。随着全基因组测序技术的普及,我们积累了海量的基因组数据,但如何准确解读这些变异的生物学意义,尤其是非编码区变异的功能,仍然是一个巨大的挑战。
实验盒
2025/02/06
2500
Nat. Biotechnol|仅需4卡3.5小时训练的DNA语言模型助力变异效应预测
深度学习 + 基因组学:破译人类 30 亿碱基对
新智元专栏 作者:岳天溦 【新智元导读】基因技术被认为是改变未来的技术之一。根据麦肯锡的报告,预计到2025年,全球将会累计产生 10 亿人次的全基因组数据。基因组学所需的数据量如此巨大,用深度学习技术去探索人类基因组密码便成为了趋势与未来。本专栏将结合最新的一篇来自于卡耐基梅龙大学的综述论文,回顾与展望这一交叉学科的发展。 自从2013年变分自动编码器(VAEs)被提出,2014年Goodfellow提出生成对抗网络(GANs)起,生成式模型(generative models)深得深度学习研
新智元
2018/04/18
1.5K0
深度学习 + 基因组学:破译人类 30 亿碱基对
Nat. Genet. | 深度蛋白质语言模型在基因组范围内预测疾病变异效应
今天为大家介绍的是来自Chun Jimmie Ye和Vasilis Ntranos团队的一篇关于语言模型应用的论文。预测编码变异的效应是一个重大挑战。尽管最近的深度学习模型在变异效应预测准确性方面取得了改进,但由于依赖于近源同源物或软件限制,它们无法分析所有编码变异。在这里,作者开发了一个工作流程,使用ESM1b,一个拥有6.5亿参数的蛋白质语言模型,来预测人类基因组中约4.5亿个可能的错义变异效应。ESM1b在将约15万个ClinVar/HGMD错义变异分类为致病性或良性,并在28个深度突变扫描数据集中预测测量方面优于现有方法。
DrugAI
2023/09/26
3450
Nat. Genet. | 深度蛋白质语言模型在基因组范围内预测疾病变异效应
推荐阅读
从0编写基因组!史上最大生物学模型Evo-2全面开源:硅基生命能创造细胞?
850
Nature|迄今为止最大的生物学AI模型Evo-2
4082
Nat. Mach. Intell. | 综述:Transformer与基因组语言模型
2000
包含400亿个参数!迄今最大开源生物学AI模型Evo 2发布,可设计涵盖生命所有领域的遗传密码
2900
RNA模型可以帮助发现疾病机制和候选药物
2690
阿里联手中科大与港科大发布长上下文基因组基础模型GENERator
2730
深度学习在人类基因组学中的应用:下一代测序数据的综述
1.3K0
斯坦福伯克利重磅发现DNA Scaling Law,Evo荣登Science封面!AI设计DNA/RNA/蛋白质再突破
1440
Nat. Methods | 用AI解读DNA,InstaDeep和英伟达联合推出DNA序列预训练模型
2910
Nat. Methods|Nucleotide Transformer:人类基因组大模型新突破
3690
DNA语言基础模型,从DNA序列中准确预测分子表型 | Nat.Methods
2320
Nat. Mach. Intell. | 聚焦心脏与基因调控:变异致病性判别的专属AI模型
980
GenomeOcean:基于宏基因组的大规模基因组基础模型
2660
DeepMind 利用无监督学习开发 AlphaMissense,预测 7100 万种基因突变
2950
谷歌DeepMind再登Science:用AI预测基因突变致病性,PK人类专家=89:0.1 | 开源
2600
人类基因组时代的泛基因组学
1.1K0
UKBioBERT:融合UK BioBank遗传变异的基因组大语言模型
4510
Nat. Biotechnol|仅需4卡3.5小时训练的DNA语言模型助力变异效应预测
2500
深度学习 + 基因组学:破译人类 30 亿碱基对
1.5K0
Nat. Genet. | 深度蛋白质语言模型在基因组范围内预测疾病变异效应
3450
相关推荐
从0编写基因组!史上最大生物学模型Evo-2全面开源:硅基生命能创造细胞?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档