下图1为 Linux 性能优化排查工具的总结

图1

诊断 CPU 工具

查看 CPU 核数

总核数 = 物理CPU个数 X 每颗物理CPU的核数 
总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

查看物理CPU个数 
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

查看每个物理CPU中core的个数(即核数) 
cat /proc/cpuinfo| grep "cpu cores"| uniq

查看逻辑CPU的个数 
cat /proc/cpuinfo| grep "processor"| wc -l 
或者 top 后按 1,第三行开始数有几个CPU 就是几个逻辑CPU 如图2只有一个逻辑CPU0

图2

图2

top

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

语法

top [选项]

选项

-b:以批处理模式操作; 
-c:显示完整的治命令; 
-d:屏幕刷新间隔时间; 
-I:忽略失效过程; 
-s:保密模式; 
-S:累积模式; 
-i<时间>:设置间隔时间; 
-u<用户名>:指定用户名; 
-p<进程号>:指定进程; 
-n<次数>:循环显示的次数。

图3

图3


在 Linux 命令终端输入 top 后屏幕将会显示如图3显示的信息,那么这些信息显示的是什么意思呢?下面将针对每行信息进行回答。

如下图4所示,红框区域所显示信息为系统统计信息,黄框显示信息为进程信息 图4

图4

系统统计信息

第一行:top - 02:17:40 up 53 days, 5:15, 1 user, load average: 0.02, 0.04, 0.01

  • 02:17:40 表示系统当前时间。
  • up 53 days, 5:15 up 是 uptime 的意思表示当前系统运行的时长,图4 系统运行时长为 53天5小时15分钟。
  • 1 user 就很简单了表示当前只有一个用户连接。
  • load average 是看性能的时候比较重要的一个指标表示系统负载,也就是任务队列的平均长度,后面三个数分别表示1分钟、5分钟、15分钟。如果是单cpu当这个值超过1的时候需要检查系统是否出现异常,这个值当超过5的时候基本上系统已经处于死机状态。

关于 load average 推荐阅读阮一峰的文章:http://www.ruanyifeng.com/blog/2011/07/linux_load_average_explained.html

第二行:Tasks: 119 total, 1 running, 118 sleeping, 0 stopped, 0 zombie

用于统计系统上进程信息,119 total 表示系统中总进程数为119,1 running 表示当前正在运行的进程有一个, 118 sleeping 表示当前休眠的进程有 118 个, 0 stopped 表示当前停止的进程, o zombie 表示僵尸进程

第三行:Cpu(s): 0.3%us, 0.7%sy, 0.0%ni, 99.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

这里默认显示所有 CPU 的总状态,按下 1 键即可显示所有逻辑 CPU 状态。

  • us(userspace) 表示用户空间占用CPU时间百分比。
  • sy 表示内核空间占用CPU时间百分比。
  • ni 明白 ni 之前需要先了解一个知识点,Linux 系统通过 nice 值来设置进程优先级 nice 值越高优先级越低,nice 可以被手动设置, ni 在这里就表示被手动设置过 nice 值的进程占用 CPU 时间百分比。
  • id 就是 idle 表示 CPU 空闲时间的百分比,
  • wa 就是 waiting 的意思表示 CPU 在等待 I/O 上花费的时间百分比,
  • hi 全称是 hardware interrupts 表示 CPU 处理硬件中断花费的时间百分比,比如在键盘上敲一个键。
  • si 全称是 software interrupts 软件通过发出特殊 CPU 指令中断,表示 CPU 在处理软件中断花费的时间百分比。
  • st 全称是 steal time(被偷走的时间) CPU 花费在虚拟机上的时间百分比。

第四行:Mem: 520132k total, 254340k used, 265792k free, 24916k buffers

Mem 就是内存信息,其他都是字面意思

  • total — 物理内存总量
  • used — 使用中的内存总量
  • free — 空闲内存总量
  • buffers — 缓存的内存量

第五行:Swap: 135164k total, 7176k used, 127988k free, 105748k cached

swap交换分区信息

  • total — 交换区总量
  • used — 使用的交换区总量
  • free — 空闲交换区总量
  • cached — 缓冲的交换区总量

系统进程信息

  • PID — 进程id
  • USER — 进程所有者
  • PR — 进程优先级
  • NI — nice值。负值表示高优先级,正值表示低优先级
  • VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
  • RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
  • SHR — 共享内存大小,单位kb
  • S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
  • %CPU — 上次更新到现在的CPU时间占用百分比
  • %MEM — 进程使用的物理内存百分比
  • TIME+ — 进程使用的CPU时间总计,单位1/100秒
  • COMMAND — 进程名称(命令名/命令行)

