Linux 性能測试工具

linux performance


查看系统配置

查看CPU信息

lscpu

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
CPU socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 58
Stepping: 9
CPU MHz: 1600.000
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7

/proc/cpuinfo

cpuinfo能够查看具体信息

[wangyl11@rhel149 ~]$ more /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 58
model name : Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
stepping : 9
cpu MHz : 1600.000
cache size : 8192 KB
…………

查看内存信息

/proc/meminfo

cat /proc/meminfo

[wangyl11@rhel149 ~]$ cat /proc/meminfo
MemTotal: 32765960 kB # 系统总内存大小
MemFree: 5090232 kB # 剩余内存
Buffers: 578492 kB # 文件做缓冲大小
Cached: 4783976 kB # 被快速缓冲存储器(cache memory)用的内存的大小
SwapCached: 438840 kB
……………

free

hnwyllmm@ubuntu:~$ free
total used free shared buffers cached
Mem: 2042656 157792 1884864 564 22880 48700
-/+ buffers/cache: 86212 1956444
Swap: 2094076 0 2094076
显示的结果以字节为单位:
total:总计物理内存的大小。

used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。

Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
差别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的差别。 这两个的差别在于使用的角度来看。第一行是从OS的角度来看。由于对于OS。buffers/cached 都是属于被使用。所以他的可用内存是16176KB,已用内存是3250004KB,当中包含,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的。由于buffer/cached是为了提高文件读取的性能。当应用程序需在用到内存的时候,buffer/cached会非常快地被回收。

-m选项:以MB为单位显示

[wangyl11@rhel149 ~]$ free -m
total used free shared buffers cached
Mem: 31998 27011 4986 0 566 4676
-/+ buffers/cache: 21768 10229
Swap: 32765 6983 25781

网卡

lspci | grep -i eth

查看网卡硬件信息

hnwyllmm@ubuntu:~$ lspci | grep -i eth
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)

ethtool eth0

查看网卡eth0的信息

[root@rhel149 wangyl11]# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s # 网卡的速度
Duplex: Full
Port: Twisted Pair
………….

磁盘

df -h

