htop 命令是 top 命令的升级版,能够以更加丰富的形式展示服务器运行的进程和线程的情况,查看服务器的整体运行状态等。本篇对 htop 命令进行介绍。

安装 htop

1
2
3
4
5
6
7
8
9
10
11
# centos
sudo yum -y install epel-release
sudo yum search htop
sudo yum info htop
sudo yum update
# sudo yum upgrade
sudo yum install htop

# debian or ubuntu
sudo apt update
sudo apt install htop

注意,在 centos 中,命令 yum update 和 yum upgrade 有一些小区别:

  • yum upgrade 会强制删除过时的软件包,这可能是危险的,因为有可能你在使用该软件;
  • yum update 不会删除而会保留它们,这使得 yum update 更安全

htop 命令使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
## 以无颜色显示
htop -C
htop --no-color

## 查看某个用户的信息
htop -u jinzhongxu
htop --user=jinzhongxu

# 查看某个进程的信息
htop -p PID
htop -p 2322, 3999
# 查看htop帮助信息
htop --help
man htop

对 htop 的显示进行解释,如下图是 htop 命令显示的一个例子:

CPU

  • 编号 1-72 指的服务器 cpu 逻辑核心数;
  • 每一个数字后面的的栅格表示该 cpu 运行的情况,满格表示 100% 占用,不同颜色表示不同的进程:
    • 蓝色:低优先级进程占用百分比;
    • 绿色:普通用户运行的进程占用百分比;
    • 红色:系统进程占用百分比;
    • 橙色:IRQ 时间占用百分比;
    • 洋红色:Soft IRQ 时间占用百分比;
    • 灰色:IO 等待时间占用百分比;
    • 青色:Steal 时间占用百分比;

内存

内存(Memory,简写 Mem)一栏:

  • 绿色:内存页面占用 RAM 百分比;
  • 蓝色:缓冲区(Buffer)页面占用 RAM 百分比;
  • 橙色:缓存区(Cache)页面占用 RAM 百分比;
  • 21.2G/92.9G:服务器 RAM 占用/总 RAM 大小;

交换分区(Swap,简写 Swp)解释同内存。

缓冲和缓存

缓冲(Buffer)表示数据的暂存,然后批量传输或写入,多使用顺序的方式,用来缓解不同设备之间频繁地、缓慢地随机写。缓冲区是解决速度差异的唯一工具。简单说, 缓冲 buffer 是即将要被写入磁盘的。
缓存(Cache)表示对已读数据的复用,通过将它们缓存在相对高速的区域,缓存主要针对的是读操作。简单来说,缓存 cache 是从磁盘中读取出来的。

缓冲是为了提高内存和硬盘或其他I/O设备之间数据交换的速度而设计的。缓存是为了提高 CPU 和内存之间的数据交换速度而设计的,常见的有一级缓存、二级缓存和三级缓存(也叫作内存缓存)。

对于缓冲,是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道。从而提高系统性能。Linux 有一个守护进程定期清空缓冲内容写入磁盘,或者手动清空缓冲使用命令 sync。 拷贝数据到移动设备或者卸载移动设备时,一般要等几分钟,这是因为缓冲的原因。

对于缓存,CPU 在执行程序所用的指令和数据都要经过内存。由于内存读写速度赶不上 CPU 执行速度,为了提高两者数据交换的速度,在 CPU 和内存之间增加了缓存,它的速度比内存换,但价格高容量小,Intel等公式为了进一步缓解 CPU 和内存速度不均衡,又增加了二级缓存和三级缓存。一级缓存采用静态缓存 SRAM,二级缓存采用动态缓存 DRAM,一级缓存比二级缓存快。可简单的把二级缓存看着一级缓存的缓冲器。一般 CPU 找数据或程序是先到一级缓存找,当找不到就到二级缓存找,如果还找不到就到内存找。

线程数、负载和运行时间

  • Tasks:表示总进程数或任务数 220,分解为 725 个线程,有 3 个正在运行;
  • Load average: 表示过去 1 分钟、5 分钟和 15 分钟的系统平均负载情况;
  • Uptime:表示系统从最近一次启动的运行时长。

线程详解

  • PID:进程的 ID;
  • USER:进程所有者或启动者;
  • PRI:Linux 内核查看的进程优先级;
  • NI:由用户或 root 重置的进程优先级;
  • VIR:进程正在使用的虚拟内存;
  • RES:进程正在使用的物理内存;
  • SHR:进程正在使用的共享内存;
  • S:进程的当前状态,D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程;
  • CPU%:进程占用 CPU 百分比;
  • MEM%:进程占用内存百分比;
  • TIME+:进程占用的 CPU 时长。除以占用的 CPU 核数才是实际运行时长;
  • Command:进程对应的命令;

常用快捷键

  • u 指定某个用户的进程;
  • p Command 命令显示完整路径名;
  • P 基于 CPU 占用排序;
  • M 基于内存占用排序;
  • T 基于运行时间排序;
  • h 查看帮助
  • 或者使用鼠标点击某个条目进行排序;也可以用鼠标点击选中某个命令,上下键可移动某个命令

更多请参考

1
2
man htop
htop -h

参考文献

  1. Buffer缓冲和Cache缓存的区别
  2. Linux htop 详解