linux 优化(一)
uptime

- up 表示系统正在运行
- 10:54:19 表示当前时间
- 8 min 表示系统启动的总时间
- 1 user 表示正在登陆用户数
- load average 表示系统平均负载,最后三个数字呢,依次则是过去 1 分钟、5 分钟、15 分钟
平均负载
简单来说,平均负载是指单位时间内,系统处于可运行状态(runnable or Running)和不可中断状态(uninterruptible)的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。
对负载的简单理解(以单核为例):
- 如果路面上的车不多,没有占满车道,那么load < 1;
- 如果占满了车道,load = 1;
- 如果车道外面还有车在等待,load > 1;
需要注意的是,load = 1 不代表CPU无法工作了,这只是表示满负荷运行,例如实际生活中的例子,车道占满了,但是车流还能有序前进。
进程的主要状态:
- R(running) 可执行状态, 进程处于运行或就绪状态。 Running or runnable (on run queue). 就绪状态表示线程已经分配到除CPU以外的资源,等CPU调度它时就可以马上执行了。同一时刻可能会有多个处于可执行状态的进程被放到CPU的可执行队列中,一个进程只会出现在一个CPU的可执行队列中。进程调度器从各个CPU的可执行队列中选择一个进程在该CPU上运行。
- S(sleeping) 可中断的睡眠状态
- D(uninterruptible sleep) 不可中断的深度睡眠状态。一般由IO引起,同步的IO在做读写时,CPU不能做其他事情,只能等待,如果程序采用异步IO,这种状态应该就很少见了。比如最常见的是等待硬件设备的 I/O 响应。所以,不可中断状态实际上是系统对进程和硬件设备的一种保护机制。如果处于D状态的时间较长,意味着可能是IO设备本身出了故障,需要排查设备是否正常。
- T(task_stopped or task traced)暂停状态或跟踪状态,停止(进程收到SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU信号后停止运行运行)
- X(dead)
- Z(zombie) 僵尸状态
源码定义 https://github.com/torvalds/linux/blob/master/fs/proc/array.c
提示:Linux命令ps可以查看每个进程的状态。
ps -aux

总结:
- 简单理解为,平均负载其实就是平均活跃进程数。
- 平均负载最理想的情况是等于 CPU 个数。系统的CPU可以从/proc/cpuinfo统计出。
- 包含正在使用 CPU 的进程,还包括等待 CPU 和等待 I/O的进程。

分析系统负载趋势
1、如果 1 分钟、5 分钟、15 分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳。
2、如果 1 分钟的值远小于 15 分钟的值,就说明系统最近 1分钟的负载在减少,而过去 15 分钟内却有很大的负载。
3、如果 1 分钟的值远大于 15 分钟的值,就说明最近 1 分分钟的负载在增加。平均负载接近或超过了 CPU 的个数,就意味着系统正在发生过载的问题。
初步阈值:当平均负载高于 CPU 数量 70% 的时候,需要进行排查负载过高的原因。
观点一:CPU 使用率,是单位时间内 CPU 繁忙情况的统计,跟平均负载并不一定完全对应。
- CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的。
- 大量等待CPU的进程调度会导致平均负载升高,此时的CPU使用率也会比较高。
- CPU 使用率高,无等待CPU,IO无作业,这种场景,通常是计算密集型任务,即大量生成耗时短的计算任务。这种任务会占满CPU资源,造成系统响应速度颠簸,但由于每个任务能快速计算完成,不会在运行队列堆积,所以在Load Average里不会体现出来。
观点二:IO繁忙,跟平均负载并不一定完全对应。
- I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高。
- CPU使用率低,IO繁忙,但是Load Average低。这种场景,通常是低频大文件读写,由于请求数量不大,所以任务都处于R状态,Load Average数值反映了当前运行的任务数,不会飙升,IO设备处于满负荷工作状态,导致系统响应能力降低。
观点三:CPU使用率高,IO繁忙/等待,Load Average高,系统卡。
这种场景,通常是服务混部,即IO、计算密集型任务混部在一起,相当于CPU、IO都处于高负荷状态,那么Load Average 自然很高。
sysstat
性能查看工具sysstat,用来监控和分析Linux的性能。
centos 7安装命令 sudo yum install sysstat -y
- mpstat 是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有 CPU 的平均指标。
- pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。
源码安装,下载地址:http://sebastien.godard.pagesperso-orange.fr/download.html
wget http://pagesperso-orange.fr/sebastien.godard/sysstat-12.1.3.tar.gz
tar -xvf sysstat-12.1.3.tar.gz
cd sysstat-12.1.3
./configure
make
make install
stress
stress 是一个 Linux 系统压力测试工具,可以模拟测试系统高负荷。
centos 7安装命令 sudo yum install -y stress
stress-ng
stress与stress-ng大同小异,stress-ng是stress的加强版
centos 7安装命令 sudo yum install -y stress-ng
场景模拟
1、CPU 密集型进程,测试机器为单核虚拟机
模拟一个 CPU 使用率 100% 的场景,通过命令stress
- --timeout secs 指定运行多少秒
- --cpu forks 产生几个处理sqrt()函数的CPU进程
stress --cpu 1 --timeout 600

mpstat查看,ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据
mpstat -P ALL 5

上图CPU 的使用率为 100%,但它的 iowait 只有 0。这说明,平均负载的升高正是由于 CPU 使用率为 100%。

