linux 查看内存,cpu使用


一、htop

二、hop

三、free



一,top and htop

top是Linux下常用的监控程序,htop相当于其加强版,颜色显示不同参数,且支持鼠标操作。

以前一直是在使用top查看系统的情况,现在发现了一个top的升级程序-htop。吸引我的除了功能上的增强外,就是它支持了鼠标的操作。top和htop主要区别:

In 'htop' you can scroll the list vertically and horizontally to see all processes and complete command lines. In 'top' you are subject to a delay for each unassigned key you press (especially annoying when multi-key escape sequences are triggered by accident). 'htop' starts faster ('top' seems to collect data for a while before displaying anything). In 'htop' you don't need to type the process number to kill a process, in 'top' you do. In 'htop' you don't need to type the process number or the priority value to renice a process, in 'top' you do. 'htop' supports mouse operation, 'top' doesn't 'top' is older, hence, more used and tested.

安装htop

sudo apt install htop

[sudo] password for Ubuntu: 输入密码就可以安装了

直接在命令行输入: htop 即可查看​


二,htop命令详解

1 防止进程重复显示

在使用htop查看进程信息的时候,经常会出现很多个进程重复的情况,如下情况:

linux 查看内存,cpu使用

经研究发现,htop会把一个进程里的线程当做一个进程来显示出来,上图中的java进程有多个线程,所以htop显示了多个进程。

这个特性对于分析进程性能很不有利, 所以我们要关掉它。

好在htop也是提供了一个方法来设置这个选项。

按F2

选择 Display options

选择 Hide userland threads

如下图所示

linux 查看内存,cpu使用

这样以后,在htop的进程列表里再也看不见一堆重复的进程了

linux 查看内存,cpu使用

2 数据说明

linux 查看内存,cpu使用

第一行与第二行,显示CPU当前的运行负载,如果是多核,则有几个CPU,就会显示出几个!

第三行,显示内存的使用情况!

第四行,显示交换分区使用情况!

linux 查看内存,cpu使用

第一行,显示了当前的进程总数,其中有一个进程在运行!

第二行,显示了当前的负载情况,分别代表了,1分钟,5分钟,15分钟负载!

第三行,显示了系统的运行的时间!

linux 查看内存,cpu使用

PID:进程标志号,是非零正整数

USER:进程所有者的用户名

PR:进程的优先级别

NI:进程的优先级别数值

VIRT:进程占用的虚拟内存值,该值

RES:进程占用的物理内存值

SHR:进程使用的共享内存值

S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数

%CPU:该进程占用的CPU使用率

%MEM:该进程占用的物理内存和总内存的百分比

TIME+:该进程启动后占用的总的CPU时间

COMMAND:进程启动的启动命令名称

3 参数说明

htop –d 数据刷新时间

htop –u aurain 显示用户aurain的所属进程

M    按Memory 使用排序

P    按CPU 使用排序

T    按Time+ 使用排序

F3 按进程名搜索

直接输入数字 光标将定位于该PID的进程

q 退出

4 参考说明

http://stackoverflow.com/questions/561245/virtual-memory-usage-from-java-under-linux-too-much-memory-used

VIRT:虚拟内存virtual memory usage。一个应用占有的地址空间,只是要应用程序要求的,就全算在这里,而不管它真的用了没有。

RES:常驻内存resident memory usage。这个值就是该应用程序真正使用的内存,但还有两个小问题,一是有些东西可能放在交换盘上了(SWAP),二是有些内存可能是共享的。

SHR:shared memory。共享内存。就是说这一块内存空间有可能也被其他应用程序使用着;而Virt - Shr似乎就是这个程序所要求的并且没有共享的内存空间。


free命令mem:那一行数据是从系统角度去统计的,相当于251G物理内存,使用了241G(这里其实包括了被用在缓存的200G,是linux系列系统都是这种内存利用方式,和windows机制不同)

而free命令-/+ buffers/caches是从应用程序的角度去统计的,相当于只用了40G不算被系统缓存掉的内存200G

所以如果你要和htop比较,应该用free的第二行数据和htop比较,虽然有一些误差,但是基本一致,说明内部统计算法还是有一点区别