做为一个程序猿,不管咱们未来想要往哪一个方向攀登,若是没有好的基础知识是会很吃力的,因此打下良好的基础必不可少。在我看来,从事 IT 行业的技术工种,有如下基础知识是刚需:linux
根据冯诺依曼计算机结构体系,计算机就是一个输入输出的设备,咱们输入待处理的数据,经由计算机处理后获得咱们想要的结果。那么说白了做为程序员咱们就是经过各类手段操控这个设备,天然而然的,想要把这个机器玩的很溜是须要了解这个机器的原理的,因此咱们须要学习计算机原理。程序员
在了解了计算机的原理后,咱们如何去操做他呢,固然是经过编程的手段了,这里我说的编程是广义上的编程,不要觉得只有写段 C 的代码才是编程,命令行输入指令就不是编程了,命令其实也是编程,由于他们二者最终都是翻译成机器指令由计算机来执行。算法
一样地,这台机器他的性能是有限的,咱们只知道怎么经过编程操做它远远不够,咱们须要学一些骚操做来提高效率和速度,那么咱们就须要学算法了。说白了,就好像两个工人操做一个机器,其中一个工人会搞一些很溜的操做,让这个机器的效率更高,执行速度更快,还能搞一些高阶玩法,若是这个工厂只能留下一我的,你以为最终会留下谁呢?编程
在有了上面这三类基础知识后,咱们对于单台机器的操做能够说是入门了,可是咱们如今身处的世界是万物互联的世界,计算机须要与计算机之间进行协做,那么就须要学习计算机网络。性能优化
而我最近出于工做缘由,一直在学习 Linux 的性能优化。Linux 性能优化的范围涉及很是广,从软件到硬件、从编程到网络都有涉及到,有不少的基础知识,而对于很广的知识,我以为须要一条线来串联起来,才能造成一个体系的知识结构。因此我会把在这过程当中学到的知识,加上平时工做中的实践,提炼成博客写出来。网络
首先分析 CPU 的性能问题,当咱们发现有 CPU 的性能问题,第一时间是干什么呢?固然是查看总体的 CPU 使用状况,当查看 CPU 的总体状况后,而后再分析究竟是哪一种状况致使 CPU 的负载很高,最后找到致使 CPU 负载升高的罪魁祸首。那么咱们接下来就按照这个步骤来分析。工具
经常使用的查看 CPU 的平均负载的命令有不少,如 uptime,top 等均可以查看。首先解释下什么是平均负载,总的来讲平均负载能够理解为平均一段时间内 runnable 和 non-interruptable 进程的数量。性能
这里咱们用 uptime 命令执行获得的结果以下:学习
分别是最近 1 min,5 min,15 min 的平均负载的状况,从这里咱们能够看出最近系统的负载状况,从而能够对总体 CPU 的使用状况有一个大概的判断。优化
平均负载的详细介绍能够看: Understanding the Load Average on Linux and Other Unix-like Systems
通常有以下场景:
可使用以下工具:
查看 %user 能够判断是否是 CPU 密集型, %iowait 判断是不是 I/O 密集型, %wait 判断的则是大量进程切换型。
本篇主要介绍了如何查看 CPU 的使用状况,和判断流程,流程为如下步骤: