系统内存和CPU管理、监控

 本博文的主要内容有

  .系统内存管理、监控:vmstat和free -mt

  .系统CPU管理、监控:sar -u、mpstat、uptime

 

 

 

  linux系统内存和CPU是在系统运行的过程中不断消耗的资源,其随系统进程的不断增加而减少,并在进程关闭后会回收有些资源。通过对系统内存和CPU使用率的监控,就能给了解linx系统当前的“繁忙”程序。

1、系统内存管理、监控:vmstat和free -mt

  在linux系统中,内存分为物理内存和虚拟内存。

  物理内存是真实存在的,即存在内存条上。

  虚拟内存,称为交换分区。

 

  在linux系统,用vmstat,即Virtual Memory Statistics,虚拟内存统计命令。

[root@weekend110 ~]# man vmstat
VMSTAT(8) Linux Administrator’s Manual VMSTAT(8)

NAME
vmstat - Report virtual memory statistics

SYNOPSIS
vmstat [-a] [-n] [-t] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]

DESCRIPTION
vmstat reports information about processes, memory, paging, block IO, traps, and cpu activity.

The first report produced gives averages since the last reboot. Additional reports give information on a sam-
pling period of length delay. The process and memory reports are instantaneous in either case.

Options
The -a switch displays active/inactive memory, given a 2.5.41 kernel or better.

The -f switch displays the number of forks since boot. This includes the fork, vfork, and clone system calls,
and is equivalent to the total number of tasks created. Each process is represented by one or more tasks,
depending on thread usage. This display does not repeat.

The -t switch adds timestamp to the output.

The -m switch displays slabinfo.

The -n switch causes the header to be displayed only once rather than periodically.

The -s switch displays a table of various event counters and memory statistics. This display does not repeat.

delay is the delay between updates in seconds. If no delay is specified, only one report is printed with the

 

 

 

