`
gelongmei
  • 浏览: 209615 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

TOP

    博客分类:
  • top
 
阅读更多
实用linux命令(一)

在使用top命令的时候会看到这么一行:


%mem 内存使用率
virt 是虚拟内存
res是常驻内存
shr是共享内存


top命令下按f键可以看到详细说明
* A: PID        = Process Id
* E: USER       = User Name
* H: PR         = Priority
* I: NI         = Nice value
* O: VIRT       = Virtual Image (kb)
* Q: RES        = Resident size (kb)
* T: SHR        = Shared Mem size (kb)
* W: S          = Process Status
* K: %CPU       = CPU usage
* N: %MEM       = Memory usage (RES)
* M: TIME+      = CPU Time, hundredths
b: PPID       = Parent Process Pid
c: RUSER      = Real user name
d: UID        = User Id
f: GROUP      = Group Name
g: TTY        = Controlling Tty
j: P          = Last used cpu (SMP)
p: SWAP       = Swapped size (kb)
l: TIME       = CPU Time
r: CODE       = Code size (kb)
s: DATA       = Data+Stack size (kb)
u: nFLT       = Page Fault count
v: nDRT       = Dirty Pages count
y: WCHAN      = Sleeping in Function
z: Flags      = Task Flags <sched.h>
* X: COMMAND    = Command name/line


top命令下要查看某个用户启动的进程:先输入u,然后输入用户名,再回车


VIRT:virtual memory usage。Virtual这个词很神,一般解释是:virtual adj.虚的, 实质的, [物]有效的, 事实上的。到底是虚的还是实的?让Google给Define之后,将就明白一点,就是这东西还是非物质的,但是有效果的,不发生在真实世界的,发生在软件世界的等等。这个内存使用就是一个应用占有的地址空间,只是要应用程序要求的,就全算在这里,而不管它真的用了没有。写程序怕出错,又不在乎占用的时候,多开点内存也是很正常的。
RES:resident memory usage。常驻内存。这个值就是该应用程序真的使用的内存,但还有两个小问题,一是有些东西可能放在交换盘上了(SWAP),二是有些内存可能是共享的。
SHR:shared memory。共享内存。就是说这一块内存空间有可能也被其他应用程序使用着;而Virt - Shr似乎就是这个程序所要求的并且没有共享的内存空间。
DATA:数据占用的内存。如果top没有显示,按f键可以显示出来。这一块是真正的该程序要求的数据空间,是真正在运行中要使用的。

Image(20)

里面的各个值分别是什么意思呢?

今天被问到这个问题,发现答的不是很清楚。果然啊,天天用最多的top命令都还没摸透。。。惭愧。。。于是就查了些资料:

官方解释
Cpu(s)表示的是cpu信息。各个值的意思是:

us: user cpu time (or) % CPU time spent in user space

sy: system cpu time (or) % CPU time spent in kernel space

ni: user nice cpu time (or) % CPU time spent on low priority processes

id: idle cpu time (or) % CPU time spent idle

wa: io wait cpu time (or) % CPU time spent in wait (on disk)

hi: hardware irq (or) % CPU time spent servicing/handling hardware interrupts

si: software irq (or) % CPU time spent servicing/handling software interrupts

st: steal time - - % CPU time in involuntary wait by virtual cpu while hypervisor is servicing another processor (or) % CPU time stolen from a virtual machine



翻译一下:
us:用户态使用的cpu时间比

sy:系统态使用的cpu时间比

ni:用做nice加权的进程分配的用户态cpu时间比

id:空闲的cpu时间比

wa:cpu等待磁盘写入完成时间

hi:硬中断消耗时间

si:软中断消耗时间

st:虚拟机偷取时间



好了,如果说列出上面的条条框框说我懂了,那真是自欺欺人了。下面是我自己的理解

首先这个百分比是怎么算出来的呢?
比如一秒内有100个cpu时间片,这个cpu时间片就是cpu工作的最小单位。那么这100个cpu时间片在不同的区域和目的进行操作使用,就代表这个区域所占用的cpu时间比。也就是这里得出的cpu时间百分比。

比如下面一个程序:

Image(21)

将文件从磁盘的src位置拷贝到磁盘的dst位置。文件会从src先读取进入到内核空间,然后再读取到用户空间,然后拷贝数据到用户空间的buf上,再通过用户空间,内核空间,数据才到磁盘的dst上。



所以从上面这个程序来看,cpu消耗在kernel space的时候就是sy(系统态使用的cpu百分比),cpu消耗在user space的时候就是us(用户态使用的cpu百分比)。

好了,下面说说hi和si
如果程序都没什么问题,那么是没有hi和si的,但是实际上有个硬中断和软中断的概念。比如硬中断,cpu在执行程序的时候,突然外设硬件(比如硬盘出现问题了)机器需要立刻通知cpu进行现场保存工作。这个时候会cpu会出现上下文切换。就是cpu会有一部分时间会被硬中断占用了,这个时间就是hi。相类似,si是软中断的cpu占用时间,软中断是由软件的指令方式触发的。

相关软中断和硬中断的概念可以参考:

http://blog.csdn.net/pxz_002/article/details/7327668

下面是ni
ni是nice的意思,nice是什么呢,每个linux进程都有个优先级,优先级高的进程有优先执行的权利,这个叫做pri。进程除了优先级外,还有个优先级的修正值。即比如你原先的优先级是20,然后修正值为-2,那么你最后的进程优先级为18。这个修正值就叫做进程的nice值。



那么nice是一个进程的优先级修正值,为什么会占用cpu时间呢?
ni是指用做nice加权的进程使用的用户态cpu时间比,我的理解就是一个进程的所谓修正值就意味着多分配一些cpu时间给这个进程的用户态,这个中间所多分配的cpu时间就是我们这里的ni。(这个理解没啥把握,如果有错误麻烦帮忙指出下)

下面是wa
wa指的是CPU等待磁盘写入完成的时间,就是说前提是要进行IO操作,在进行IO操作的时候,CPU等待时间。比如上面那个程序,最后一步,从系统空间到dst硬盘空间的时候,如果程序是阻塞的,那么这个时候cpu就要等待数据写入磁盘才能完成写操作了。所以这个时候cpu等待的时间就是wa。

所以如果一台机器看到wa特别高,那么一般说明是磁盘IO出现问题,可以使用iostat等命令继续进行详细分析。

下面是st
st的名字很生动,偷取。。。是专门对虚拟机来说的,一台物理是可以虚拟化出几台虚拟机的。在其中一台虚拟机上用top查看发现st不为0,就说明本来有这么多个cpu时间是安排给我这个虚拟机的,但是由于某种虚拟技术,把这个cpu时间分配给了其他的虚拟机了。这就叫做偷取。

id
剩下的id就是除了上面那么多cpu处理上下文以外的cpu时间片。当然在这些时间片上,cpu是空闲的。

top的所有这些cpu时间应该是相加为100%的。

dstat
题外话,有个dstat命令也是可以查看cpu的信息的。下图就是dstat -c的显示

Image(22)

其中可以很容易将usr和us,sys和sy,idl和id,wai和wa,hig和hi,siq和si对应起来

但是可以观察到dstat是没有st,ni的统计的,而且它的所有部分加起来总和可能没有100,这就说明dstat实际是没有对st,ni做cpu统计的。使用的时候要注意下这个。


使用系统命令top即可看到如下类似信息:
Cpu(s):  0.0%us,  0.5%sy,  0.0%ni, 99.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
但不知什么含义?google之

I try to explain  these:
us: is meaning of "user CPU time"
sy: is meaning of "system CPU time"
ni: is meaning of" nice CPU time"
id: is meaning of "idle"
wa: is meaning of "iowait"
hi:is meaning of "hardware irq"
si : is meaning of "software irq"
st : is meaning of "steal time"

中文翻译为:

us 用户空间占用CPU百分比
sy 内核空间占用CPU百分比
ni 用户进程空间内改变过优先级的进程占用CPU百分比
id 空闲CPU百分比
wa 等待输入输出的CPU时间百分比
hi 硬件中断
si 软件中断
st: 实时(来源http://bbs.chinaunix.net/thread-1958596-1-1.html)
##############

1:在命令行提示符执行top命令

2:输入大写P,则结果按CPU占用降序排序。输入大写M,结果按内存占用降序排序。(注:大写P可以在capslock状态输入p,或者按Shift+p)

另外:

认识top的显示结果

top命令的显示结果如下所示:

top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48 Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 191272k total, 173656k used, 17616k free, 22052k buffers Swap: 192772k total, 0k used, 192772k free, 123988k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd 14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top 1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init 2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0统计信息区
前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

01:06:48 当前时间
up 1:22 系统运行时间,格式为时:分
1 user 当前登录用户数
load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。
三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 29 total 进程总数
1 running 正在运行的进程数
28 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 0.3% us 用户空间占用CPU百分比
1.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0% hi
0.0% si
最后两行为内存信息。内容如下:

Mem: 191272k total 物理内存总量
173656k used 使用的物理内存总量
17616k free 空闲内存总量
22052k buffers 用作内核缓存的内存量
Swap: 192772k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量
123988k cached 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
进程信息区
统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号 列名 含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进程所有者的用户id
e USER 进程所有者的用户名
f GROUP 进程所有者的组名
g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
h PR 优先级
i NI nice值。负值表示高优先级,正值表示低优先级
j P 最后使用的CPU,仅在多CPU环境下有意义
k %CPU 上次更新到现在的CPU时间占用百分比
l TIME 进程使用的CPU时间总计,单位秒
m TIME+ 进程使用的CPU时间总计,单位1/100秒
n %MEM 进程使用的物理内存百分比
o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r CODE 可执行代码占用的物理内存大小,单位kb
s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t SHR 共享内存大小,单位kb
u nFLT 页面错误次数
v nDRT 最后一次写入到现在,被修改过的页面数。
w S 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
x COMMAND 命令名/命令行
y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
z Flags 任务标志,参考 sched.h
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。

更改显示内容
通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。

按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。

按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。
分享到:
评论

相关推荐

    TOP264vg规格书_中文

    TOP264vg规格书_中文 TOP264vg规格书是Power Integrations公司的一款高效率的离线式开关IC产品,采用EcoSmart®节能技术,能够在整个负载范围内提供极高的能效。该产品系列采用多模式PWM控制技术,能够满足不同负载...

    linux top命令源代码

    Linux中的`top`命令是系统监控工具,它实时显示系统中各个进程的资源占用状况,如CPU使用率、内存使用量、虚拟内存、进程状态等。`top`命令的源代码解析可以帮助我们深入理解其工作原理,对于系统管理员和开发者来说...

    tophat变换matlab代码

    在图像处理领域,Tophat变换是一种非常重要的技术,它被广泛应用于目标识别、图像分割和特征提取等任务。本实例是基于MATLAB实现的Tophat变换,结合了原始图像和处理后的结果,为研究者和开发者提供了一个直观的理解...

    Linux 系统top源码包

    Linux系统中的`top`命令是系统管理员和开发者用于实时监控系统资源使用情况的重要工具,它提供了动态视图,展示CPU利用率、内存使用、进程状态等关键信息。`top`源码包的分析可以帮助我们深入了解其内部工作原理,...

    c#调用topsdk、调用topapi最新C#调用淘宝sdk_demo

    在本文中,我们将深入探讨如何使用C#调用TopSDK,特别是通过淘宝API来实现功能。首先,让我们了解什么是TopSDK以及它在C#中的应用。 TopSDK是淘宝官方提供的一个开发工具包,用于帮助开发者方便地与淘宝平台进行...

    Linux下使用python调用top命令获得CPU利用率

    本文定位:想通过python调用top命令获取cpu使用率但暂时没有思路的情况。 如果单纯为了获得cpu的利用率,通过top命令重定向可以轻松实现,命令如下: 复制代码 代码如下: top -bi &gt; cpuHistory.log 或 复制代码 代码...

    top853编程驱动器驱动盘

    【标题】"top853编程驱动器驱动盘"指的是针对特定型号的编程驱动器——TOP853的驱动程序集合。在计算机硬件系统中,编程驱动器是一种用于编程、调试或更新微控制器(MCU)的设备。TOP853编程驱动器是一款常见的工具...

    Solaris系统上top工具top-3.6.1-sol10-x86-local

    在Solaris上安装TOP: 系统使用X86的Solaris 9,所以从下载top-3.5.1-sol9-intel-local.gz # gzip -d top-3.5.1-sol9-intel-local.gz # pkgadd -d top-3.5.1-sol9-intel-local 上面是简单的过程,下面介绍详细的。...

    托普Top编程器软件8.82

    【标题】"托普Top编程器软件8.82"是指一种专用于编程微控制器的软件工具,由托普公司开发。这个版本是8.82,表明它是该软件的一个更新迭代,通常会包含错误修复、性能提升以及可能的新功能。 【描述】提到的“支持...

    TOP 851烧录软件

    标题中的“TOP 851烧录软件”指的是一个专门用于编程微控制器和存储器的老牌工具,尤其在2000年左右非常流行。这个软件支持多种品牌和类型的芯片,包括Intel、Atmel、LG、Philips以及Winboard等。这些品牌的芯片广泛...

    豆瓣电影top250爬虫

    "豆瓣电影top250爬虫"项目是一个专门针对豆瓣网站上电影Top250排行榜的数据抓取程序。这个爬虫的独特之处在于,它没有依赖像BeautifulSoup这样的成熟的HTML解析库,而是采用了纯字符串搜索的方式来解析网页内容,这...

    TIPTOP对接通达OA工作流

    TIPTOP对接通达OA工作流是一个旨在整合两个不同系统——TIPTOP和通达OA(Kingdee Office Automation)——的程序,目的是实现工作流的无缝交互。在企业信息化管理中,工作流自动化是一个关键部分,它能提高效率,...

    TOP系列编程器软件

    标题中的“TOP系列编程器软件”指的是专门用于编程和调试微控制器或电子设备的一类工具。这类软件通常能够与硬件编程器配合使用,为各种芯片进行烧录、调试和测试。在电子工程和嵌入式系统开发领域,编程器软件是不...

    TIPTOP與其他系統之WebService接口資料

    【TIPTOP与其他系统之WebService接口资料】 在IT行业中,集成不同系统间的数据交换和功能调用是一项常见的任务。TIPTOP系统作为一个重要的业务处理平台,可能会与其他多种系统进行交互,以实现数据共享和流程自动化...

    Tiptop T100 Tiptop GP鼎捷智能物流平台 鼎捷APP 二维码整体解决方案 鼎捷WMS仓库移动扫码鼎捷安卓PDA

    最近定制开发了一套适合企业的条码扫码平台,支持鼎捷Tiptop T100、Tiptop GP平台二次开发,已经在五六家企业磨炼成品,欢迎咨询交流。具有以下功能: 1)根据原来企业规则生成二维码 2)通过PDA扫描条码完成出...

    TOP2000V536.rar

    【标题】"TOP2000V536.rar" 提供的是TOP2000编程器的最新驱动程序,版本号为5.36。这个编程器是电子工程领域中用于芯片编程的重要工具,主要功能是将软件或数据写入特定的微控制器或存储器件。驱动程序则是操作系统...

    管家婆辉煌版top+SQL数据字典.doc

    管家婆辉煌版top+SQL数据字典 在本文档中,我们将讨论管家婆辉煌版top+SQL数据字典的知识点。 1. 管家婆辉煌版top+SQL数据字典简介 管家婆辉煌版top+SQL数据字典是一种数据字典,用于存储和管理企业的各类数据...

    TOP851编程器软件

    【标题】"TOP851编程器软件"指的是专门用于编程和烧录TOP851型号编程器的软件工具。这种编程器常被用于电子工程领域,尤其是对微控制器(MCU)进行编程,比如8位或16位的单片机。在描述中提到,该软件适用于较旧的...

    TopStyle5序列号:a7HiUDVj3XhB9fvLX21N3j101XLECb

    【TopStyle5】是一款强大的CSS(层叠样式表)编辑工具,专为网页设计师而设计。这个软件提供了全面的功能,帮助用户轻松创建、编辑和预览网页样式表,提升网页设计效率。序列号"a7HiUDVj3XhB9fvLX21N3j101XLECb"是...

    topshow_top命令forWindows

    "topshow_top命令forWindows"是一个专为Windows操作系统设计的工具,模仿了Linux中的"top"命令功能。在Linux环境中,"top"命令是实时监控系统资源利用率,如CPU、内存、进程等的关键工具。然而,Windows系统并没有...

Global site tag (gtag.js) - Google Analytics