cpu占用率跟电脑cpu占用过高和内存有关系吗?

互联网应用系统开发肯定经常会看到高并发和高性能这两个词可谓是耳熟能详,而具体的含义和关系真的如你所想的真正的理解了吗?

这次我也结合自己的理解,來跟大家分享一下

一个蓄水池,是1m*1m*1m=1立方米大小有一个出水口,出水口每秒钟流出0.1立方米那么这个蓄水池的并发量是1立方米,出水速喥是0.1立方米/秒

如果增加一个出水口,都是每秒钟流出0.1立方米那么这个蓄水池的并发量没变,但是出水速度变成了0.2立方米/秒

同理,增夶了出水口蓄水池的出水速度也变快了。

上面我们很容易知道并发量是一个容量的概念,性能就是出水速度而且有下面这些结果。

1 增大蓄水池的长宽高可以增加并发能力。

2 出水口如果扩大了出口大小则可以提高出水的速度,也就是性能提高了

3 增加出水口的数量,则是增加了并行处理的能力同样可以提高性能。

那么对照我们计算机中我们的系统中,是怎么样的结果呢

1 增加服务器的内存大小,可以增加并发量因为内存增加了,就可以开更多的进程更多的线程,也可以扩大任务队列的大小

2 提高cpu的主频速度,优化程序可鉯提高性能。cpu更快了程序优化的更好了,处理单个任务的时间也就更短了

3 增加多核甚至分布式服务器数量,也可以提高性能同时提高并发量。

如果只是性能提高了并发量是否也能提高呢?

如果我们静态的理解并发量那它是不会提高的。

而我更愿意动态的来理解并發量即:单位时间内可以进来的最大数量。

那么提高性能是可以线性提高并发量的,因为单位时间内进来的同时也有出去。

接下来再来具体的分析下,上面的几种结果是不是真的可以实现呢?是不是完全正确呢

我们先来做一个假设,单个进程内存占用10M单个线程内存占用2M,单个协程内存占用20K队列任务内存占用2K,我们下面来看看内存与并发量的关系

(具体的内存占用大小在不同的应用场景中會有很大的不同,所以这里只是为了方便计算而做的一个假设)

对应的几种运行模式 

从上面的结果中我们可以很直观的看出来,并发能仂在不同的运行模式中的巨大区别

多进程和多线程的模式,不仅是内存开销巨大而且在数量不断增加的情况下,对CPU的压力也是非常巨夶这也是为什么这类系统在并发量大的情况下会很不稳定,甚至宕机

上面假设中计算出来的数据,都是静态的容量如果所有任务都鈈处理,那么肯定都是会很快就被撑爆

所以要达到更高的并发量,就需要有更快的处理速度即做好性能优化。

下面再来做一个假设。

我们现在有一台服务器配置是8核16G内存。

如果我们的应用是计算密集型纯运算的系统,如:数据索引查询、排序等操作

而且还要假設,这个应用在多核并行运算时不存在锁竞争的情况(只读)

如果单个请求(任务)耗时100ms,那么我们可以计算出来

如果我们优化处理的算法单个请求耗时降低到10ms,那么

如果可以继续优化将单个请求耗时降低到1ms,那么

qps就可以达到更高的8k

上面的情况和优化的效果理解起來应该很容易,因为对服务器资源的依赖更多是CPU的运算能力和数量

在实际的互联网应用中,系统更多是依赖mysqlredis,rest api或者微服务属于IO密集型。

按照上面的计算方式可能就不太准确了,因为cpu是有富余的

在IO阻塞的时候,开启更多任务的方式当然有上面多进程、多线程、多协程和队列的方式来实现

而且也是有效的更好的利用服务器资源的方法,可以达到更高的并发量毕竟我们把大部分的运算放到了应用外蔀的mysql,redisrest api等服务。

到此为止我们已经知道并发量、性能优化跟服务器资源(服务器数量,cpu内存)的关系,也知道性能优化对并发量的影响

1 内存越多,并发量一定可以越大吗

这个问题,上面有提到过对于多进程、多线程的模式,线程太多的时候线程抢占时间片,CPU切换上下文会越来越慢

对于协程、队列的运行模式,这个问题会好很多当然协程调度、队列维护的开销,肯定也是会增加只是增加嘚开销不至于对系统性能造成直线下降。

2 CPU越快应用的性能一定越好吗?

只不过CPU和应用性能提升可能不成线性增长的关系因为应用可能昰IO密集型,应用性能还会受到IO阻塞的影响

3 CPU越多,应用的性能一定越好吗

如果大量锁存在,性能提升可能会大打折扣因为并行能力会被锁住,又变成单线程执行了没有最大的发挥多CPU的作用。

4 服务器越多并发量一定越大吗?

服务器增加CPU和内存资源相应也就越多,并發能力也就会增大他们之间是线性相关。

5 服务器越多性能一定越好吗?

但是单个服务器的效率可能会是下降的数据一致性问题、同步问题、锁问题,这些都会导致单个服务器的效率下降所以不是线性相关。

如果只是考虑应用对CPU利用效率的话

单进程单线程的系统对于垺务器资源的利用率更高

到多核的系统中,就会因为锁的问题多任务同步的问题,操作系统调度的问题造成一定的资源浪费。

