首页 > 代码库 > linux系统状态命令

linux系统状态命令

TOP命令

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top是一个动态显示过程, 即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理 器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过 交互式命令或者在个人定制文件中进行设定。

技术分享

  • 第一行

系统时间;系统启动经历时间;当前在线的用户;一分钟;五分钟;15分钟的平均负载

  • 第二行

系统任务总量;运行的任务;睡眠的任务;停止的任务;僵尸任务

  • 第三行

用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间;内核占用cpu的百分比;改变过优先级的进程占用cpu的百分比;空闲cpu时间百分比;等待I/O的cpu时间百分比;cpu硬中断时间百分比;cpu软终端时间百分比
注:这里显示数据是所有cpu的平均值,如果想看每一个cpu的处理情况,按1即可;折叠,再次按1。

  • 第四行

物理内存总量;已使用的物理内存;空闲的物理内存;用于工作内核缓存的物理内存

  • 第五行

swap总量;已经使用的;空闲的;缓冲交换区的swap使用量

  • 剩余行的进程信息

PID:进程pid
USER:执行进程的用户
PR:优先级,越小优先级越高
NI: nice值
VIRT:进程占用的虚拟内存
RES: 进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:该进程占用cpu的使用率
%MEM:该进程占用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的cpu时间,即占用cpu时间的累加值
COMMAND:进程启动的命令名称

  • 下面列出一些常用的 top命令操作指令
q:退出top命令<Space>:立即刷新(空格键)s:设置刷新时间间隔c:显示命令完全模式t::显示或隐藏进程和CPU状态信息m:显示或隐藏内存状态信息l:显示或隐藏uptime信息f:增加或减少进程显示标志S:累计模式,会把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+P:按%CPU使用率排行T:按MITE+排行M:按%MEM排行u:指定显示用户进程r:修改进程renice值kkill:进程i:只显示正在运行的进程W:保存对top的设置到文件~/.toprc,下次启动将自动调用toprc文件的设置。h:帮助命令

 

free命令

技术分享

  • 简介

将used的值减去 buffer和cache的值就是你当前真实内存使用 ————– 对操作系统来讲是Mem的参数.buffers/cached 都是属于被使用。

对应用程序来讲是(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。 所以,以应用来看看,以(-/+ buffers/cache)的free和used为主。

Linux为了提高磁盘和内存存取效率, Linux做了很多精心的设计, 除了对dentry进行缓存(用于 VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。 前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache能有效缩短了 I/O系统调用(比如read,write,getdents)的时间。 记住内存是拿来用的,不是拿来看的.不象windows,无论你的真实物理内存有多少,他都要拿硬盘交换 文件来读.这也就是windows为什么常常提示虚拟空间不足的原因.你们想想,多无聊,在内存还有大部分 的时候,拿出一部分硬盘空间来充当内存.硬盘怎么会快过内存.所以我们看linux,只要不用swap的交换 空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.这也是linux看 内存是否够用的标准。

  • 语法和参数

语  法: free [-bkmotV][-s <间隔秒数>]
补充说明:free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
参  数:
-b  以Byte为单位显示内存使用情况。
-k  以KB为单位显示内存使用情况。
-m  以MB为单位显示内存使用情况。(最常用)
-o  不显示缓冲区调节列。
-s<间隔秒数>  持续观察内存使用状况。
-t  显示内存总和列。
-V  显示版本信息。

  • 详解命令

total:表示物理内存总量(total = used + free)。
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:共享内存,一般系统不会用到,这里也不讨论。
buffers:系统分配但未被使用的buffers 数量。
cached:系统分配但未被使用的cache 数量。

 

 -/+ buffers/cache表示物理内存的缓存统计
used2:used1 – buffers1-cached1 (439-57-80)也是实际使用的内存总量。
free2= buffers1 + cached1 + free1 (49+57+80)未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存

Swap表示硬盘上交换分区的使用情况
cat /proc/meminfo |grep -i swap
技术分享

交换将通过三个途径来减少系统中使用的物理页面的个数:
1.减少缓冲与页面cache的大小,
2.将系统V类型的内存页面交换出去,
3.换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。
事实上,少量地使用swap是不是影响到系统性能的。


buffers与cached的区别
对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说 可用内存=系统free memory+buffers+cached(和上文命令解释相符).
buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.
cached是用来给文件做缓冲。
那就是说:buffers是用来存储,目录里面有什么内容,权限等等。

 

vmstat命令

  • 简介

vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下文切换、CPU使用等。

  • 详解

技术分享

vmstat 2 10 (每两秒分析一次,总共分析十次)

r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。b 表示阻塞的进程。swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。free 空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。buff Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多Mcache cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)si 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。in 每秒CPU的中断次数,包括时间中断cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。id 空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。wt 等待IO CPU时间。

 

mpstat命令

  • 简介

mpstat是Multiprocessor  Statistics的缩写,是实时系统监控工具。其报告是CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。mpstat最大的特点是:可以查看多核心cpu中每个计算核心的统计数据;而类似工具vmstat只能查看系统整体cpu情况。

  • 详解

技术分享

 

all : 指所有CPU
%usr : 显示在用户级别(例如应用程序)执行时CPU利用率的百分比
%nice :显示在拥有nice优先级的用户级别执行时CPU利用率的百分比
%sys : 现实在系统级别(例如内核)执行时CPU利用率的百分比
%iowait : 显示在系统有未完成的磁盘I/O请求期间CPU空闲时间的百分比
%irq : 显示CPU服务硬件中断所花费时间的百分比
%soft : 显示CPU服务软件中断所花费时间的百分比
%steal : 显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比
%guest : 显示运行虚拟处理器时CPU花费时间的百分比
%idle : 显示CPU空闲和系统没有未完成的磁盘I/O请求情况下的时间百分比

http://sebastien.godard.pagesperso-orange.fr/man_mpstat.html

 

linux系统状态命令