一、Top详解
第一行
10:18:25 up 当前系统时间
74 days, 4:33, 系统已经运行天数和小时 例如上方截图为74天4小时32分钟
users — 当前有3
load average 后面的三个数分别是1分钟、5分钟、15分钟的负载情况
第二行
Tasks — 任务(进程)系统现在共有268个进程,其中处于运行中的有1个,267个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行cpu状态
us — 用户空间占用CPU的百分比。
sy — 内核空间占用CPU的百分比。
ni — 改变过优先级的进程占用CPU的百分比
id — 空闲CPU百分比
wa — IO等待占用CPU的百分比
hi — 硬中断(Hardware IRQ)占用CPU的百分比
si — 软中断(Software Interrupts)占用CPU的百分比
第四行内存状态
1024k=1M
8062676k total — 物理内存总量 7877224k used — 使用中的内存总量 185452k free — 空闲内存总量 336584k buffers — 缓存的内存量
第五行swap交换分区
8208376k total — 交换区总量 111856k used — 使用的交换区总量 8096520k free — 空闲交换区总量 2774352k cached — 缓冲的交换区总量
第六行 空行
第七行第2列
PID — 进程id
第七行第2列
USER — 进程所有者
第七行第3列
PR — 进程优先级,实用priority值表示PRI和PR值,或者叫动态优先级
Linux实际上实现了140个优先级范围,取值范围是从0-139,这个值越小,优先级越高。nice值的-20到19,映射到实际的优先级范围是100-139
第七行第4列
NI — nice值。负值表示高优先级,正值表示低优先级
第七行第5列
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
第七行第6列
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
第七行第7列
SHR — 共享内存大小,单位kb
第七行第8列
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
第七行第9列
%CPU — 上次更新到现在的CPU时间占用百分比,如果超过100%,那么按1键查看具体每个cpu所占比例
第七行第10列
%MEM — 进程使用的物理内存百分比
第七行第11列
TIME+ — 进程使用的CPU时间总计,单位1/100秒
第七行第12列
COMMAND — 进程名称(命令名/命令行)
二、其它操作
op默认的排序列是“%CPU”
通过”shift + >”或”shift + <”可以向右或左改变排序列
监控java线程数: ps -eLf | grep java | wc -l
监控网络客户连接数: netstat -n | grep tcp | grep 侦听端口 | wc -l
linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合:
linux下获取占用内存资源最多的10个进程,可以使用如下命令组合:
Free中的buffer和cache (它们都是占用内存)基于内存的
buffer :作为buffer cache的内存,是块设备的读写缓冲区
cache:作为page cache的内存, 文件系统的cache
如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO 必会非常小
如何释放Cache Memory
To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
#注意,释放前最好sync一下,防止丢失数据,但是一般情况下没有必要手动释放内存