全部学习汇总: https:///GreyZhang/little_bits_of_linux

542_top命令信息分析_经验分享

最近折腾买来吃灰的树莓派,想查看一下系统负荷情况,学了top命令。上面的截图其实就是一个top命令的结果截图。别说,还真有点windows系统的任务管理器的感觉,动态更新。

接下来,逐个信息分析梳理一下,看看这里都可以提供什么样的系统信息。

1. 左上角,top右边的09:11:20,这个是当前的时间;

2. 继续看第一行,继续往右,up 后面的信息是系统开机持续运行的时间;

3. 第一行的信息,继续往右, 5 users代表当前5个用户正在登录使用这个设备,5个用户包含了root。除此之外,还有一点需要说明,我测试的时候发现其实从一台机器多个终端同时ssh连接主机的时候出现的会是多个user。

4. 继续往右,是我之前想关注的系统的负荷。这个参数在没有什么任务的时候,比0稍微大点,现在是上面的情况。三个数值分别代表过去的1分钟、5分钟、15分钟之内的负荷。这个数值如果小于1,说明系统处理当前的任务没有任何阻塞,超过了1代表有一些任务在排队。当然,数值越小越好。

5. 接下来看第二行,最开始的信息说明当前一共有157个任务在运行,其中有3个正在运行,154个睡眠,0个停止,0个僵尸程序;

6. 来到第三行,这一行主要是CPU的负荷被谁占用的一个描述。按照从左往右逐个分析分别为:用户任务占用了38.0%,系统内核空间占用了12.6%,用户进程空间内改变过任务优先级的占比为0.0%,CPU空闲任务占28.5%,等待输入输出的CPU占比为15.7%,硬件中断占比0.0%,软件中断占比5.2%,虚拟机占用百分比为0.0%。

7. 第四行,一共有924.2MB的内存,其中26.9MB空闲,74.8M被使用了,822.5M被用作了内核缓冲区;

8. 第五行:交换区内存,一共100M,其中27.7M空闲,用了72.2M,交换区的数据为782.4M。这一行相对来说是最难理解的,我觉得可能是内存不够硬盘来凑的意思。

另外,我觉得最后两行涉及到的内存综和应该才是物理内存,加一下大概正好1024M。

再简单小结一下下面的几列信息,PID就是进程ID、USER就是登录用户这里的nobody我排查了一下其实是我用了一个权限很开的samba导致,有一个客户用户访问。NI代表nice值,负值代表优先级高。VIRT代表进程使用的虚拟内存大小,单位是kb。RES是进程使用的没有被换出的内存。SHR代表共享的内存大小,单位也是kb。

S代表进程的状态,S是睡眠、R是运行、D是不可中断睡眠等,这个是一个可以单独一说的,因为信息比较多。我直接罗列一个来自网络的解释如下:

PROCESS STATE CODES

Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process.

D Uninterruptible sleep (usually IO)

R Running or runnable (on run queue)

S Interruptible sleep (waiting for an event to complete)

T Stopped, either by a job control signal or because it is being traced.

W paging (not valid since the 2.6.xx kernel)

X dead (should never be seen)

Z Defunct ("zombie") process, terminated but not

reaped by its parent.

For BSD formats and when the stat keyword is used,additional characters may be displayed:

< high-priority (not nice to other users)

N low-priority (nice to other users)

L has pages locked into memory (for real-time and custom IO)

s is a session leader

l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

+ is in the foreground process group

继续往下看,%CPUCPU占用比率、%MEM是物理内存的占用比率、时间是运行时间,而COMMAND一般就是命令行调用的命令名称。