Linux下查看进程的内存占用 - top命令
2014-06-23
背景
最近几天,服务器使用free -g
来查看当前内存使用情况时,会发现内存空间几乎被完全占用了,如何能查看是哪个进程的问题?自己使用top
进来,看着不断刷新的监控数据,也无法找出哪个进程占用的内存最多,有位哥们儿建议:你按内存占用来排序,这样就直观看出来了。
top简介
top - display Linux tasks
- The top program provides a dynamic real-time view of a running system. It can display system summary information as well as a list of tasks currently being managed by the Linux kernel. The types of system summary information shown and the types, order and size of information displayed for tasks are all user configurable and that configuration can be made persistent across restarts.
- The program provides a limited interactive interface for process manipulation as well as a much more extensive interface for personal configuration – encompassing every aspect of its operation. And while top is referred to throughout this document, you are free to name the program anything you wish. That new name, possibly an alias, will then be reflected on top’s display and used when reading and writing a configuration file.
top使用
输入top
命令之后,可以继续进行如下操作,依次来获取想要的信息。
输入 | 说明 |
---|---|
h |
获取帮助信息 or ? |
q |
退出top监控页面 or ctrl + c |
u |
某一用户启动的所有进程 |
c |
显示/取消,进程执行的详细信息,在COMMAND字段显示 |
k |
kill指定PID的进程 |
O |
排序,设置排序字段;n :Mem,k :CPU |
P |
排序,按照CPU |
M |
排序,按照内存 |
T |
排序,按照时间/累计时间 |
R |
倒序;即,如果原来按从小到大排序,则,变为从大到小排序 |
Z |
设置窗口颜色配置方案 |
H |
显示线程 |
W |
保存当前top命令的设置 |
i |
忽略闲置和僵尸进程 |
思考:top命令显示的监控信息,是如何计算出来的?是使用/proc
目录下的文件吗?
详细参数
基本输出结果如下:
[storm@cib02166 ~]$ top
top - 09:34:07 up 187 days, 28 min, 3 users, load average: 0.25, 0.29, 0.16
Tasks: 512 total, 1 running, 511 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.8%us, 1.6%sy, 0.0%ni, 95.1%id, 0.0%wa, 0.0%hi, 0.5%si, 0.0%st
Mem: 32838576k total, 23395280k used, 9443296k free, 1227016k buffers
Swap: 65535992k total, 278940k used, 65257052k free, 12226520k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4983 storm 20 0 9740m 312m 13m S 63.6 1.0 3697:59 java
29907 jmxtrans 20 0 5488m 138m 5232 S 3.9 0.4 1121:42 java
31207 storm 20 0 15296 1472 840 R 3.9 0.0 0:00.03 top
846 root 20 0 0 0 0 S 1.9 0.0 24:17.63 flush-8:0
3 root RT 0 0 0 0 S 0.0 0.0 2:32.38 migration/0
基本信息与系统负载
top - 09:34:07 up 187 days, 28 min, 3 users, load average: 0.25, 0.29, 0.16
系统当前时间 、系统到目前为止已运行的时间、当前登录系统的用户数量、系统负载(任务队列的平均长度)三个值分别为1分钟、5分钟、15分钟前到现在的平均值。
系统进程信息
Tasks: 512 total, 1 running, 511 sleeping, 0 stopped, 0 zombie
processes 自最近一次刷新以来的运行进程总数。这些进程被分为:正在运行的,休眠的,停止运行的和僵尸的,数字表示的是相应类型进程的数目。
CPU状态信息
Cpu(s): 2.8%us, 1.6%sy, 0.0%ni, 95.1%id, 0.0%wa, 0.0%hi, 0.5%si, 0.0%st
CPU states 显示用户模式、系统模式、优先级进程(只有优先级为负的列入考虑)和闲置等各种情况所占用CPU时间的百分比。优先级进程所消耗的时间也被列入到用户和系统的时间中,所以总的百分比将大于100%。
各部分所表达的意思如下所示:
- us – User CPU time
- The time the CPU has spent running users’ processes that are not niced.
- sy – System CPU time
- The time the CPU has spent running the kernel and its processes.
- ni – Nice CPU time
- The time the CPU has spent running users’ proccess that have been niced.
- wa – iowait
- Amount of time the CPU has been waiting for I/O to complete.
- hi – Hardware IRQ
- The amount of time the CPU has been servicing hardware interrupts.
- si – Software Interrupts
- The amount of time the CPU has been servicing software interrupts.
- st – Steal Time
- The amount of CPU ‘stolen’ from this virtual machine by the hypervisor for other tasks (such as running another virtual machine).
内存使用信息
Mem: 3991724k total, 3388492k used, 603232k free, 212624k buffers
Mem 内存使用情况统计,其中包括总的内存、已用内存、空闲内存,内存缓存的情况。
交换空间信息
Swap: 7815580k total, 12144k used, 7803436k free, 2569748k cached
Swap 交换空间统计,其中包括总的交换空间、已用交换空间、可用交换空间和已交换内容的信息。
进程详细信息
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
简要介绍:
- PID 每个进程的ID。PPID 每个进程的父进程ID。UID 每个进程所有者的UID
- USER 每个进程所有者的用户名
- PR 每个进程的优先级别(负数最高,整数越大,优先级越低)
- NI 该进程的优先级值
- VIRT 进程“需要的”虚拟内存大小,包括进程使用的库、代码和数据等
- RES 该进程占用的物理内存的总数量,单位是KB
- SHE 该进程使用共享内存的数量
- S 该进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代表僵死状态;T代表停止或跟踪状态
- %CPU 该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比
- %MEM 该进程占用的物理内存占总内存的百分比
- TIME+ 该进程自启动以来所占用的总CPU时间。如果进入的是累计模式,那么该时间还包括这个进程子进程所占用的时间。且标题会变成CTIME
- COMMAND 该进程的命令名称,如果一行显示不下,则会进行截取。内存中的进程会有一个完整的命令行
原文地址:https://ningg.top/linux-top/