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 ...
随机推荐
- 二、Java多人博客系统-演变
任何项目都是由小到大,逐步演变的.自己写的这个博客系统也不例外. 更新日志如下: 一.2014年底-2015年初 功能及技术: 1.定位为个人网站,介绍自己情况和发布文章等. 2.首页模块有:个人简介 ...
- MySQL的my.cnf文件(解决5.7.18下没有my-default.cnf)
官网说:从5.7.18开始不在二进制包中提供my-default.cnf文件.参考:https://dev.mysql.com/doc/refman/5.7/en/binary-installatio ...
- Kibana-4.6.6 marvel插件license过期重新注册
1.注册新的license,https://register.elastic.co/marvel_register,注册完毕邮箱收取下载地址,将新的license下载到本地 2.到license所在目 ...
- 【妙味课堂】JS热身课后习题
<!--*** @Author: wyy* @Date: 2018-04-15 17:36:35* @Email: 2752154874@qq.com* @Last Modified by: w ...
- Docker镜像的使用
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载. 下面我们来学习: 1.管理和使用本地 Docker ...
- flask报错:werkzeug.routing.BuildError: Could not build url for endpoint 'index'. Did you mean 'single' instead?
错误代码 参考:https://blog.csdn.net/qq_27468251/article/details/81359701 改为
- 用keras实现基本的图像分类任务
数据集介绍 fashion mnist数据集是mnist的进阶版本,有10种对应的结果 训练集有60000个,每一个都是28*28的图像,每一个对应一个标签(0-9)表示 测试集有10000个 代码 ...
- [ZJOI2019]游记之我的第一次省选--自闭记
2019/3/23 day -1 今天是体育中考....(祝我好运) 实心球再次投出测量范围,虽然成绩是10.5,但是目测有15米. 立定跳远2.70,好近,我爸叫我跳2.8的QwQ. 1000米最后 ...
- Swarm部署集群
swarm-manager 是 manager node,swarm-worker是 worker node.所有节点的 Docker 版本均不低于 v1.12.在master上 docker swa ...
- 学习笔记:fhq-treap
0. 前置知识:\(treap\)的定义 树堆,在数据结构中也称Treap,是指有一个随机附加域满足堆的性质的二叉搜索树,其结构相当于以随机数据插入的二叉搜索树. >--摘自百度百科 形象化 ...