[root@weekend110 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 953576 65676 531364 0 0 101 50 113 278 4 4 90 1 0
[root@weekend110 ~]# vmstat 2 4     每隔2秒执行一次,共执行4次

procs ,是进程,只输出两列信息,r表示正在运行的进程数,b是处于等待状态的进程数。

memory,是内存,输出四列信息,swpd涉及分页读取或写入磁盘的进程所消耗的所有内存,其表示系统已使用交换分区空间的数量。

                free为空闲的物理内存空间

                buff为系统用于缓冲区的物理内存空间

                cache为用作缓存的物理内存空间

swap,只输出两列信息,si表示系统从磁盘交换到内存的交换页数量,so表示从内存交换到磁盘的交换页数量

io,bi表示从磁盘读入到内存的块数量,bo为从内存读入到磁盘的块数。

system,in表示每秒系统的中断数,cs表示 每秒系统进程上下文切换的次数。

cpu,us表示执行用户进程时所使用的cpu时间,sy为执行系统进程时所使用的cpu时间,id表示cpu的空间时间,wa是等待I/O时所使用的cpu时间。


procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 953584 65676 531376 0 0 101 50 113 277 4 4 90 1 0
0 0 0 953576 65676 531376 0 0 0 12 38 51 1 0 99 0 0
1 0 0 953576 65676 531376 0 0 0 0 31 46 0 1 99 0 0
0 0 0 953576 65676 531376 0 0 0 0 38 170 1 1 99 0 0
[root@weekend110 ~]#

 

 

[root@weekend110 ~]# free -mt      m表示以兆字节为单位输出,t表示提供一个合计行
total used free shared buffers cached
Mem: 1861 931 930 0 64 518
-/+ buffers/cache: 348 1513
Swap: 3055 0 3055
Total: 4917 931 3985
[root@weekend110 ~]#

 

 

 2、系统CPU管理、监控:sar -u、mpstat、uptime

[root@weekend110 ~]# sar -u     -u是sar的默认选项,其表示以百分比的形式输出
Linux 2.6.32-431.el6.x86_64 (weekend110) 10/21/2016 _x86_64_ (1 CPU)

09:10:46 AM LINUX RESTART

09:20:02 AM CPU %user %nice %system %iowait %steal %idle
09:30:01 AM all 0.03 0.00 0.27 0.03 0.00 99.67
09:40:01 AM all 0.02 0.00 0.27 0.09 0.00 99.62
09:50:01 AM all 0.10 0.00 0.37 0.01 0.00 99.53
10:00:02 AM all 14.65 0.00 10.17 2.27 0.00 72.92
10:10:02 AM all 11.55 0.00 11.19 0.37 0.00 76.90
10:20:01 AM all 11.05 0.17 10.43 2.37 0.00 75.98
10:30:01 AM all 3.17 0.00 2.58 0.06 0.00 94.19
10:40:01 AM all 2.00 0.00 1.60 0.48 0.00 95.92
10:50:01 AM all 0.84 0.00 0.67 0.01 0.00 98.48
11:00:01 AM all 0.72 0.00 0.62 0.01 0.00 98.65
Average: all 4.33 0.02 3.76 0.56 0.00 91.34
[root@weekend110 ~]#

 

CPU表示系统中运行的CPU的编号(如双核)

%user表示,在用户模式下进程运行所花的CPU时间(%)

%nice表示,一个运行良好的进程运行所花的CPU时间(%)

%system表示,进程在内核模式下运行所花的CPU时间(%)

%iowait表示,在无进程运行时CPU等待I/O完成所花的时间(%)

%idle表示,CPU空闲时间(%)

 

 

 

[root@weekend110 ~]# mpstat
Linux 2.6.32-431.el6.x86_64 (weekend110) 10/21/2016 _x86_64_ (1 CPU)

11:08:56 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
11:08:56 AM all 3.89 0.01 3.52 1.01 0.02 0.15 0.00 0.00 91.40
[root@weekend110 ~]# mpstat 2    表示2秒收集一次,按ctrl + c组合键退出
Linux 2.6.32-431.el6.x86_64 (weekend110) 10/21/2016 _x86_64_ (1 CPU)

11:08:59 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
11:09:01 AM all 0.52 0.00 0.52 0.00 0.00 0.00 0.00 0.00 98.97
11:09:03 AM all 0.00 0.00 0.51 0.00 0.00 0.00 0.00 0.00 99.49
11:09:05 AM all 0.50 0.00 0.50 0.00 0.00 0.50 0.00 0.00 98.51
11:09:07 AM all 0.52 0.00 0.52 0.00 0.00 0.00 0.00 0.00 98.97
11:09:09 AM all 0.00 0.00 0.51 0.00 0.00 0.00 0.00 0.00 99.49
11:09:11 AM all 0.51 0.00 0.51 0.00 0.00 0.51 0.00 0.00 98.46
^C
[root@weekend110 ~]#

 

  %ird表示,硬件中断和软件中断所花费的CPU时间(%)

  %intr/s表示,CPU每秒处理中断的次数

 

 

[root@weekend110 ~]# uptime
11:10:54 up 2:00, 3 users, load average: 0.01, 0.11, 0.07
[root@weekend110 ~]#

 

   当然,也可以使用System Monitor窗口监控CPU的使用情况。

 

展开阅读全文

vxworks环境下的CPU\内存\任务\异常 监控

07-29

任务运行状态监控rn任务运行时的状态信息主要包括任务名、任务状态、当前占用CPU的比率、任务优先级等。VxWorks的Spy工具利用辅助时钟的中断服务程序,在指定的统计周期内,统计应用任务、Interrupt、Kernel、Idle状态等所获得的ticks总数,以此分别统计它们的CPU占用率。VxWorks的spyLib函数库提供了对任务名、ID、优先级等任务属性信息以及CPU空闲率信息进行监控的函数接口[3]。其中,spy()函数默认将这些信息在标准输出STD_OUT打印,可以通过任务级的输出重定向将此类信息保存到指定的文件中。此外,VxWorks5.5内核的spyReportCommon(FUNCPTR printRtn) 函数在执行过程中针对每一个任务分别调用printRtn函数,将任务的各项属性值赋给printRtn函数的参数。系统基于此设计了taskInfoSave()函数代替printRtn作为spyReportCommon()的参数,在taskInfoSave()中将任务的各项属性值保存到任务属性结构体taskInfoNode中,并将各任务的任务属性结构体组成链表,从而实现了对任务运行状态的监控。保存任务信息的结构体taskInfoNode列出如下:rnstruct taskInfoNode rnrnchar name[15]; /*任务名*/rnint status; /*任务状态*/rnint ID; /*任务ID*/rnint priority; /*优先级*/rnint cpu; /*cpu占用率*/rnstruct taskInfoNode *next;rnrn1.1.3 资源状况监控rn分布式嵌入式系统的资源状况信息是指节点正常工作状态下的CPU运行情况信息和内存使用状况信息。VxWorks操作系统提供了对CPU占用率和内存使用状况进行监控的接口。其中,CPU占用率信息可以在任务运行状态监控部分的taskInfoSave()函数中处理得到;当前可用内存信息、最大分配内存信息、内存占用率信息可以通过调用memShow()函数获取,由于memShow()默认将内存信息打印到标准输出,因此获取内存信息的一种较为直观的方式就是通过将memShow()的打印信息输出重定向至指定的文件,然后从中提取系统需要的内存信息。除此之外,VxWorks5.5内核中的内存分区结构体mem_part提供了内存分区信息,在程序中通过系统内存分区(ID为memSysPartId)引用该结构体的数据可以实时得到有关内存资源的信息,如调用memSysPartId->curWordsAllocated得到当前分配内存的字数。除此之外,mem_part结构体中与资源状况监控相关的信息还包括分区中内存总字数totalWords、内存累计分配字数cumWordsAllocated等。rn1.1.4 异常监控rnVxWorks为用户提供了较为完备的异常处理机制。对于与体系结构相关的异常处理,可以使用VxWorks提供的接口函数来替换异常处理程序,直接获取异常硬件上下文;对于通用的异常处理,VxWorks 提供了处理异常的通用初始化工具库,用来捕获和报告由程序错误产生的异常[4]。VxWorks的excLib库提供了excHookAdd()函数接口,用于将用户指定的异常处理钩子函数绑定到系统的异常处理流程中,当发生异常时由系统自动调用该函数。rn 论坛

没有更多推荐了,返回首页