linux查看虚拟内存占用高,linux查看虚拟内存和cpu占用率
top
free
cat /proc/meminfo
cat /proc/cpuinfo
[root@centerlisdb proc]# dmidecode |grep -A16 "Memory Device" | more [object Object]
========================================================================================
==============================================================
一般我们查看系统性能主要是在以下几个方面
1.用户使用CPU情况 展现为 %user
2.系统使用CPU情况 展现为 %sys
3.wio或iowait 展现为 %iowait 进程由于等待磁盘IO而使CPU处于空闲状态的比率
4.CPU的空闲率
5.CPU上下文的交换的比率,也有说明为CPU上下文的切换。即内存和寄存器中数据的切换
6.nice 这个还不是很明白是啥意思
7.real-time 还是未知
8.运行队列的长度
9.平均负载
常见用法:top -d 3 //每三秒刷新一次数据 默认是每5秒刷新一次数据Ctrl+L //擦除并且重写屏幕。概念详解:load average: 可以理解为每秒钟CPU等待运行的进程个数. 在Linux系统中,sar -q、uptime、w、top等命令都会有系统平均负载load average的输出,那么什么是系统平均负载呢? 系统平均负载被定义为在特定时间间隔内运行队列中的平均任务数。如果一个进程满足以下条件则其就会位于运行队列中: - 它没有在等待I/O操作的结果 - 它没有主动进入等待状态(也就是没有调用'wait') - 没有被停止(例如:等待终止) 二 常用命令
1.mpstat
2.iostat
3.vmstat
4.sar
三命令详解
1. mpstat -P ALL 5 //需要注意的P和ALL一定要大写
17时22分24秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
17时22分29秒 all 0.30 0.00 0.10 0.67 0.02 0.07 0.00 98.83 821.40
17时22分29秒 0 1.00 0.00 0.60 1.00 0.20 0.60 0.00 96.60 560.00
17时22分29秒 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.20 0.00
17时22分29秒 2 0.60 0.00 0.20 0.20 0.00 0.20 0.00 99.00 250.20
17时22分29秒 3 0.00 0.00 0.00 4.00 0.00 0.00 0.00 96.00 11.20
17时22分29秒 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.20 0.00
17时22分29秒 5 0.80 0.00 0.00 0.00 0.00 0.00 0.00 99.20 0.00
17时22分29秒 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 0.00
17时22分29秒 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 0.00
上面信息我们可以看出,有8个CPU。
%user :在internal时间段里,即为用户态的CPU时间,及登录用户所消耗的CPU时间比。
%sys :在internal时间段里,负进程消耗的CPU时间,占所有CPU的百分比
%nice :优先进程占用时间
%iowait:在internal时间段里,所有未等待磁盘IO操作进程占CPU的百分比
%irq : 这个还是未知
%soft : 在internal时间段里,软中断时间(%) softirq/total*100
%idle : 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间 (%)
intr/s: 在internal时间段里,每秒CPU接收的中断的次数
2.iostat 主要是为了查看磁盘IO
Linux 2.6.16.46-0.12-smp (iread-85) 03/29/2010
avg-cpu: %user %nice %system %iowait %steal %idle
9.47 0.00 1.59 1.27 0.00 86.67
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 15.46 114.45 401.22 44378459 155576936
参数详解:
avg-cpu中参数不做过多解释,详细可见其他命令,类似。
rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz:平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
可能存在瓶颈。
idle小于70% IO压力就较大了,一般读取速度有较多的wait.
同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)
# iostat -x 1
avg-cpu: %user %nice %sys %idle
16.24 0.00 4.31 79.44
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
/dev/cciss/c0d0
0.00 44.90 1.02 27.55 8.16 579.59 4.08 289.80 20.57 22.35 78.21 5.00 14.29
/dev/cciss/c0d0p1
0.00 44.90 1.02 27.55 8.16 579.59 4.08 289.80 20.57 22.35 78.21 5.00 14.29
/dev/cciss/c0d0p2
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
上面的 iostat 输出表明秒有 28.57 次设备 I/O 操作: 总IO(io)/s = r/s(读) +w/s(写) = 1.02+27.55 = 28.57 (次/秒) 其中写操作占了主体 (w:r = 27:1)。
平均每次设备 I/O 操作只需要 5ms 就可以完成,但每个 I/O 请求却需要等上 78ms,为什么? 因为发出的 I/O 请求太多 (每秒钟约 29 个),假设这些请求是同时发出的,那么平均等待时间可以这样计算:
平均等待时间 = 单个 I/O 服务时间 * ( 1 + 2 + ... + 请求总数-1) / 请求总数
应用到上面的例子: 平均等待时间 = 5ms * (1+2+...+28)/29 = 70ms,和 iostat 给出的78ms 的平均等待时间很接近。这反过来表明 I/O 是同时发起的。
每秒发出的 I/O 请求很多 (约 29 个),平均队列却不长 (只有 2 个 左右),这表明这 29 个请求的到来并不均匀,大部分时间 I/O 是空闲的。
一秒中有 14.29% 的时间 I/O 队列中是有请求的,也就是说,85.71% 的时间里 I/O 系统无事可做,所有 29 个 I/O 请求都在142毫秒之内处理掉了。
delta(ruse+wuse)/delta(io) = await = 78.21 => delta(ruse+wuse)/s =78.21 * delta(io)/s = 78.21*28.57 = 2232.8,表明每秒内的I/O请求总共需要等待2232.8ms。所以平均队列长度应为 2232.8ms/1000ms = 2.23,而 iostat 给出的平均队列长度 (avgqu-sz) 却为 22.35,为什么?! 因为 iostat 中有 bug,avgqu-sz 值应为 2.23,而不是 22.35。
3.vmstat
procs -----------memory---------- ---sw
ap-- -----io---- -system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 1 1385712 66752 112164 1429992 3 4 14 50 14 2 10 2 88 1 0
1 0 1385712 64540 112208 1430976 0 0 3 104 2599 6595 15 2 81 3 0
0 0 1385712 62084 112232 1433008 0 0 1 1276 2068 7772 18 1 77 4 0
0 0 1385712 60808 112232 1434036 0 0 1 29 730 3686 9 1 90 1 0
参数详解:
r:当前系统中等待CPU的进程数(所有的CPU),若是改值连续都大于CPU的个数,表明有多数进程在等待CPU进行处理。若是该值大于CPU个数4倍的话,那么表明该服务器缺少CPU,或者CPU的处理速度过慢
in :cpu每秒产生的中断数
cs :每秒产生的上下文切换
us:用户占用的CPU时间百分比,同mpstat 的%user,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速(比如PHP/PERL)
sy:系统占用的CPU时间百分比,同mpstat 的%sys。内核进程消耗的CPU时间百分比(sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因)
id:CPU处于空闲状态时间百分比,如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu us) 系统则面临着CPU资源的短缺.
wa:IO等待消耗的CPU时间百分比,wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
us+sy+id = 100%
常见用法:
vmstat -n 3 //每三秒获取一次数据
vmstat 4 5 //间隔4次输出5次数据
概念详解:
上下文切换:CPU的切换就是将轮到该时间片的进程,将该进程中的数据从内容中刷到CPU的寄存器中,同时将原寄存器中的数据刷到内存中保存。
4.sar
sar [options] [-A] [-o file] t [n]
t 和 n两个参数指定了采样间隔和采样次数
- o 较日志记录到某个文件中
sar 5 6 //每5秒采用一次,共采样6次。
Linux 2.6.18-53.el5PAE (localhost.localdomain) 03/28/2009
07:40:17 PM CPU %user %nice %system %iowait %steal %idle
07:40:19 PM all 12.44 0.00 6.97 1.74 0.00 78.86
07:40:21 PM all 26.75 0.00 12.50 16.00 0.00 44.75
07:40:23 PM all 16.96 0.00 7.98 0.00 0.00 75.06
参数详解:大部分的参数同mpstat top等命令。%idle :等同于vmstat 中的id .就是空闲CPU百分比.如果该值高,表明CPU较空闲,但是处理速度还是很慢,则表明CPU在等待内存分配,应该加大服务器的内存。若是该值持续低于10%,表明CPU处理能力较弱,需要增加CPU。%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
linux查看虚拟内存占用高,linux查看虚拟内存和cpu占用率相关推荐
- 【linux】使用 nice、cpulimit 和 cgroups 限制 cpu 占用率
下面介绍3种控制进程运行的方法: 1.使用 nice 命令手动控制任务的优先级. 2.使用 cpulimit 命令不断的暂停进程,以控制进程所占用处理能力不超过特定限制. 3.使用linux内建的co ...
- win10内存占用率过高怎么办_如果你的CPU占用率过高 或跟Win10累积更新有关
如果您近期发现电脑的CPU占用率过高,别着急,这可能并不是你应用程序的问题,而罪魁祸首可能处在你的系统端.源于 Windows 10 2019 五月(Version 1903)发布的累积更新. 根据微 ...
- linux mysql cpu 查看工具_Shell编程检测监控MySQL的CPU占用率
shell编程很强大!网站访问量大的时候MySQL的压力就比较大,当mysql的CPU利用率超过300%的时候就不能提供服务了,近乎卡死状态,这时候最好的方法就是重启mysql服务.由于这种事具有不可 ...
- Linux Load Average高但磁盘IO和CPU占用率不高的可能原因
vmstat 1:查看block in(bi),block out(bo),interrupt(in),context switch(cs) pidstat -w 1:查看每个进程的context s ...
- linux查看cpu占用率_Linux 性能查看
查看系统负载 uptime 这个命令可以快速查看机器的负载情况. 在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量. 命令的输出,load avera ...
- 电脑cpu占用率高?怎么办?1分钟快速解决!
案例:电脑cup过高怎么办? [我的电脑运行缓慢,导致我学习和工作的效率很低.刚刚查看了一下电脑,发现它的cpu占用率很高.有没有小伙伴知道如何解决此电脑cpu过高的问题?] 电脑是我们生活中不可缺少 ...
- LINUX进程内存占用情况如何查看的方法
在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会 ...
- Linux下如何查看高CPU占用率线程
转于:http://www.cnblogs.com/lidabo/p/4738113.html 目录(?)[-] proc文件系统 proccpuinfo文件 procstat文件 procpidst ...
- Linux服务器如何查看CPU占用率、内存占用、带宽占用
CPU占用率查看命令:top 图中红色部分即为占用百分率,下面是每个进程的CPU占用率,如果服务器是多核CPU可能在下方看到有些进程CPU占用超过100%,这种一般是该进程使用了多核. 内存占用率:f ...
最新文章
- JVM调优总结(7):调优方法
- 拒收苹果超10万元赏金!程序员小哥找出iCloud账户漏洞后,发文直指苹果不够公开透明...
- ios xmlrpc
- c# spire.xls 设置文字为微软雅黑_Excel工作薄常规样式设置,WorkBook.Styles
- synchronized细节问题
- Spring Boot @EnableAutoConfiguration和 @Configuration的区别
- 安卓学习-界面-View的自定义
- 同学们,看看这里吧!!!
- T-SQL像数组一样处理字符串、分割字符串,遍历数组
- Echarts 下载使用教程
- html中火星文字体样式,火星文对照表
- fclk if总线_技嘉B550手把手超频指南,光威血影为例
- java中POJO类为什么要实现序列化
- jmeter使用心得(一)
- 解决Minimum supported Gradle version is 4.6. Current version is 2.4.0
- 异常篇 之 记录一次因“MIUI 优化”引发的无奈。。。
- BZOJ 3876 AHOI2014 支线剧情 费用流
- 解决springmvc中添加了静态资源访问路径之后就访问不到Controller路径的问题
- 网络攻防学习心得一(20159320)学习小结
- SendKeys.SendWait()用法