你好,游客 登录 注册 搜索
背景:
阅读新闻

常用机器性能评估工具

[日期:2017-04-13] 来源:极客头条  作者: [字体: ]

  作者 | 杨海春

  编辑 | 京露

  杨海春,曾在从兴技术有限公司担任主要设计开发岗,熟悉移动计费系统整体系统架构。目前就职于腾讯计算机系统有限公司,担任工程师职位,熟悉日志计费系统,离线计算等场景。

  软件系统跑在机器上,处理能力受硬件制约,所以,单机处理能力会有上限。评估机器处理能力的上限,检查程序的瓶颈在哪,有助于程序性能分析。

  主要的几大硬件:CPU、内存、网络、磁盘。本文主要结合本人经验介绍这几大硬件的性能评估工具。

  1.CPU性能评估

  1.1 vmstat 工具

  使用举例:

  vmstat 1 10

  第一个参数:采样频率

  第二个参数:采样次数

  

 

  结果参数:

  --procs--

  r:运行和等待CPU时间片的进程数

  b:等待资源的进程数。如等待网络I/O

  如果r值长期大于CPU的个数, 则CPU遇到瓶颈

  --cpu--

  us:用户进程消耗CPU时间百分比

  sy :内核进程消耗的CPU时间百分比

  如上图,跑了几个耗cpu的程序,发现us长期接近100,cpu已经跑满了。这个时候,可能需要考虑优化应用服务算法了。

  一般:如果us长时间大于50,需要考虑优化程序算法等。

  sy + us > 80 可能存在CPU瓶颈了

  1.2 Sar工具

  举例:sar -u 1 5

  

 

  %idle值高,表示CPU较空闲。

  如果idle值持续低于10,表示系统中目前的瓶颈在CPU。

  如上图,CPU已经达到瓶颈了。

  2. 内存性能评估

  2.1 free 工具

  举例:free –g or free –m

  -g:以GB为单位查看

  -m:以MB为单位查看

  

 

  关注第二行:

  -buffers/cache=Mem行:used-buffers-cached

  +buffers/cache=Mem行:free+buffers+cached

  一般第二行 +buffers/cache 表示应用程序可使用的内存。

  cached里的内容,一般可以释放给应用程序使用。

  释放cached里的内存,看是否可用:

  echo 3 > /proc/sys/vm/drop_caches

  再查看内存:

  

 

  发现末完全释放,只释放了一部分。(与上面的图比较)

  检查:发现部分共享内存占用,无法释放,应用程序也就无法使用这部分了。

  删除目前没有使用的共享内存:

  ipcs -m | awk '$6 == 0 {system("ipcrm -m "$2)}'

  再执行

  echo 3 > /proc/sys/vm/drop_caches

  再执行

  free –m

  

 

  cached里的内存又释放了一些。

  剩下的,部分的共享内存,应用程序正常使用,无法释放。

  所以,真正可用的内存,应该是 2400M左右。

  还可以使用cat /proc/meminfo查看

  

 

  3. 磁盘性能评估

  3.1 iostat工具

  举例:

  iostat -d -x -k 1 10

  -d 表示,显示设备(磁盘)使用状态

  -x将用于显示和io相关的扩展数据

  -k某些使用block为单位的列强制使用Kilobytes为单位

  

 

  await I/O请求的平均等待时间,单位毫秒;值越小,性能越好;

  svctm I/O请求的平均服务时间,单位毫秒

  %util 统计时间内有百分几的时间用于I/O操作。接近100,表示磁盘已经接近满负荷运行了。

  如上图,如果await时间远大于svctm,表示等待I/O队列的时候太大,磁盘已经达到瓶颈了。

  3.2 Sar工具

  举例:

  sar –d 1 10

  

 

  avwait:队列占满时传送请求等待队列空闲的平均时间。

  avserv:完成传送请求所需平均时间(毫秒)。

  %util: 100磁盘已经繁忙了。

  看写入速度,100多M每秒。要提高写入速度,可以换更快的盘。

  4. 网卡性能监控

  4.1 ss工具

  举例:

  ss -a -tp -s|grep agent

  

 

  ss –s

  查看现有连接数等:

  

 

  常用选项:

  -a 显示所有的sockets

  -l 显示正在监听的

  -n 显示数字IP和端口,不通过域名服务器

  -p 显示使用socket的对应的程序

  -s 打印出统计信息。

  5. 整体性能评估工具

  5.1 Top工具

  举例:

  top

  

 

  %us:指的是cpu用在用户态程序上的时间;

  %sy:指的是cpu用在内核态程序上的时间;

  %ni:指的是用在nice优先级调整过的用户态程序上的时间;

  %id:指的是cpu空闲时间;

  load average:

  任务队列的平均长度

  1分钟、5分钟、15分钟前到现在平均值

  三个值长时间大于CPU核数的话,表示机器很繁忙。上图开了8个耗CPU程序,可以发现,1分钟均值已经越过CPU个数(机器CPU个数为8核)

收藏 推荐 打印 | 录入:574107552 | 阅读:
相关新闻      
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款