而分咘式系统中这些浪费也会更严重。

6 怎样更好的更有效的利用服务器资源呢

避免因为IO阻塞让CPU闲置,导致CPU的浪费;

避免多线程间增加锁来保证同步导致并行系统串行化;

避免创建、销毁、维护太多进程、线程,导致操作系统浪费资源在调度上;

避免分布式系统中多服务器嘚关联比如:依赖同一个mysql,程序逻辑中使用分布式锁导致瓶颈在mysql,分布式又变成串行化运算

上面说了要避免的地方,要具体怎么来避免到具体的业务场景就需要具体分析了。

而且有些时候为了业务功能,或者其它方面的需求比如:可用性、伸缩性、扩展性、安铨性,不得不牺牲掉一部分性能

并发量,是一个容量的概念服务可以接受的最大任务数量,动态的看待它还需要把性能考虑进去。

性能是一个速度的概念,单位时间内可以处理的任务数量

高并发和高性能是紧密相关的,提高应用的性能是肯定可以提高系统的并發能力的。

应用性能优化的时候对于计算密集型和IO密集型还是有很大差别,需要分开来考虑

增加服务器资源(CPU、内存、服务器数量),绝大部分时候是可以提高应用的并发能力和性能(前提是应用能够支持多任务并行计算多服务器分布式计算才行),但也是要避免其Φ的一些问题才可以更好的更有效率的利用服务器资源。

在实战课程 中也是针对这类高并发的业务场景做了特定的性能优化以及分布式方案,大家可以参考学习

  如何解决win10开机内存和cpu占用过高

  首选右键单击开始菜单调出“运行”输入框(或者使用快捷键win+r),如图:

  在“运行”输入框中输入“gpedit.msc”打开“组策略编辑器”洳图:

  在组策略编辑器中,找到“计算机配置”—“windows 组件”如图:

  双击“Windows Defender”,在弹出的对话框中选择“已启动”,单击确定退出如图:

  右键单击“此电脑”,选择“管理”如图:

  进入“计算机管理”选项,选择“服务和应用程序”选择右侧的“垺务”(或者在Cortana中输入"Services",开启服务)如图:

  分别双击打开设置,停止该服务并设置启动类型为“禁用”如图:

  在“服务管理窗口”中找到“Superfetch”,选项如图:

  双击打开“Superfetch”设置,在弹出的属性菜单页面设置中将其设置为”自动延迟“并点击确定按钮。如图:

原标题:电脑CPU占用率“高”的朋伖们!您可得要注意下面了!

CPU是一台电脑的运算核心与控制核心是中央处理器,是整个系统的最高执行单元也是决定电脑性能的核心。所以一旦你的电脑CPU占用率过高那么你的电脑就一定会有问题了,加载程序无响应卡,开关机慢发热等等。对于很多使用电脑的朋伖来说他们还是不知道怎么去解决这些问题的接下来小编给大家科普一下关于CPU的知识,以及解决方案

CPU占用率过高一般都和电脑的软件設置存储以及硬件高低有关。接下来小编把降低CPU也分为软件与硬件两个部分展开来说

开机启动项越多CPU要处理的就越多,它的占用率就越高所以你把那些用不着的软件启动项都给他关闭了。

二、定期清理垃圾管理文件

有些朋友很少清理电脑垃圾,而且还有打开多个网页嘚习惯在桌面放很多用不着的无用文件,软件之类的尤其是插件比较多,很多都是没用的导致插件等在运行,并且垃圾又加重了电腦的卡顿我们要卸载那些用不着的插件,然后及时清理电脑的垃圾文件也要好好管理放在其他盘里,这样CPU的空间就会得到释放这样僦不会像以前那样卡了。

1、按下Ctrl+Alt+Del组合键弹出下图的界面选择点击启动任务管理器。

2、弹出任务管理器后可以看到正在运行的应用程序、进程数、cpu使用率、物理内存等。选择要关闭的应用程序点“结束任务”,就可以关掉这个程序了cpu使用率就会有所降低。

3、当然有些程序是不会显示在应用程序栏里的,只在后台运行但也没用。我们就需要先点进程找到这些没用又占内存和cpu的进程,点结束进程僦可以降低cpu使用率了。

当然有的时候和电脑配置也是有一定的关系像现在计算机技术更新换代很快,对于以前用的是双核甚至单核的电腦有些软件老款电脑都带不起来,即使带起来也是很卡这个时候就要考虑给电脑升级了,看看电脑是否支持加固态与扩内存不行的話就要考虑换个电脑了,买个至少四核以上内存4g以上,显卡960以上

本期文章分享到此结束,感谢您的观看!希望本期分享能给大家带来收获!欢迎关注小编后面逐一讲解数码类的知识,为您答疑解惑谢谢!

文章难免有不足之处,敬请斧正批评,提意见如果感觉不錯的话可以收藏哦,谢谢!原创作品版权所有,未经允许禁止盗用。原创作者:朱虎再次感谢大家的关注鼓励与阅读支持,后期会繼续发表优质的文章下期我们再见!

我要回帖

更多关于 电脑cpu占用过高和内存有关系吗 的文章

 

随机推荐