从top命令可以明显看到,stress 进程的 CPU 使用率最高。
2、I/O 密集型进程,测试机器为单核虚拟机
- --io forks:产生多个处理sync()函数的磁盘I/O进程。
- --timeout secs 指定运行多少秒。
- --hdd:写进程,写入固定大小,通过mkstemp()函数写入当前目录。
stress-ng --io 1 --hdd 1 --timeout 600

mpstat -P ALL 5

pidstat -u 5 100


linux 优化(一)的更多相关文章
- Linux优化之IO子系统监控与调优
Linux优化之IO子系统 作为服务器主机来讲,最大的两个IO类型 : 1.磁盘IO 2.网络IO 这是我们调整最多的两个部分所在 磁盘IO是如何实现的 在内存调优中,一直在讲到为了加速性能,linu ...
- linux优化项
Linux优化: 1.建立普通账号,使用普通用户登陆. 2.处理SELINUX. 3.处理防火墙. 4.精简开机自启动服务.保留sshd,network,crond,rsyslog,sysstat. ...
- HBASE的优化、hadoop通用优化,Linux优化,zookeeper优化,基础优化
HBase 的优化3.1.高可用在 HBase 中 Hmaster 负责监控 RegionServer 的生命周期,均衡 RegionServer 的负载,如果Hmaster 挂掉了,那么整个 HBa ...
- 针对跑MySQL的Linux优化【转】
本文来自:http://www.mysqlsupport.cn/linux-performance-tuning-tips-mysql/ 因为很多MySQL的生产环境都在Linux下,我决定指出一些L ...
- linux 优化&安全运维&黑客攻防
优化: 可删除用户:adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher. :userdel games 可删除组:adm,lp,ne ...
- linux优化之全过程
基于开放源代码的Linux给用户提供了这样一个平台:可以根据自己的软.硬件环境,定制自己的Linux应用环境.因此,根据每个用户不同的应用范围定制应用环境,可以将Linux系统的性能提升到新的高度. ...
- Linux优化远程SSH连接
优化远程SSH连接 1.Linxu和Window的ssh连接区别 Windom默认3389端口,管理员administartor 普通是guest Linux 默认22端口 管理员root 普通一堆 ...
- Linux 优化详解
一.引子 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不是说现在又花了.测试了,以后就可以一劳永逸,而不是说 ...
- 八、linux优化一
1.关闭selinux sed –I ‘s#SELINUX=enforcing#SELINUX=disabled#g’ /etc/selinux/config grep SELINUX=disable ...
- Linux优化总结
1)netstat (*****)查看网络状态lntup或an 1.[listening|-l] 2.[--numeric|-n] 3.[--tcp|-t] 4.[--udp|-u] 5[--prog ...
随机推荐
- 进程间通信IPC与Binder机制原理
1, Intent隐式意图携带数据 2, AIDL(Binder) 3, 广播BroadCast 4, 内容提供者ContentProvider 5,Messager(内部通过binder实现) 6, ...
- 一个服务器创建两个MySQL
转载:http://www.2cto.com/database/201412/357863.html 将已安装的数据库文件夹复制到另一个目录下 打开复制目录下的my.ini文件修改 [client] ...
- [NOIP2017] 宝藏 【树形DP】【状压DP】
题目分析: 这个做法不是最优的,想找最优解请关闭这篇博客. 首先容易想到用$f[i][S][j]$表示点$i$为根,考虑$S$这些点,$i$的深度为$j$情况的答案. 转移如下: $f[i][S][j ...
- win10系统同时安装python2.7和python3.6
我是先在本机上安装的python3.6.5,因为要学习一个框架,但是这个框架只支持python2,所以我又安装了python2.7.15,并且配置到系统环境变量 环境变量配置了python3.6.5的 ...
- 【BZOJ1015】【JSOI2008】星球大战 并查集
题目大意 给你一张\(n\)个点\(m\)条边的无向图,有\(q\)次操作,每次删掉一个点以及和这个点相邻的边,求最开始和每次删完点后的连通块个数. \(q\leq n\leq 400000,m\le ...
- bzoj 2131 : 免费的馅饼 (树状数组优化dp)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2131 思路: 题目给出了每个馅饼的下落时间t,和位置p,以及价值v,我们可以得到如下状态 ...
- MT【300】余弦的三倍角公式
2017清华大学THUSSAT附加学科测试数学(二测)$\cos^5\dfrac{\pi}{9}+\cos^5\dfrac{5\pi}{9}+\cos^5\dfrac{7\pi}{9}$ 的值为___ ...
- 【Luogu3602】Koishi Loves Segments(贪心)
[Luogu3602]Koishi Loves Segments(贪心) 题面 洛谷 题解 离散区间之后把所有的线段挂在左端点上,从左往右扫一遍. 对于当前点的限制如果不满足显然会删掉右端点最靠右的那 ...
- [leetcode]Weekly Contest 68 (767. Reorganize String&&769. Max Chunks To Make Sorted&&768. Max Chunks To Make Sorted II)
766. Toeplitz Matrix 第一题不说,贼麻瓜,好久没以比赛的状态写题,这个题浪费了快40分钟,我真是...... 767. Reorganize String 就是给你一个字符串,能不 ...
- 使用jvisualVm监控本地和远程的jvm
jvisualVm是jdk自带的可视化监控工具,功能很强大,可安装各种扩展插件.本篇不打算讲解如果使用详细的功能,只讲在windows环境怎么监控本地和远端(一般是无界面的linux系统)的java进 ...