0x00前言作为一个程序员,无论我们以后想往哪个方向攀登,没有好的基础知识都是非常困难的,打好基础是必不可少的。在我看来,IT行业的技术类工作刚需具备以下基础知识:编程算法、计算机原理、计算机网络。根据冯·诺依曼计算机体系结构,计算机是一种输入和输出设备。经过计算机处理,我们得到了我们想要的结果。所以说白了,作为程序员,我们通过各种手段来控制这个设备。自然而然,我们想要流畅的玩这个机器,就需要了解这个机器的原理,所以我们需要学习计算机的原理。了解了计算机的原理之后,我们如何操作它呢?当然是通过编程的方式。我这里说的编程是广义上的编程。不要以为只会写一段C代码就是编程。命令行输入指令不是编程,命令其实是编程,因为这两者最终都要翻译成机器指令,由计算机执行。同样,这台机器的性能是有限的,我们只知道如何通过编程来操作它是不够的,我们需要学习一些操作来提高效率和速度,然后我们需要学习算法。说白了,就像两个工人在操作一台机器,其中一个工人会做一些棘手的操作,让机器的效率更高,执行速度更快,进行一些高级玩法。如果工厂只能保留,你认为下一个人会是谁?有了以上三类基础知识之后,我们可以说我们是入门单机操作了,但是我们现在生活的世界是一个万物互联的世界。计算机需要与计算机合作,所以我们需要学习计算机网络。而且最近因为工作原因一直在学习Linux性能优化。Linux性能优化的范围很广,从软件到硬件,从编程到网络。基础知识很多,但是对于范围很广的知识,我觉得还是需要一根线把它们串联起来形成一个系统。知识结构。所以我会把过程中学到的知识,加上平时工作中的实践,提炼成博客写出来。0x01详细解释A、平均负载首先分析CPU性能问题。当我们发现CPU性能出现问题时,我们第一时间怎么办?当然是查看整体的CPU使用情况。检查完CPU的整体情况,再分析是什么情况导致CPU负载高,最终找出导致CPU负载增加的罪魁祸首。那么我们就按照这一步来分析。1.查看整体CPU占用率。查看CPU平均负载的常用命令有很多,比如uptime、top等都可以查看。先解释一下什么是平均负载。一般来说,平均负载可以理解为一段时间内平均可运行和不可中断的进程数。这里我们使用uptime命令执行如下结果:分别是最近1分钟、5分钟和15分钟的平均负载。从这里我们可以看到系统最近的负载情况,这样我们就可以对整体的CPU使用率有个大概的估计。大概判断。关于平均负载的详细介绍参见:UnderstandingtheLoadAverageonLinuxandOtherUnix-likeSystems2。哪些进程会导致平均负载增加?一般有以下几种场景:CPU密集型I/O密集型大量进程3.如何判断平均负载是哪个进程造成的?可以使用以下工具:pidstatmpstat查看%user判断是否CPU密集,%iowait判断是否I/O密集,%wait判断是否大量进程切换。0x02总结本文主要介绍如何查看CPU占用率,判断进程。过程如下:通过查看平均负载来查看总体CPU使用率。使用pidstat和mpstat来判断高CPU负载。最后,通过上面提到的工具,可以找到导致CPU占用率高的相关进程。
