Linux下查看系统CPU和内存使用情况

CPU使用情况

  1. top命令

    top应该最常用的一个用来查看系统资源使用情况的命令了。

    • 第一行:当时时间、系统运行时长、当前登录用户数、系统平均负载(三个值同loadavg命令)
    • 第二行:进程总数、正在运行进程数、睡眠进程数、停止进程数、僵尸进程数
    • 第三行:CPU信息,具体包括用户空间CPU占比,内核空间CPU占比,用户进程空间内改变过优先级的进程占用CPU时间百分比,空闲CPU时间百分比,等待输入输出的CPU时间百分比,CPU服务于硬件中断的CPU时间百分比,CPU服务于软件中断的CPU时间百分比,被虚拟机偷走的CPU时间百分比。
    • 第四行:物理内存统计数据,总量、空闲量、已使用量、缓存大小
    • 第五行:交换分区,即虚拟内存的统计数据
    • 从第七行开始,显示了各个进程的状态信息,称为任务区(Task Area)。部分列含义如下:
    • PR:进程优先级,范围为0-31,数值越低,优先级越高
    • NI:nice值,范围-20到19,用于调整进程优先级
    • VIRT:使用的虚拟内存总量
    • RES:进程使用的、未被换出的物理内存大小
    • SHR:共享内存大小
    • S:进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=停止 t=跟踪 Z=僵尸进程
  • %CPU:上次更新到现在的 CPU 时间占用百分比。注意,在多核或多 CPU 环境中,如果进程是多线程的,而 top 不是在线程模式下运行的,该值由多个核的值累加,可能会大于 100%
    • %MEM:进程使用的物理内存百分比
  • TIME+:进程使用的 CPU 时间总计,单位 1/100 秒

top命令还有以下常用小技巧:

  1. 常用命令参数:-c显示完整命令、-i<时间>设置间隔时间、-u<用户名>指定用户名、-p<进程号>指定进程、-n<次数>循环显示的次数。

    1. 常用交互命令:h显示帮助画面、k终止一个进程、S切换到累计模式、m显示内存信息、M按照内存排序、P根据CPU排序、T根据时间排序等。
  2. cat /proc/loadavg

    1
    2
    ubuntu@VM-16-2-ubuntu:~$ cat /proc/loadavg
    0.08 0.04 0.00 1/536 26312
    • 前三项分别是最近1分钟、5分钟和15分钟的系统平均负载。系统平均负载为在特定时间间隔内运行队列中的平均进程数,包括正在CPU上运行或者等待运行的进程。

    • 第四项,分子是正在运行的进程数,分母是进程总数。

    • 最后一项是最近运行的进程ID号。

  3. vmstat <采样时间间隔> <采样次数>

    • procs:r表示运行队列中等待的进程数,b表示等待io的进程数

    • memory:交换区大小、空闲大小、buff大小和cache大小。其中buff主要用来作目录、权限缓存,cache用来记忆打开过的文件,作为文件缓冲。

    • swap:si和so表示磁盘和内存间的页换入换出数量,单位为KB/秒

    • io:bi和bo分别表示发送数据和接收数据的设备块数

    • system:in和cs分别表示每秒中断数和每秒上下文切换次数

    • cpu

      • us: 用户CPU时间,曾经在一个做加密解密很频繁的服务器上, 可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。
      • sy:系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
      • id:空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率, us是用户CPU使用率,sy是系统CPU使用率。
      • wa:CPU空闲时间
      • st:来自虚拟机偷取的CPU所占的百分比

内存使用情况

  1. top命令,详情见前文。

  2. free命令: 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略 。具体参数包括:

    1
    2
    3
    4
    5
    free [-K] #以Kb为单位显示内存使用情况
    free -g #以G为单位显示内存使用情况
    free -m #以G为单位显示内存使用情况
    free -t #以总和的形式显示内存使用情况
    free -s 1 #每秒显示1次
  3. cat /proc/meminfo

内存信息里面的buffers和cached都是缓存,两者有什么区别?

1、Buffer(缓冲区)是系统两端处理速度平衡(从长时间尺度上看)时使用的。它的引入是为了减小短期内突发I/O的影响,起到流量整形的作用。比如生产者——消费者问题,他们产生和消耗资源的速度大体接近,加一个buffer可以抵消掉资源刚产生/消耗时的突然变化。
2、Cache(缓存)则是系统两端处理速度不匹配时的一种折衷策略。因为CPU和memory之间的速度差异越来越大,所以人们充分利用数据的局部性(locality)特征,通过使用存储系统分级(memory hierarchy)的策略来减小这种差异带来的影响。
3、假定以后存储器访问变得跟CPU做计算一样快,cache就可以消失,但是buffer依然存在。比如从网络上下载东西,瞬时速率可能会有较大变化,但从长期来看却是稳定的,这样就能通过引入一个buffer使得OS接收数据的速率更稳定,进一步减少对磁盘的伤害。
4、TLB(Translation Lookaside Buffer,翻译后备缓冲器)名字起错了,其实它是一个cache。

磁盘使用情况

  1. df命令,同样地,可以使用-g,-m等参数调整数据单位

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信