CPU、io、mem之间性能关系

本文详细解析了CPU、内存和硬盘在计算机系统中的角色与相互作用,阐述了三者之间的数据处理流程,以及如何影响系统性能。深入探讨了CPU利用率、用户态高和IO高的原因,分析了上下文切换、运行队列对系统性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、名词解释

CPU:工人,干活的,判断以及逻辑处理

内存:车间,工人干活的地方,车间中加工原料,当车间中没有原料了,在从仓库中取原料,对原料进行加工 内存本身有一定的存储空间,对内存中的数据进行处理的速度比从硬盘取数据再处理的速度快很多

硬盘:仓库,原料,数据存储

 二、三者关系

CPU对数据进行判断以及逻辑处理,本身不能存储数据,这时cpu从内存取数据进行逻辑计算,如果内存没有数据,才会从硬盘读数据到内存,再对数据进行处理
就像人吃饭一样,cpu就是人,内存就是碗,硬盘就是饭锅!
当cpu进程等待,会造成内存开销的增加,内存不够用的时候会用到虚拟内存,导致虚拟内存的增加,这时磁盘IO开销就会增加,系统态sy%提升,cpu开销增加;内存里数据不够用,才用磁盘中取数据。

三、性能高因素 

1、系统CPU利用率高是什么原因?
系统中断和切换频繁很耗用CPU,共享资源竞争,大量io交互。CPU太差,主频太低,都是形容 CPU差。
苹果系统一直是单线程,因为这样减少了N多插队的请求导致的中断减速

2、用户CPU利用率高是什么原因?
答:用户态高原因 程序运算量大。

3、下面IO高的原因是?
读写量大;磁盘太慢,是因为转速慢,或者磁头少,或者RAID 型号不太OK(RAID 有  0 1 5 10 100 等等,有的可以做存储盘,有的可以做备份盘) ;
内存不足,操作系统就会用虚拟内存,肯定要用系统的交换区了,比如LINUX 的SWAP,就造成分页增多;

果你是老板,你如何检查打工仔的效率(性能) 呢?我们一般会通过以下这些信息来判断打工仔是否偷懒:
/1、 打工仔接受和完成多少任务并向老板汇报了(中断);
/2、打工仔和老板沟通、协商每项工作的工作进度(上下文切换);
/3、打工仔的工作列表是不是都有排满(可运行队列);
/4、打工仔工作效率如何,是不是在偷懒(CPU 利用率)

四、系统中的上下文切换 、运行队列等

上下文切换:每个CPU(或多核CPU的每个核心)在同一时间只能执行一个线程<不包括超线程CPU>,Linux采用抢占式调度。当线程执行到达一个时间片后,如果线程有IO阻塞或高优先级线程要执行的时候,Linux将执行线程切换,切换前先保存当前线程执行状态(现场),并恢复待执行线程状态,这个过程就叫做上下文切换。在Java应用中,文件IO、网络IO、锁等待、线程Sleep操作都会使该线程进行阻塞或睡眠状态,从而触发上下文切换。频繁的上下文切换会造成内核占用较高的CPU,使得响应速度下降。

运行队列:每个CPU核心都维护了一个可运行队列,例如一个4核CPU,启动8个线程,且8个线程都处于可运行状态,平均分配情况下,每个核心的可运行队列里就有2个线程。通常而言,系统的load是由CPU运行队列决定的,假设以上状态维持了1分钟,则1分钟内系统load就是2。运行队列值越大,代表线程要消耗越长的时间才能执行完成。通常建议每个核心运行队列为1-3个。
 
利用率:CPU利用率指在用户进程,内核,中断处理,IO等待以及空闲五个部分百分比,这五个值是用来分析CPU消耗情况的关键指标。Linux System and NetWork Performent Monitoring建议用户进程/内核消耗比例为 65%-70% / 30%-35% 左右。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值