[wangyl11@rhel149 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda6 20G 14G 5.6G 71% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/sda1 494M 40M 429M 9% /boot
/dev/sda2 394G 326G 48G 88% /data01
/dev/sda9 403G 23G 360G 6% /data02
/dev/sda3 50G 38G 9.2G 81% /sw
/dev/sda8 9.9G 153M 9.2G 2% /tmp
/dev/sda7 9.9G 7.3G 2.1G 78% /var
性能測试的时候,经常出现日志或者话单文件把磁盘占满的情况。能够通过这个命令来验证。

lsblk

查看硬盘和分布区域

hnwyllmm@ubuntu:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 18G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 2G 0 part [SWAP]

大杂烩

dmidecode

输出的信息包含 BIOS、系统、主板、处理器、内存、缓存等等


运行时系统监控工具

CPU占用

top

依照CPU占用率查看系统进程信息

top - 10:56:49 up 69 days, 10:54, 10 users, load average: 0.02, 0.11, 0.15
Tasks: 277 total, 1 running, 274 sleeping, 0 stopped, 2 zombie
Cpu(s): 0.3%us, 0.1%sy, 0.0%ni, 99.1%id, 0.5%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 32765960k total, 27617088k used, 5148872k free, 580304k buffers
Swap: 33551712k total, 7154044k used, 26397668k free, 4737448k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10353 qijf 20 0 5547m 1.7g 4264 S 1.3 5.3 50:54.00 odframe
2679 huangjx 20 0 2611m 428m 2532 S 0.7 1.3 8:28.79 odframe
12428 niuhg 20 0 847m 85m 50m S 0.7 0.3 99:33.40 mongod
15766 caizj 20 0 10.6g 166m 3912 S 0.7 0.5 7:05.29 java
6862 root 20 0 0 0 0 S 0.3 0.0 20:28.46 flush-8:0
15455 caizj 20 0 10.6g 166m 3924 S 0.3 0.5 7:06.37 java
15531 caizj 20 0 10.6g 169m 4776 S 0.3 0.5 7:19.69 java
15575 caizj 20 0 11.5g 165m 4436 S 0.3 0.5 13:46.97 java
1 root 20 0 19244 772 572 S 0.0 0.0 0:02.84 init
…….

top还能够依照进程占用内存排序,指定监控进程号,设置刷新频率等功能。
假设在測试过程中发现程序突然卡顿。通常会猜想到系统状态异常,除了磁盘、内存等异常。还可能是CPU被“吃掉”,比方有个特别消耗CPU的程序被启动,能够通过top命令抓到罪魁祸首。

查看指定进程的CPU占用情况top -p 'pid'

top - 11:08:48 up 69 days, 11:06, 11 users, load average: 2.80, 1.71, 0.78
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.6%us, 0.2%sy, 0.0%ni, 86.0%id, 13.3%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 32765960k total, 27585340k used, 5180620k free, 585860k buffers
Swap: 33551712k total, 7149372k used, 26402340k free, 4705800k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
31183 caizj 20 0 319m 2704 2264 S 0.0 0.0 0:00.72 mdb_zkfc_test

mpstat

监控全部CPU状态。top命令仅仅能看到总的CPU负荷。mpstat除了能够查看总的CPU负载。还能够查看CPU每一个core的负载状态。

[wangyl11@rhel149 ~]$ mpstat
Linux 2.6.32-71.el6.x86_64 (rhel149) 03/29/2016 x86_64 (8 CPU)
10:59:11 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
10:59:11 AM all 0.85 0.00 0.14 0.57 0.00 0.00 0.00 0.00 98.44

查看单个core信息mpstat -P ALL

[wangyl11@rhel149 ~]$ mpstat -P ALL
Linux 2.6.32-71.el6.x86_64 (rhel149) 03/29/2016 x86_64 (8 CPU)
11:04:29 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
11:04:29 AM all 0.85 0.00 0.14 0.57 0.00 0.00 0.00 0.00 98.44
11:04:29 AM 0 0.80 0.00 0.15 0.03 0.00 0.00 0.00 0.00 99.02
11:04:29 AM 1 1.12 0.00 0.32 0.13 0.00 0.01 0.00 0.00 98.43
11:04:29 AM 2 0.98 0.00 0.14 4.19 0.00 0.00 0.00 0.00 94.69
11:04:29 AM 3 0.65 0.00 0.07 0.01 0.00 0.00 0.00 0.00 99.27
11:04:29 AM 4 0.87 0.00 0.16 0.01 0.00 0.00 0.00 0.00 98.95
11:04:29 AM 5 0.75 0.00 0.06 0.01 0.00 0.01 0.00 0.00 99.17
11:04:29 AM 6 0.92 0.00 0.11 0.14 0.00 0.01 0.00 0.00 98.82
11:04:29 AM 7 0.73 0.00 0.06 0.01 0.00 0.00 0.00 0.00 99.20

一般的系统都会将网卡中断绑定到某个或某几个特定的CPU。假设网络在繁忙的时候,CPU总体状态非常空暇。可是绑定网卡中断的CPU可能会应付只是来,也会导致总体流程运行异常。这时就能够通过mpstat跟踪单个CPU来查看是否有这样的异常。

内存

top -p `pid’

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
31183 caizj 20 0 319m 2704 2264 S 0.0 0.0 0:00.77 mdb_zkfc_test

%MEM 进程使用的物理内存百分比
VIRT 虚拟内存总量。单位kb。VIRT=SWAP+RES
SWAP 虚拟内存中。被换出的大小,单位kb。
RES 使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可运行代码占用的物理内存大小,单位kb。
DATA 可运行代码以外的部分(数据段+栈)占用的物理内存大小。单位kb
SHR 共享内存大小,单位kb
nFLT 页面错误次数

NOTE: 上面一些參数默认不输出。须要特定參数才会输出,具体參考man手冊。

free -s `seconds’

定时输出内存信息,-s指定输出频率。

ps -o pid,user,%cpu,%mem -p `pid’

查看指定进程的CPU和内存状态

/proc/`pid’/maps

查看进程内存空间映射情况

IO

/proc/`pid’/io

rchar: 6388651 # 进程读取的字节数,包含从缓存中读取的
wchar: 70988260 # 进程写入的字节数。包含写入缓存中的
syscr: 818 # 读系统调用运行的次数
syscw: 9966 # 写系统调用运行的次数
read_bytes: 37916672 # 从物理磁盘中读取的字节数
write_bytes: 74756096 # 写入物理磁盘的字节数
cancelled_write_bytes: 4096

iostat

iostat能够显示CPU和I/O系统的负载情况及分区状态信息.

[rhel149 10353]# iostat
Linux 2.6.32-71.el6.x86_64 (rhel149) 03/29/2016 x86_64 (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.85 0.00 0.14 0.57 0.00 98.44
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 7.35 96.75 279.63 580916240 1678898304

各个输出项目的含义例如以下:
avg-cpu段:

  • %user: 在用户级别运行所使用的CPU的百分比.
  • %nice: nice操作所使用的CPU的百分比.
  • %sys: 在系统级别(kernel)运行所使用CPU的百分比.
  • %iowait: CPU等待硬件I/O时,所占用CPU百分比.
  • %idle: CPU空暇时间的百分比.

Device段:

  • tps: 每秒钟发送到的I/O请求数.
  • Blk_read /s: 每秒读取的block数.
  • Blk_wrtn/s: 每秒写入的block数.
  • Blk_read: 读入的block总数.
  • Blk_wrtn: 写入的block总数.

iostat 'seconds' ['count']
指定每一个多长时间[seconds]输出一次。一共输出count次,count能够省略。

假设系统的iowait值偏高,说明程序在IO上能够做优化,除非是一个IO密集型的程序。

综合

vmstat

vmstat是一个综合型的系统监控工具,能够同一时候看到系统的CPU、IO、内存和系统进程运行状态。

vmstat 'seconds' ['count']
每隔seconds秒输出一次。一共输出count次,count能够省略。
vmstat的输出例子:

[root@rhel149 10353]# vmstat
procs ———–memory———- —swap– —–io—- –system– —–cpu—–
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 7129728 4879500 615704 4636960 0 0 6 17 1 0 1 0 98 1 0

通过vmstat能够关注系统的内存缓存状态,系统的系统调用时间占比(sys列),空暇CPU时间(id列)和CPU上下文切换次数(cs列)。
vmstat的输出參数能够參考vmstat參数參考。

进程分析工具

pstack `pid’

pstack用来查看进程某时刻运行栈信息。经常使用来验证是否出现死锁,或者推測程序可能在运行某个函数时耗时过长。

strace

strace是跟踪系统调用的工具,能够检測系统调用的參数、返回值和运行时间。

能够查看程序运行卡在哪里,比方recv/send占用时间长,说明网络调用有问题。

命令演示例子:
strace -o output.txt -f -T -tt -e trace=all -p 28979
strace会跟踪28979进程。将结果输出到output.txt中。

valgrind

内存泄露和越界检查的葵花宝典。
经典命令:
valgrind --leak-check=full --track-origins=yes --show-reachable=yes --log-file='memcheck.log' 'run command'
使用valgrind检測内存问题,最好让进程能够正常退出。上面那条命令会跟踪'run command'程序,并将结果输出到'memcheck.log'中。

valgrind的输出和检查方法请參考valgrind的使用概述。

vtune

vtune是热点採集工具,支持Intel CPU。并提供了界面工具。查看热点十分方便。
vtune的准备:
1. 安装xmanager。
2. 设置SSH client支持X11转发。

測试步骤:
1. 运行程序;
2. 採集数据:amplxe-cl -collect hotspots -target-pid pid。这一步vtune会生成一个性能数据文件夹,这里面的数据供vtune兴许分析;
3. 打开xmanager;
4. 运行amplxe-gui。

vtune会打开一个窗体,如图。

图1. amplxe-gui打开的界面

  1. 打开採集数据并查看结果。

    图2. 打开vtune採集数据


图3. 找到数据所在文件夹(gui会默认打开SSH client上运行amplxe-gui的文件夹)


图4. vtune的分析汇总展示


图5. vtune分析热点

參考

  1. 在Linux查看内存的大小
  2. Linux 查看系统硬件信息
  3. Linux /proc/meminfo文件分析
  4. Linux top命令解析
  5. valgrind的使用概述

转载于:https://www.cnblogs.com/yutingliuyl/p/7358873.html

Linux 性能測试工具相关推荐

  1. 移动測试技术保护源码!解码全球首款移动端白盒測试工具ThreadingTest (文章转自己主动点科技)...

    作者 智晓锋 - 2014/07/14 自从斯诺登曝光美监听丑闻事件之后,我国政府就将信息安全问题上升到了国家安全的高度.基于此.国内的一家创业公司推出了智能型Android真机白盒測试以及开发辅助类 ...

  2. Linux性能分析命令工具汇总

    转自:http://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章. ...

  3. 微博达人硅谷之歌:Testin云測移动搜索性能測试非常是让人信服

    微博达人硅谷之歌:Testin云測移动搜索性能測试非常是让人信服 2014/10/08 · Testin · 开发人员訪谈 2013年11月1日,谷歌运行董事长施密特(Eric Emerson Sch ...

  4. mongodb3.0 性能測试报告 一

    mongodb3.0 性能測试报告 一 mongodb3.0 性能測试报告 二 mongodb3.0 性能測试报告 三 測试环境: 服务器:X86 pcserver   共6台 cpu:  单颗8核 ...

  5. 必备的 Linux 性能诊断分析工具!(文末送书)

    阅读本文大概需要 8.8 分钟. 作者:董西孝 来源:http://t.cn/Ehs6xfz 福利:文末留言送 3 本Linux系统安全相关书籍<Linux系统安全:纵深防御.安全扫描与入侵检测 ...

  6. Linux性能调优工具-9张图-包你用到爽!抓紧收藏吧

    这里包含Linux 性能资料的工具图.这些使用大字体可以用作海报幻灯片.也可以将它们打印出来贴在办公室墙上.它们展示了:Linux 可观察性工具. Linux 静态性能分析工具. Linux 基准测试 ...

  7. Netdata 是一款 Linux 性能实时监测工具,以web的可视化方式展示

    Netdata 是一款 Linux 性能实时监测工具..以web的可视化方式展示系统及应用程序的实时运行状态(包括cpu.内存.硬盘输入/输出.网络等linux性能的数据). Netdata文档地址: ...

  8. NetData搭建 -- Linux性能实时监测工具

    NetData搭建 – Linux性能实时监测工具 标签(空格分隔): NetData 从Github上能够看到netdata的主要功能,主要有几点: interactive bootstrap da ...

  9. 【Linux性能实时监测工具-Netdata】

    Linux性能实时监测工具-Netdata,它是Linux系统实时性能监测工具,以web的可视化方式展示系统及应用程序的实时运行状态(包括cpu.内存.硬盘输入/输出.网络等linux性能的数据).N ...

最新文章

  1. Kona 8:鹅厂基于OpenJDK开源的JDK
  2. 【OFDM频域同步】基于OFDM数字电视地面广播系统中频域同步技术matlab仿真
  3. 再降64%,3.5M超轻量中英文OCR模型开源,身量缩减效果提升v4.1
  4. HNCU 1741: 算法3-2:行编辑程序
  5. ffmpeg添加libx265
  6. Openjudge NOI题库 ch0111/04 网线管理
  7. 委托又给我惹麻烦了————记委托链的取消注册、获取返回值
  8. vscode如何设置大小写转换的快捷键
  9. OverFeat 详解
  10. 小米手机无限重启,两清与三清
  11. 【机器学习】详解 EfficientNet
  12. 博客备份系统之一:PDF,Word,TXT文件操作类
  13. uniapp 微信小程序 map自定义气泡customCallout
  14. Pycharm汉化,Pycharm怎么改成汉语,手把手教学,超详细(汉语插件安装教程)
  15. V2EX 的 API
  16. SDL2常用函数结构分析:SDL_TextureSDL_CreateTextureSDL_UpdateTexture
  17. 月薪5万,微软中国研究院最新面试题
  18. Idea中部分maven项目显示灰色
  19. android触摸屏坐标,android触摸屏坐标手工校准/调整成功
  20. 【Linux网络编程】TCP带外数据

热门文章

  1. 前端机器学习:识别人脸,并在脸颊上画草莓
  2. S/4 BP 的初步研究(一)
  3. 自动机器学习:团队如何在自动学习项目中一起工作?
  4. 几行代码轻松实现,Tensorlayer 2.0推出深度强化学习基准库
  5. Facebook发现:计算机识别系统更青睐识别“有钱人”,准确率高出20%
  6. 量子领域、人工智能都是佼佼者,中国科技实力详解
  7. 机器学习的流程是怎样的呢?如何应用到实践中去呢?
  8. 讨论Markov Random Field和Gibbs Random Field心得
  9. SAP MM 为FO类型的采购订单做MIRO时候PO Amount不自动带出来问题之对策
  10. 212页PPT详解MEMS微传感器的工作原理(深入全面!)