本篇以 普通账号(非root)角度,描述htop软件上各信息的含义,确定是哪些账号、哪些任务PID、哪些操作命令导致了集群卡顿,及时、准确的向管理员反馈情况。
什么是htop
Htop是一个用于 Linux / 类 Unix 系统的交互式实时进程监控应用程序,也是top 命的升级版。它可以显示Linux系统上正在运行的进程信息,被广泛用于监视服务器的负载。
它的结果界面如图所示:
对普通用户而言,htop好在哪? 它可以水平滚动查看完整命令行,再也不用担心因为屏幕小,无法全部显示完整命令行了。
htop软件安装
简要介绍如下,conda详细安装、使用见上篇文章Linux下conda的安装与使用
1、# 激活conda,进入base环境
conda activate
2、#切换进入要安装的work环境
conda activate work
3、#使用conda安装,conda自动
mamba install htop
4、# htop是使用
which htop
{abs_path}/htop
htop展示信息介绍
htop的显示分为3个部分: 头部(红+黄)、进程区域(蓝)、操作提示区(绿)
解释各部分参数含义
头部(红)
下图为软件help说明中的配图,来说明CPU、Mem、Swap的状态:
(1)0-31分别代表CPU处理器/核,上图是一个三十二核的处理器。
(2)每一个数字对应着一个(progress bar),说明每一个CPU的总用量情况。
不同的颜色含义:
蓝色:显示低优先级进程使用的CPU百分比。
绿色:显示用于普通用户拥有的进程的CPU百分比。
红色:显示系统进程使用的CPU百分比。
橙色:显示IRQ时间使用的CPU百分比。
洋红色:显示Soft IRQ时间消耗的CPU百分比。
灰色:显示IO等待时间消耗的CPU百分比。
青色:显示窃取时间(Steal time)消耗的CPU百分比。
(3)物理内存(Mem)、交换(Swp)分区的信息:
绿色:显示内存页面占用的RAM百分比
蓝色:显示缓冲(buffer )区页面占用的RAM百分比
橙色:显示缓存(cache)页面占用的RAM百分比
简单来说,缓存(cache)是用来加速数据从硬盘中"读取"的,而缓冲(buffer )是用来加速数据"写入"硬盘的。通常来说,某个登录、计算节点感觉卡顿,经常是buffer或者cache的某一项占比过高。两者具体关系可以看 Linux内存buffer和cache的区别。
(4)Hostname:软件展示的具体是哪个服务器的负载情况
头部(黄)
显示了任务数量、平均负载和连接运行时间等信息;
第一行(Tasks, thr, running)
1879个任务(tasks)被分解为1382个线程(thread),其中只有1个进程处于运行(running)状态。
任务(tasks)是打开的进程总数的代表,但并不是每个打开的进程都在不断消耗CPU。 每个进程都处于几种状态:
R: Running:表示进程(process)正在使用CPU
S: Sleeping: 通常进程在大多数时间都处于睡眠状态,并以固定的时间间隔执行小检查,或者等待用户输入后再返回运行状态。
T/S: Traced/Stoped: 表示进程正在处于暂停的状态
Z:Zombie or defunct:已完成执行但在进程表中仍具有条目的进程。
第二行(Load Average)
三个值是指系统在最后1分钟,最近5分钟和最后15分钟的平均负载 (0.44,0.58,0.66)。一半情况下,当三个值的负载高于20或40时,会明显感觉服务器卡顿明显。
第三行(Uptime)
表示这个系统一共运行了多长的时间,这里已经运行了66天。
进程区域(蓝)
- PID – 描述进程的ID号
- USER – 描述进程的所有者(谁跑的)
- PRI – 描述Linux内核查看的进程优先级
- NI – 描述由用户或root重置的进程优先级
- VIRT – 它描述进程正在使用的虚拟内存 (virtual memory)
- RES – 描述进程正在消耗的物理内存(physical memory)
- SHR – 描述进程正在使用的共享内存(shared memory)
- S – 描述流程的当前状态 (state)
- CPU% – 描述每个进程消耗的CPU百分比
- MEM% – 描述每个进程消耗的内存百分比
- TIME+ – 显示自流程开始执行以来的时间
- Command –它与每个进程并行显示完整的命令执行 (比如java)
通过对CPU、MEM占比进行排序,找出占用最多的任务,便可大致确认哪些是造成集群I/O过载,卡顿的任务。
操作提示区(绿)
1、帮助文档查看
(1)查看操作手册
# 查看htop的官方使用说明
man htop
(2)软件自带的help功能
在上图展示的htop界面,输入"h" 即可进入软件的"F1 Help"功能。linux下F3等无法使用时,可使用对应的字母、符号快捷键(S / \ 等)。
2、常用的htop功能展示
① F2 Setup(快捷键S)
配置界面中的显示信息,Meters配置头部信息,Columns配置进程区域信息。
以上图为例,Left column是目前头部(红)展示的服务器信息,Right column是头部(黄)展示的信息,Available meters是可选择在头部两列中展示所有信息。 Columns同理。
常用操作为键盘上下、左右用于移动,Enter 作为确认键,Del 作为取消键,具体可自行尝试设置。
② F3 Search(快捷键 /)
输入" / “可在进程区域进入搜索状态,通过输入Search关键字,可筛选出符合的任务。Esc键 可取消搜索状态。
③ F4 Filter(快捷键 \)
输入” \ "可在进程区域进入搜索状态,通过输入Filter关键字,可筛选出符合的任务。Esc键 可取消搜索状态。
④ F5 Tree(快捷键 t)
在上图展示的htop界面,输入"t" 即可进入。再输入" t “从tree状态恢复到list状态。
⑤ F6 SortBy(快捷键 >)
在上图展示的htop界面,输入”>" 即可进入。通过方向键上下选择想要排序的类型,Enter 作为确认键,Esc键 可退出排序状态。
在上图展示的htop界面,输入大写的 “M”、 "P"即可按照内存、CPU消耗对进程进行排序,这是 快捷键 的使用方法。
⑥ F7 Nice - (快捷键 ])
F8 Nice + (快捷键 [)
“]” 的作用是提高光标选择任务的优先级,nice值减少,只有root账号有权限这么做。"["的作用是降低光标选择任务的优先级,nice值增加。
⑦ F9 Kill (快捷键 k)
在上图展示的htop界面,光标移动到想要kill的任务,输入"k" 即可进入。通过方向键上下选择想要kill掉的类型,Enter 作为确认键,Esc键 退出。效果等同Linux系统下 kill 掉 “ps -aux |grep user " 找到的高IO命令。
⑧ F10 Quit (快捷键 q)
在上图展示的htop界面,输入"q” 即可推出htop界面。
常用快捷键汇总
- h:打开帮助窗口并查看此处未提及的更多快捷方式。
- u:显示特定用户拥有的所有进程。
- P:基于高CPU消耗对进程进行排序,对应CPU%列。
- M:基于高内存消耗对进程进行排序,对应MEM%列。
- T:基于进程运行的时间排序,对应TIME+列。
- I: 对排序的结果进行反转显示。
- T:根据时间段对过程进行排序。
使用场景
(1)查看集群占用CPU、MEM比较大的任务PID,锁定使用人及该任务运行的command
# htop的信息默认每0.1s刷新一次,100方便查看内容
htop -d 50 # 每隔5s刷新一次
进入htop界面后:
①查看服务器目前的Load average在最近1、5、15分钟的负载情况,了解持续时间;
②观看Tasks信息,了解是否有"T"、“Z"等异常状态任务,很可能它们就是服务器卡顿原因。
③观察CPU、Mem、Swp的条型柱及颜色,简单判断卡顿任务是写入多,还是读取多。 对Mem而言,橙色(cache)占比多是 读取数据多,蓝色(buffer)多是 写入硬盘的数据多。
④通过输入大写的 “M”、 “P”,对进程的内存、CPU消耗进行排序,锁定对应的PID、USER、Command;
(2)查看某账号,在服务器上运行的所有任务
进入htop界面后,输入小写"u”,上下移动选择账号名称,Enter 作为确认键,找到该账号所有的任务。之后可结合常用快捷键,按照内存、CPU、时间消耗来对任务排序,或者杀掉自己的某个任务。
参考文件
1、htop官网
2、了解 htop 命令的输出
3、用 30 个实例完全解读 TOP 命令
4、htop使用详解–史上最强(没有之一)
5、Linux htop 详解
补充top简单信息
简单来说:
1、Load Average的数值别超过这台机器的总核数,就基本没啥问题。
2、CPU中,us长期过高,表明用户进程占用了大量的CPU时间。us+sy如果长期超过80或者90,代表CPU性能不足。
3、Swap交换分区的used数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
具体可看如下两篇文章:
1、《每天一个linux命令(44):top命令》
https://www.cnblogs.com/peida/archive/2012/12/24/2831353.html
2、10分钟教会你看懂top
https://cloud.tencent.com/developer/article/1786959