zoukankan      html  css  js  c++  java
  • 常用机器性能评估工具

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

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

    主要的几大硬件: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核)


    相关推荐

    【腾讯TMQ】基于模型的自动化测试工具——GraphWalker
    【腾讯云的1001种玩法】利用腾讯云搭建实用小工具
    【腾讯云的1001种玩法】激发云力量--打造我的云端工具集


    此文已由作者授权腾讯云技术社区发布,转载请注明文章出处,获取更多云计算技术干货,可请前往腾讯云技术社区
    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~

  • 相关阅读:
    matplotlib 进阶之origin and extent in imshow
    Momentum and NAG
    matplotlib 进阶之Tight Layout guide
    matplotlib 进阶之Constrained Layout Guide
    matplotlib 进阶之Customizing Figure Layouts Using GridSpec and Other Functions
    matplotlb 进阶之Styling with cycler
    matplotlib 进阶之Legend guide
    Django Admin Cookbook-10如何启用对计算字段的过滤
    Django Admin Cookbook-9如何启用对计算字段的排序
    Django Admin Cookbook-8如何在Django admin中优化查询
  • 原文地址:https://www.cnblogs.com/qcloud1001/p/6617983.html
Copyright © 2011-2022 走看看