top简介
实时监控当前操作系统的负载情况的,每秒刷新一次状态,通常会关注三大指标(CPU、MEM、IO)
评判标准
- 整体的负载情况,判断标准,如果值非常高,只能告诉我们操作系统很繁忙
load average: 0.00, 0.00, 0.00 - CPU使用情况 :Cpu(s): 0.2%us, 0.2%sy, 99.7%id, 0.0%wa
%id: CPU空闲的百分比
问一个问题?你觉得在一个已投产的系统中ID值是高好还是低好呢?
一般情况下我们建议,95%以下都算是正常的,但是呢,我们去准备硬件的时候,一般都会预留一部分(3年)硬件配置
%us:用户程序,占用的CPU时间片的百分比。我们认为us%高是好事,但要在cpu正常能力范围内。
%sy:系统程序(和内核工作有关),资源调配,资源管理,内核其他功能的管理(system call)
对于比较成熟的操作系统,对sy%应该是占比很少的。我们认为越少越好。
如果飙升,可能说明两件事情,1,系统bug;2,中病毒了
%wa 这个参数越少越好。如果wait高说明了,
1. IO很慢(速度慢,全表扫描)
2. 内存满了OOM(内存小,全表扫描) - Mem: 4040596k total, 1692536k used, 2348060k free, 152348k buffers
# total:总的内存量
# used:已经被使用的内存量
# free:空闲的内存空间
# buffer:专门负责操作系统当中,与文件修改类操作有关的内存缓冲区(专门负责写操作的),可以被重复利用的内存区域
# cached:专门负责操作系统当中,与文件读取有关的缓存区域(专门负责文件读取操作的),
对于操作系统可用内存量=free+buffer+cached
# used:used=RSS+anon+buffer+cached - Swap: 786428k total, 0k used, 786428k free, 620256k cached
交换分区,当内存紧张的时候,会将内存区域当中的数据临时置换到SWAP中。
默认:在内存使用量达到60%
[root@db02 ~]# cat /proc/sys/vm/swappiness
60
对于MySQL环境,要尽量避免swap使用
sysctl.conf
临时修改:
[root@db02 ~]# echo 0 >/proc/sys/vm/swappiness
补充:
- Linux操作系统内存划分的三大区域:
RSS:常驻内存集,主要负责程序运行需要的内存区域
Page Cache:文件系统缓存,主要负责文件有关的缓冲和缓存,buffer+cached
anon page: 匿名页,主要负责程序之间交互时使用到内存区域 - 连续的地址位,定义为了page(页),并且进行了量化。
(1)基于固定大小page分配模式,他的一些不足的地方?
在申请内存时,需要整个内存进行遍历
会有大量的内存碎片,导致程序OOM(out of memory)
(2)SLAB Allocator内存管理子系统
1、将内存逻辑化成chain+chunk模式,内存区域会有多条链。每条chain下都“挂着”多个等同大小的chunk(2的幂)
2、在每条链的头部,都会有一个专门的chunk位图,来更快速的找到需要的空闲chunk,并且记录每个chunk最后被访问的时间戳。
(3)buddy system(伙伴系统)
1、提供了多种内存实现回收和整理内存碎片算法,最经典的就是LRU算法。
2、当内存free空间紧张时,会触发进行整理或释放,不再使用buffer和cached
通过以下命令,手工释放所有buffer和cached
echo 3 > /proc/sys/vm/drop_caches
扩展:
- iostat
iostat 1 10 :每秒获取一次系统io状态,总过获取10次
iostat -dk 1 10:以kb为单位获取状态
iostat -dm 1 10:以mb为单位获取状态
测试当前环境IO水平
mount /dev/sdb /data
iostat -dm 1 /dev/sdb
dd if=/dev/zero of=/data/bigfile在优化过程中,我们一般会结合CPU和内存的使用情况看IO状态
CPU非常繁忙(MYSQL):
1、user 很高
再看IO水平,正常情况下IO也会很高
不正常的情况,user很高,但是IO很低?
在做大量的计算(多表连接查询、排序、分组、子查询很复杂或者很频繁)
2、wait 很高,IO很少
(1)很有可能是全表扫描
(2)IO有问题(RAID规划或者磁盘IO本身问题) -
vmstat (请自行学习)
-
dstat (请自行学习)
最后修改于 2019-09-06 17:46:07
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

