前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux性能优化学习笔记-pidstat

linux性能优化学习笔记-pidstat

作者头像
用户2825413
发布2019-07-15 20:30:08
7570
发布2019-07-15 20:30:08
举报

如何快速查看系统负载

如何查看 cpu 个数

top 命令 再摁 1 键,会展示cpu列表使用情况

或者使用命令,查看 cpu 详情

代码语言:javascript
复制
cat /proc/cpuinfo |grep 'model name'
查看系统负载命令 uptime
代码语言:javascript
复制
uptime

14:21:53 up 40 min,  2 users,  load average: 0.02, 0.01, 0.00

当前时间、服务器运行时间、登录用户数、1 分钟、5 分钟、15 分钟的平均负载

平均负载跟cpu有很大关系, 比如我们的系统为2个cpu,那么平均负载2 表示两个cpu全部占满。 我们的平均负载1分钟内为0.02,可以简单先理解为每个cpu占用了1%。

简单公式: 0.02 * 100 / cpu数, 当超过70%以上时,可以认为有些负载过高。

安装模拟压测 stress 工具

stress 是一个 Linux系统压力测试工具,用作异常进程模拟平均负载升高的场景。

代码语言:javascript
复制
-? 显示帮助信息
-v 显示版本号
-q 不显示运行信息
-n,--dry-run 显示已经完成的指令执行情况
-t --timeout N 指定运行N秒后停止
   --backoff N 等待N微妙后开始运行
-c --cpu 产生n个进程 每个进程都反复不停的计算随机数的平方根
-i --io  产生n个进程 每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上
-m --vm n 产生n个进程,每个进程不断调用内存分配malloc和内存释放free函数
   --vm-bytes B 指定malloc时内存的字节数 (默认256MB)
   --vm-hang N 指示每个消耗内存的进程在分配到内存后转入休眠状态,与正常的无限分配和释放内存的处理相反,这有利于模拟只有少量内存的机器
-d --hadd n 产生n个执行write和unlink函数的进程
   --hadd-bytes B 指定写的字节数,默认是1GB
   --hadd-noclean 不要将写入随机ASCII数据的文件Unlink

时间单位可以为秒s,分m,小时h,天d,年y,文件大小单位可以为K,M,G

产生两个进程运算600s

代码语言:javascript
复制
stress --cpu 2 --timeout 600
使用pidstat分析到底哪里出了问题

pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

使用pidstat

代码语言:javascript
复制
wget http://pagesperso-orange.fr/sebastien.godard/sysstat-12.1.3.tar.gz
./configure
make && make install
cpu使用情况统计(-u)

使用-u选项,pidstat将显示各活动进程的cpu使用统计,执行”pidstat -u”与单独执行”pidstat”的效果一样。

代码语言:javascript
复制
间隔 5 秒后输出一组数据

pidstat -u 5 1

可以明显看出时stress命令导致的 cpu 负载过高。

内存使用情况统计(-r)

使用-r选项,pidstat将显示各活动进程的内存使用统计:

使用-d选项,我们可以查看进程IO的统计信息:
代码语言:javascript
复制
使用pidstat进行问题定位时,以下命令常被用到:

pidstat -u 1

pidstat -r 1

pidstat -d 1
以上命令以1秒为信息采集周期,分别获取cpu、内存和磁盘IO的统计信息。

使用pidstat查看某个进程的情况

查看nginx master进程的2s采样输出3次的内存使用情况

代码语言:javascript
复制
#nginx pid=32
pidstat -r 2 -p 32 3
代码语言:javascript
复制
minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数
majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生
VSZ:      该进程使用的虚拟内存(以kB为单位)
RSS:      该进程使用的物理内存(以kB为单位)
%MEM:     该进程使用内存的百分比
Command:  拉起进程对应的命令
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-01,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 呆呆熊的技术路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何快速查看系统负载
    • 如何查看 cpu 个数
      • 查看系统负载命令 uptime
      • 安装模拟压测 stress 工具
        • 使用pidstat分析到底哪里出了问题
          • cpu使用情况统计(-u)
        • 内存使用情况统计(-r)
          • 使用-d选项,我们可以查看进程IO的统计信息:
          • 使用pidstat查看某个进程的情况
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com