在Linux系统中,程序的启动是通过调用库中的指令来程序完成,当程序运行时,即进入内核进行调用,然后内核将指令传输给CPU进程执行。当然单个程序在CPU上运行时,内存空间都是给了单个程序,随着现代的需要,有许多计算机科学家的努力,计算机都是多进程的,当多个进程在计算机上运行时,将会虚拟出多个内存,让单个进程在单个虚拟内存上运行。内核通过将内存分为单独的多个page frame,大小为1k、2k、4k,单个虚拟的内存空间通过实际的内存中取出一定的page frame 线性排列,虚拟成一个内存,用于运行单个程序;因此当有多个程序需要运行时,内存将多个page frame送至CPU运行,不过这样以来,会有许多的需要计算的内存片段,因此,有必须对定义程序的优先级,例如CPU密集型的优先,IO密集型的优先级低。
Linux的进程的优先级有140个,1~99实时优先级,数字越大优先级越高,100~139(静态优先级、动态优先级),数字越小,优先级越高。通过更改ni值来调节优先级。ni值的范围是-20~19.
下面来讲解几个系统管理的命令工具htop、glances以及dstat。
htop是由第三方epel提供,不是由系统自带的,我们可以通过yum info htop来查看摘要信息,可以通过yum install htop来安装htop。我们使用htop命令,会得到如下界面。
从上之下来说,首先头部的信息:
1、2、3、4是指的CPU的使用情况,由于我虚拟了4个CPU所有显示的4个CPU的使用情况,然后是内存以及交换分区的使用情况。右边Tasks指明的是进程总数,Load average 是指系统1min、5min、10min的平均负载情况,uptime是指系统运行的时间。
下面的分别指的是:
PID:进程号;
USER:属于哪个用户;
PRI:当前进程的优先级;
NI:至的是nice值,即优先级,范围-20~19,数值越小,优先级越高;
VIRT:进程占用的虚拟内存值;
RES:进程占用的物理内存值;
SHR:进程占用的共享内存值;
S:表示进程状态,R表示运行状态,S表示可中断睡眠,D不可中断睡眠,T不可以被调度,Z僵死态;
CPU:该进程占用CPU的使用率;
MEM:该进程占用的内存占总内存的百分比;
TIME:该进程启动后占用CPU的时间;
Command:进程启动命令名称;
最后一行
F1为htop的帮助信息
F2为htop的设定
F3为搜索进程
F4为过滤过滤
F5为显示树形结构
F6为选择排序方式
F7为可减少nice值,提高优先级
F8为可增加nice值,降低优先级
F9可对进程传递信号
F10为退出htop
glances 工具可以在用户的终端上实时显示重要的系统信息,并动态地对其进行更新。这个高效的工具可以工作于任何终端屏幕。另外它并不会消耗大量的 CPU 资源,通常低于百分之二。glances 在屏幕上对数据进行显示,并且每隔两秒钟对其进行更新。您也可以自己将这个时间间隔更改为更长或更短的数值。glances 工具还可以将相同的数据捕获到一个文件,便于以后对报告进行分析和绘制图形。输出文件可以是电子表格的格式 (.csv) 或者 html 格式。
先列举一下glances的常用选项:
glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh][-f file] [-o output]
-b :以 Byte/s为单位显示网卡设备数据交换速率;
-d :关闭磁盘I/O功能模块
-f: /PATH/TO/SOMEFILE :设置输出文件的位置及格式;
-o :以{HTML|CSV}的格式输出
-m:关闭 mount功能模块
-n:关闭网络功能模块
-r :关闭进程列表功能模块
-t :设定延时时长
-1 :单独显示每颗CPU相关负载数据信息;
glances还支持远程模式,即可以C/S模式工作,Server : 以监听模式启动glances; Client : 以远程模式启动glances,远程连入指定服务器,并server上相关性能数据; glances -s -B IPADDR(IP地址)指定可以开启服务模式,然后客户端
用此 glances -c IPADDR指令,可以连接到远程服务器用于监视。
最后来简单说下dstat这个指令。dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具, 是一个全能系统信息统计工具., 数据比较显眼容易观察; 而且dstat支持即时刷新, 譬如输入dstat 3 3即每三秒收集三次, 而且可以通过 --out FILE,将得到的结果输入到文件中。
dstat [-afv] [options..] [delay [count]]
-c :显示CPU性能指标相关的统计数据;
-d :显示disk读写
-g :显示page相关的速率数据
-i :中断相关的速率数据
-l :显示load average 相关的统计数据
-m :显示memory相关的统计数据
-n :显示网络收发数据的速率
-N :只显示指定网卡的速率
-p :显示进程相关的速率数据,
-r :IO请求的速率;
-s :显示swap的速率
-y :显示系统相关的数据,包括终端和进程切换
--top-cpu :显示最占用CPU的进程
--top-bio :显示最消耗block io的进程;
--top-io :显示最占用io的进程
--top-men :最占用内存的进程
--ipc :显示进程间通信相关的速率数据;
--raw :显示raw套接的相关数据
--tcp :显示tcp套接字的相关数据
--udp :显示udp 套接字的相关数据
--unix :显示unix sock接口的统计数据
--socket : tcp , udp ,unix 统计此三个
总而言之,dstat是强大的实时观察工具。