性能监控工具-OS性能监控

实战java虚拟机

Linux下的性能监控工具

显示系统整体资源使用情况——top命令
linux公社-top详解
top命令是linux下常用的性能工具,它能够实时的显示系统中各个进程的资源占用情况。
性能监控工具-OS性能监控_第1张图片

top - 23:30:07 up 14 min,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  91 total,   2 running,  89 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.0%id,  0.3%wa,  0.0%hi,  0.3%si,  0.0%st
Mem:   1012352k total,   214656k used,   797696k free,    17092k buffers
Swap:  4128748k total,        0k used,  4128748k free,    85228k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                          
 2069 dmtsai    20   0 98.0m 1824  844 S  0.3  0.2   0:00.48 sshd                                                                                                                              
 2169 dmtsai    20   0 15036 1208  944 R  0.3  0.1   0:00.19 top                                                                                                                               
    1 root      20   0 19356 1540 1228 S  0.0  0.2   0:01.50 init     

top命令输出分为两个部分:前半部分是系统统计信息,后半部分是进程信息。

  • 第1行:任务队列信息,等同于uptime命令:
    这里写图片描述
top - 23:30:07 up 14 min,  1 user,  load average: 0.00, 0.00, 0.00
//23:30:07 	系统当前时间  
//up 14 min 	系统运行时间,未重启的时间,时间越长系统越稳定。 格式:up xx days, HH:MM 
//1 user	系统用户数
//load average	系统平均负载,即任务队列的平均长度。 三个值表示最近1,5,15分钟的系统平均负载
  • 第2行:进程统计信息
Tasks:  91 total,   1 running,  90 sleeping,   0 stopped,   0 zombie
//进程总数 正在运行进程数 睡眠进程数 停止进程数 僵尸进程数 
  • 第3行:cpu统计信息
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
//us	(user)用户空间CPU占用率
//sy	(system)内核空间CPU占用率
//ni	(nice)用户进程空间改变过优先级的进程CPU的占用率
//id	(idle)空间CPU占用率
//wa	(iowait)等待输入输出的CPU时间百分比
//hi	CPU服务于硬件中断所耗费的时间总额
//si	CPU服务于软件中断所耗费的时间总额
//st	Steal time 虚拟机被hypervisor偷去的CPU时间
  • 第4行:内存相关信息
Mem:   1012352k total,   214640k used,   797712k free,    17148k buffers
//总内存 - 使用内存 - 空闲内存 - 用作内核缓存的内存量
  • 第5行:Swap 交换分区相关信息
Swap:  4128748k total,        0k used,  4128748k free,    85232k cached
//交换区总量 - 使用的交换区总量 - 空闲交换区 - 缓冲的交换区总量
  • 第二部分:进程信息
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                          
    7 root      20   0     0    0    0 S  0.3  0.0   0:00.91 events/0
    
// - A: PID = (Process Id) 进程Id;
// - E: USER = (User Name) 进程所有者的用户名;
// - H: PR = (Priority) 优先级 
// - I: NI = (Nice value) nice值。负值表示高优先级,正值表示低优先级
// - Q: RES = (Resident size (kb)) 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA 
// - T: SHR = (Shared Mem size (kb)) 共享内存大小,单位kb
// - W: S = (Process Status) 进程状态。D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程
// - K: %CPU = (CPU usage) 上次更新到现在的CPU时间占用百分比
// - N: %MEM = (Memory usage (RES)) 进程使用的物理内存百分比
// - M: TIME+ = (CPU Time, hundredths) 进程使用的CPU时间总计,单位1/100秒
// - X: COMMAND = (Command name/line) 命令名/命令行

监控内存和CPU——vmstat命令
linux命令大全
vmstat可以统计CPU,内存使用情况、swap使用情况等。vmstat可以指定周期和次数:
性能监控工具-OS性能监控_第2张图片

  • Procs
    • r : 等待运行的进程数。如果等待运行的进程数越多,意味着CPU非常繁忙。另外,如果该参数长期大于和等于逻辑cpu个数,则CPU资源可能存在较大的瓶颈。
    • b: 处在非中断睡眠状态的进程数。意味着进程被阻塞。主要是指被资源阻塞的进程对列数(比如IO资源、页面调度等),当这个值较大时,需要根据应用程序来进行分析,比如数据库产品,中间件应用等。
  • Memory (单位:KB)
    • swapd: 已使用的虚拟内存大小。如果虚拟内存使用较多,可能系统的物理内存比较吃紧,需要采取合适的方式来减少物理内存的使用。swapd不为0,并不意味物理内存吃紧,如果swapd没变化,si、so的值长期为0,这也是没有问题;
    • free: 空闲内存
    • buff: 用来做buffer(缓存,主要用于块设备缓存)的内存数,
    • cache: 用来做cache(缓存,主要用于缓存文件)的内存
  • swap (单位:KB/秒。)
    • si: 每秒从交换区写到内存的大小,由磁盘调入内存。
    • so: 每秒写入交换区的内存大小,由内存调入磁盘。

内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。
当看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,这个是不正确的。不能光看这一点,还要结合si和so, 如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

  • io (单位:块/秒,现在的Linux版本块的大小为1kb)
    • bi: 每秒读取的块数
    • bo: 每秒写入的块数
  • system
    • in:每秒中断数,包括时钟中断。
    • cs:每秒上下文切换数。
  • CPU: 详见TOP命令,cpu部分

** 监控IO使用——iostat命令**
iostat命令被用于监视系统输入输出设备和CPU的使用情况。
性能监控工具-OS性能监控_第3张图片

  • tps: 该设备美妙的传输次数
  • Blk_read/s: 每秒读取的block数
  • Blk_wrtn/s: 每秒写入的block数
  • Blk_read: 读取的block总数
  • Blk_wrtn: 写入的block总数

iostat默认单位为block,如果想使用KB单位则使用命令:iostat -k

其他命令

  • 内存使用情况命令:free -m
  • 硬盘使用情况 :df -h

多功能诊断器——pidstat工具
引用pidstat详解
pidstat的强大之处在于,它不仅可以监视进程的性能情况,也可以监视线程的性能情况。
可以用多种命令来获取java的进程id:如ps -ef|grep 'java';
然后使用pidlist,查看某一个进程的CUP使用情况

[dmtsai@study ~]$ pidstat -p 2812 -u 1 10
//-p 2812 : 监控2812进程
//-u 1 10 : -u表示监控cpu, 监控周期1秒,监控10次 ; //-r 监控内存 , -d:监控io
  • -u cpu使用情况
    • %guest:进程在虚拟机占用cpu的百分比
    • %CPU:进程占用cpu的百分比
    • CPU:处理进程的cpu编号
  • -u:内存使用情况
    • minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数
    • majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生
    • VSZ: 该进程使用的虚拟内存(以kB为单位)
    • RSS: 该进程使用的物理内存(以kB为单位)
    • %MEM: 该进程使用内存的百分比
  • -d :IO统计显示以下信息
    • kB_rd/s: 每秒进程从磁盘读取的数据量(以kB为单位)
    • kB_wr/s: 每秒进程向磁盘写的数据量(以kB为单位)
    • kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。

Windows下的性能监控工具(略)

  • windows自带——任务管理器
  • windows自带——perfmon
  • process explorer ——加强版任务管理器
  • pslist命令

你可能感兴趣的:(虚拟机,linux,虚拟机,性能监控)