Linux性能之CPU性能

Linux性能之CPU性能

翻译  2015年07月15日 11:51:09

CPU的性能依赖于它所获取的资源。内核有个调度器,负责调度两种类型的资源:线程(单or多)和中断。调度器赋予不同的资源不同的优先级。其中中断最高,然后内核(系统)进程次之,用户进程为最后。内核如何管理着三种不同资源?在说之前需要了解几个概念:上下文切换、运行队列、吞吐量。

上下文切换:

许多现代单核处理器一段时间只能运行一个进程或者线程;在许多双核或者多核处理器上,Linux系统把每个核当作是单一的处理器,这样就可以并行运行多个进程或者线程。一个标准的Linux内核支持50~50000个线程。若CPU的数量有限,只能去调度和平衡这些线程。对于每个线程,CPU都会为其定量地分配时间,在线程运行期间如果被高优先级的线程打断,优先级高的进程占用处理器,此线程进入一个队列,这样一个过程称为上下文切换。内核每次只能响应一个上下文切换,线程离开CPU寄存器进入一个队列。一个系统的上下文切换切换越多,为了管理进程的调度,内核的负担加重。

运行队列:

每个CPU管理着一个运行队列,我们知道线程(或者进程)要么是睡眠状态(阻塞和等待IO),要么是运行状态。如果CPU子系统处于高负载的状态,内核调度器可能无法满足系统,这样的结果就是可运行的进程塞满运行队列,那么一个运行队列越大,程序执行时间就越久。在监控性能软件中,一个叫做load的子目录,经常用来描述运行队列的状态。系统的负载是由当前已经执行的线程数量和在CPU运行队列里的线程数量组成。比如说在一个双核系统中,有4个线程是在运行队列中,那么其负载就是6。使用dstat -lamp命令进行查看的时候,第一列的load-avg,显示的就是在1,5,15分钟的平均情况。

CPU的吞吐量:

CPU的吞吐量定义为CPU使用的百分比,CPU的吞吐量对于衡量一个系统的好坏致关重要,CPU吞吐量分为以下几个类型:

用户时间:也就是CPU在用户空间执行线程是所花费时间的百分比;

系统时间:CPU在执行内核线程或者处理中断时候所花费时间的百分比;

IO等待时间:线程被阻塞等待IO请求完成,这期间CPU所花费的时间百分比;

空闲时间:CPU啥事情都不干所花费时间的百分比。

了解上面概念后,像前面一篇博客里提到,衡量的时候我们需要一个基线,CPU性能的这几个基线如下:

运行队列:单个处理器上的一个运行队列内一般所包含的线程不超过1~3个,比如一个双核处理器,在运行队列内不应当超过6个线程。

CPU吞吐量:如果CPU是满载的,那么会有下面的指标:

user time:65%~70%;system time:30%~35%;idle time:0%~5%。

上下文切换:上下文切换的数量和CPU负载直接相关。如果CPU的负载一直保持在之前可接受的平衡范围内,那么数目特别大的上下文切换是可接受的。


在上一篇博客里提到了vmstat,接下来对这个命令进行解析,比如每隔1秒打印出系统的情况:

[plain]  view plain  copy
  1. # vmstat 1  
  2. procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----  
  3. r b    swpd  free buff   cache     si so      bi bo        in cs   us sy id wa  
  4. 0 0   104300 16800 95328 72200     0  0       5  26        7  14   4   1 95  0  
  5. 0 0   104300 16800 95328 72200     0  0       0  24        1021 64 1   1 98  0  
  6. 0 0   104300 16800 95328 72200     0  0       0  0         1009 59 1   1 98  0  
r:运行队列内线程的数目,这些线程是可运行的,但是CPU无法执行他们。

b:被阻塞等待IO请求完成的线程的数目。

in:运行的中断的数目。

cs:当前操作系统中上下文切换的数目。

us:用户CPU负载的百分比;

sys:内核和中断负载的百分比;

wa:处理器在线程阻塞等待IO请求所占的百分比;

id:CPU完全空闲的时间百分比;

根据上面这参数所表达的意思就可看出CPU性能那部分出问题。其实可以直接查看CPU的状态,使用mpstat命令。终端键入下面命令监控所有的CPU:

[plain]  view plain  copy
  1. mpstat –P ALL 1  
上面命令是查看所有CPU的状态,每隔1秒钟打印一次。

其实监控CPU的性能只要把握以下几点即可:

1、检查系统运行队列,确保每个处理器上不超过3个可运行的线程;

2、确保CPU的负载,用户空间不超过70%,系统不超过30%。

3、当CPU在系统空间花费较多的时间,这种情况下是过载,需要尝试重新安排优先级。

4、运行CPU范畴的进程效果不是很好,而IO范畴的进程则效果很不错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值