排查技巧

通过 top –H -p 查看运行时间较长线程

参考资料:
https://www.ibm.com/developerworks/cn/java/j-lo-performance-tuning-practice/index.html
https://www.cnblogs.com/peida/archive/2012/12/24/2831353.html
https://www.booleanworld.com/guide-linux-top-command/
http://www.blogjava.net/hankchen/archive/2012/05/09/377735.html

Linux 性能优化排查工具的更多相关文章

  1. Linux性能优化-平均负载

    Linux性能优化-平均负载 目录 Linux性能优化-平均负载 平均负载的含义 平均负载为多少时合理 平均负载与 CPU 使用率 平均负载案例分析 场景一:CPU 密集型进程 场景二:I/O 密集型 ...

  2. Linux 性能优化之 IO 子系统 系列 图

    http://blog.sina.com.cn/s/articlelist_1029388674_11_1.html Linux 性能优化之 IO 子系统(一) 本文介绍了对 Linux IO 子系统 ...

  3. 如何学习Linux性能优化?

    如何学习Linux性能优化? 你是否也曾跟我一样,看了很多书.学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点.但 ...

  4. Linux 性能測试工具

    Linux 性能測试工具 linux performance 查看系统配置 查看CPU信息 lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64- ...

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

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

  6. Linux性能优化从入门到实战:01 Linux性能优化学习路线

      我通过阅读各种相关书籍,从操作系统原理.到 Linux内核,再到硬件驱动程序等等.   把观察到的性能问题跟系统原理关联起来,特别是把系统从应用程序.库函数.系统调用.再到内核和硬件等不同的层级贯 ...

  7. Android 性能优化之工具和优化点总结

    Android性能优化学习 最近公司主抓性能优化工作,借此春风也学习到了许多Android性能优化方面的知识.由于组内队友的给力,优化的成果也是比较喜人.同时也学习和实践了不少知识,特此记录. 1.性 ...

  8. 转载linux性能调优工具

    Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具,各种资源应有尽有,大量干货,强烈建议收藏.

  9. linux ---性能监控(工具)

    linux服务器性能监控-nmon Nmon 是一个分析aix和linux性能的免费工具,出自IBM,其采集的数据通过nmon_analyser生成报表 一.下载 官网下载地址 百度网盘 二.运行和使 ...

随机推荐

  1. 配置docker服务器支持远程连接

    操作系统:linux-ubuntu 参考文档:https://cloud.tencent.com/developer/article/1047265 采用上述文档:非安全的连接方式/服务端配置/通常的 ...

  2. 使用 wx.miniProgram.postMessage 传递网站数据来分享网站程序页面

    在小程序里使用web-view组件,在对小程序点击顶部分享按钮分享时,分享的内容为当前页面的内容,需要使用wx.miniProgram.postMessage来进行处理 H5页面代码 created( ...

  3. STL关联容器的基本操作

    关联容器 map,set map map是一种关联式容器包含 键/值 key/value 相当于python中的字典不允许有重复的keymap 无重复,有序 Map是STL的一个关联容器,它提供一对一 ...

  4. Kettle 执行SQL脚本

    以下操作都在5.0.1版本下进行开发,其余版本可以进行自动比对 本文将对Kettle5中常用步骤字段选择(又名选择/改名值,英文原名:Select Values)进行详细解释.这个步骤的功能非常强大, ...

  5. Node.js连接数据库取值,简单接口的实现

    第一步:先安装Node.js,这里不做介绍 第二步:新建一个文件夹,打开cmd,进入该文件夹 执行npm init命令生成page.json文件 第三步:安装如下模块,打开cmd,进入第二步的文件夹, ...

  6. JavaScript 看不见的类型转换

    本章是我阅读JavaScript权威指南时着重留意的内容,同时也推荐正在学习前端的小伙伴可以留意一下这本书<JavaScript权威指南> JavaScript可以很灵活的将一种类型的值转 ...

  7. LINUX下查看点云图————point cloud(.ply .vtk .pcd)

    首先,你要确定点云的格式:.pcd(.vtk) 还是 .ply 如果是.pcd(.vtk),那么可以用pcl工具查看: 1.安装pcl,官网链接点击打开链接 sudo add-apt-reposito ...

  8. ubuntu建立文件或者文件夹软链接

    文件夹建立软链接(用绝对地址) ln -s 源地址  目的地址 比如我把linux文件系统rootfs_dir软链接到/home/jyg/目录下 ln -s /opt/linux/rootfs_dir ...

  9. Eclipse左侧的工程目录消失解决办法

    菜单栏window---->show view--->other--->project explorer

  10. 算法八字符串转换正数(atoi)

    请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之 ...