Linux中以sar命令监控系统的使用教程

Linux中以sar命令监控系统的使用教程,第1张

sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,

包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。

本文主要以CentOS 63 x64系统为例,介绍sar命令。

1、sar命令常用格式

sar [options] [-A] [-o file] t [n]

其中:

t为采样间隔,n为采样次数,默认值是1;

-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。

options 为命令行选项,sar命令常用选项如下:

 -A:所有报告的总和

-P:设定CPU

-u:输出CPU使用情况的统计信息

-v:输出inode、文件和其他内核表的统计信息

-d:输出每一个块设备的活动信息

-n:汇报网络情况

-q:汇报队列长度和负载信息

-r:输出内存和交换空间的统计信息

-b:显示I/O和传送速率的统计信息

-a:文件读写情况

-c:输出进程统计信息,每秒创建的进程数

-R:输出内存页面的统计信息

-y:终端设备活动情况

-w:输出系统交换活动信息

2 CPU资源监控

例如,每10秒采样一次,连续采样3次,观察CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件sys_info中,需键入如下命令:

代码如下:

sar -u -o sys_info 10 3

屏幕显示如下:

17:06:16 CPU %user %nice %system %iowait %steal %idle

17:06:26 all 000 000 020 000 000 9980

17:06:36 all 000 000 020 000 000 9980

17:06:46 all 000 000 010 000 000 9990

Average: all 000 000 017 000 000 9983

输出项说明:

CPU:all 表示统计信息为所有 CPU 的平均值。

%user:显示在用户级别(application)运行使用 CPU 总时间的百分比。

%nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。

%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。

%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。

%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。

%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。

注意说明:

(1) 若 %iowait 的值过高,表示硬盘存在I/O瓶颈

(2) 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量

(3) 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。

由于sys_info是二进制文件中的内容, 当你用cat看sys_info时发现全都是乱码,呵呵,别着急,sar为你准备了-f filename选项,你只要用-f设定要读取的信息存储文件,就可以清晰地读出信息了。

比如

代码如下:

sar -f sys_info

如果我的CPU是多核处理器,那么sar能知道某一个核的运行信息么

完全没问题的。有一个选项-P,就是用来为多核处理器而设计的。

当在使用sar命令而没有设定-P选项时,sar会根据所有核给出一个宏观汇报,也就是平均的值。

如果使用了-P选项来指定某一个核,那么就会针对这个单独的核给出具体性能信息。

当使用-P ALL时,sar就会根据每一个核都给出其具体性能信息,然后再给出一个总的性能信息。

比如,我这里有一个至强处理器的CPU,是双核CPU,看看-P的使用方法吧:

代码如下:

sar -P ALL 1 1

Linux 269 10/16/2009

10:59:38 PM CPU %user %nice %system %iowait %idle

10:59:39 PM all 212 000 287 000 9501

10:59:39 PM 0 000 000 198 000 9802

10:59:39 PM 1 900 000 700 000 8400

sar会根据处理器的每一个核给出性能信息。当我们想查看第6个核的信息时,其输出如下:

代码如下:

sar -P 0 1 1

3 inode、文件和其他内核表监控

例如,每10秒采样一次,连续采样3次,观察核心表的状态,需键入如下命令:

代码如下:

sar -v 10 3

屏幕显示如下:

17:10:49 dentunusd file-nr inode-nr pty-nr

17:10:59 6301 5664 12037 4

17:11:09 6301 5664 12037 4

17:11:19 6301 5664 12037 4

Average: 6301 5664 12037 4

输出项说明:

dentunusd:目录高速缓存中未被使用的条目数量

file-nr:文件句柄(file handle)的使用数量

inode-nr:索引节点句柄(inode handle)的使用数量

pty-nr:使用的pty数量

4 内存和交换空间监控

例如,每10秒采样一次,连续采样3次,监控内存分页:

代码如下:

sar -r 10 3

屏幕显示如下:

10:02:52 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit

10:03:02 PM 2289016 1632096 4162 204860 1218352 333068 849

10:03:12 PM 2288388 1632724 4164 204860 1218352 333068 849

10:03:22 PM 2288544 1632568 4164 204860 1218352 333068 849

Average: 2288649 1632463 4163 204860 1218352 333068 849

输出项说明:

kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间

kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间

%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比

kbbuffers和kbcached:这两个值就是free命令中的buffer和cache

kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)

%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比

5 内存分页监控

例如,每10秒采样一次,连续采样3次,监控内存分页:

代码如下:

sar -B 10 3

屏幕显示如下:

 输出项说明:

pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)

pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)

fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)

majflt/s:每秒钟产生的主缺页数

pgfree/s:每秒被放入空闲队列中的页个数

pgscank/s:每秒被kswapd扫描的页个数

pgscand/s:每秒直接被扫描的页个数

pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数

%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

6 I/O和传送速率监控

例如,每10秒采样一次,连续采样3次,报告缓冲区的使用情况,需键入如下命令:

代码如下:

sar -b 10 3

屏幕显示如下:

18:51:05 tps rtps wtps bread/s bwrtn/s

18:51:15 000 000 000 000 000

18:51:25 192 000 192 000 2265

18:51:35 000 000 000 000 000

Average: 064 000 064 000 759

输出项说明:

tps:每秒钟物理设备的 I/O 传输总量

rtps:每秒钟从物理设备读入的数据总量

wtps:每秒钟向物理设备写入的数据总量

bread/s:每秒钟从物理设备读入的数据量,单位为 块/s

bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s

7 进程队列长度和平均负载状态监控

例如,每10秒采样一次,连续采样3次,监控进程队列长度和平均负载状态:

代码如下:

sar -q 10 3

屏幕显示如下:

19:25:50 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15

19:26:00 0 259 000 000 000

19:26:10 0 259 000 000 000

19:26:20 0 259 000 000 000

Average: 0 259 000 000 000

输出项说明:

runq-sz:运行队列的长度(等待运行的进程数)

plist-sz:进程列表中进程(processes)和线程(threads)的数量

ldavg-1:最后1分钟的系统平均负载(System load average)

ldavg-5:过去5分钟的系统平均负载

ldavg-15:过去15分钟的系统平均负载

8 系统交换活动信息监控

例如,每10秒采样一次,连续采样3次,监控系统交换活动信息:

代码如下:

sar - W 10 3

屏幕显示如下:

19:39:50 pswpin/s pswpout/s

19:40:00 000 000

19:40:10 000 000

19:40:20 000 000

Average: 000 000

输出项说明:

pswpin/s:每秒系统换入的交换页面(swap page)数量

pswpout/s:每秒系统换出的交换页面(swap page)数量

9 设备使用情况监控

例如,每10秒采样一次,连续采样3次,报告设备使用情况,需键入如下命令:

代码如下:

# sar -d 10 3 –p

屏幕显示如下:

17:45:54 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

17:46:04 scd0 000 000 000 000 000 000 000 000

17:46:04 sda 000 000 000 000 000 000 000 000

17:46:04 vg_livedvd-lv_root 000 000 000 000 000 000 000 000

17:46:04 vg_livedvd-lv_swap 000 000 000 000 000 000 000 000

其中:

参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0

tps:每秒从物理磁盘I/O的次数多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的

rd_sec/s:每秒读扇区的次数

wr_sec/s:每秒写扇区的次数

avgrq-sz:平均每次设备I/O操作的数据大小(扇区)

avgqu-sz:磁盘请求队列的平均长度

await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒)

svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间

%util:I/O请求占CPU的百分比,比率越大,说明越饱和

(1) avgqu-sz 的值较低时,设备的利用率较高。

(2) 当%util的值接近 100% 时,表示设备带宽已经占满。

10、要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来

怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看

怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看

怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看

11、利用sar来做个后台监控程序,可以实时汇报机器性能情况。sar能放后台运行么

借助linux的后台符就可以了,别忘了把标准输出重定向哦,方法是这样的:

代码如下:

sar -o monitorres interval count /dev/null 21

记得把interval和count都替换为你想要的间隔和次数。这样所有的性能信息就全都存入二进制格式的数据文件monitorres里了。当读取时使用-f就可以了。

12、sar分析网卡流量

代码如下:

sar -n { DEV | EDEV | NFS | NFSD | SOCK | ALL }

sar 提供六种不同的语法选项来显示网络信息。-n选项使用6个不同的开关:DEV | EDEV | NFS | NFSD | SOCK | ALL 。DEV显示网络接口信息,EDEV显示关于网络错误的统计数据,NFS统计活动的NFS客户端的信息,NFSD统计NFS服务器的信息,SOCK显示套接字信息,ALL显示所有5个开关。它们可以单独或者一起使用。

如果你使用DEV关键字,那么sar将汇报和网络设备相关的信息,如lo,eth0或eth1等,例如

代码如下:

#sar -n DEV 2 10

Linux 2618-53el5PAE (localhostlocaldomain) 03/29/2009

01:39:40 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s

01:39:42 AM lo 000 000 000 000 000 000 000

01:39:42 AM eth1 13134 10498 11970448 3611045 000 000 000

01:39:42 AM sit0 000 000 000 000 000 000 000

01:39:42 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s

01:39:44 AM lo 000 000 000 000 000 000 000

01:39:44 AM eth1 16800 16550 11449650 8393850 000 000 000

01:39:44 AM sit0 000 000 000 000 000 000 000

IFACE:LAN接口,网络设备的名称

rxpck/s:每秒钟接收的数据包

txpck/s:每秒钟发送的数据包

rxbyt/s:每秒钟接收的字节数

txbyt/s:每秒钟发送的字节数

rxcmp/s:每秒钟接收的压缩数据包

txcmp/s:每秒钟发送的压缩数据包

rxmcst/s:每秒钟接收的多播数据包

使用EDEV关键字,那么会针对网络设备汇报其失败情况,例如:

代码如下:

#sar -n EDEV 2 10

Linux 2618-53el5PAE (localhostlocaldomain) 03/29/2009

01:42:18 AM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s

01:42:20 AM lo 000 000 000 000 000 000 000 000 000

01:42:20 AM eth1 000 000 000 000 000 000 000 000 000

01:42:20 AM sit0 000 000 000 000 000 000 000 000 000

IFACE:LAN接口网络设备的名称

rxerr/s:每秒钟接收的坏数据包

txerr/s:每秒钟发送的坏数据包

coll/s:每秒冲突数

rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数

txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数

txcarr/s:发送数据包时,每秒载波错误数

rxfram/s:每秒接收数据包的帧对齐错误数

rxfifo/s:接收的数据包每秒FIFO过速的错误数

txfifo/s:发送的数据包每秒FIFO过速的错误数

使用SOCK关键字,则会针对socket连接进行汇报:

代码如下:

#sar -n SOCK 2 10

Linux 2618-53el5PAE (localhostlocaldomain) 03/29/2009

01:44:32 AM totsck tcpsck udpsck rawsck ip-frag

01:44:34 AM 243 9 8 0 0

01:44:36 AM 242 9 7 0 0

01:44:38 AM 238 9 7 0 0

01:44:40 AM 238 9 7 0 0

totsck:使用的套接字总数量

tcpsck:使用的TCP套接字数量

udpsck:使用的UDP套接字数量

rawsck:使用的raw套接字数量

ip-frag:使用的IP段数量

如果你使用FULL关键字,相当于上述DEV、EDEV和SOCK三者的综合

这题我会!datacenter是一个物理设施,用于容纳企业的服务器和数据存储设备,并提供数据处理和计算能力。而standard则是指服务器和数据存储设备的配置和性能水平、数据处理和计算能力的规范和要求以及管理和维护的规范和要求等方面的标准。给大家简单总结了两个词的含义、发音以及用法,先大概的了解一下~

接下来让我们看下“datacenter”和“standard”的具体区别:

1服务器和数据存储:

    datacenter(数据中心)是指一个物理设施,用于容纳企业的服务器和数据存储设备。它通常包括机房、电力设施、网络通信设备、安全设施、环境控制设备等。

   Standard(标准)在此方面指的是服务器和数据存储设备的配置和性能水平。数据中心可以根据不同的标准进行评估和分类。

例如:

The company's datacenter is located in a secure and protected facility to ensure the safety of its servers and data(公司的数据中心位于一个安全且受保护的设施中,以确保其服务器和数据的安全性。)

The company's data center meets the industry standard for data security and privacy protection(该公司的数据中心符合行业标准,能够提供数据安全和隐私保护。)

2数据处理和计算能力:

   datacenter(数据中心)通常指的是一个企业或组织的数据处理和计算能力的集中式场所。它通常包括计算机服务器、网络设备、存储设备等,可以提供强大的数据处理和计算能力。

   Standard(标准)在此方面指的是设备的性能水平和功能要求。数据中心可以根据不同的标准进行评估和分类。

   例如:

The company's datacenter has high-performance computers and powerful data processing capabilities to support its business operations(该公司的数据中心拥有高性能的计算机和强大的数据处理能力,以支持其业务运营。)

The company's data center meets the industry standard for data processing and storage capabilities(该公司的数据中心符合行业标准,能够提供数据处理和存储能力。)

3管理和维护:

   datacenter(数据中心)通常需要专业的管理和维护团队来确保其服务器、存储设备和网络设备的稳定运行。这些团队负责监控设备的运行状态、维护设备的正常运行、应对突发的故障和问题等。

   Standard(标准)在此方面指的是管理和维护的规范和要求。数据中心可以根据不同的标准进行评估和分类。

   例如:

The company's datacenter has a dedicated management and maintenance team responsible for ensuring the smooth operation of its servers and storage devices(该公司的数据中心有一个专门的管理和维护团队,负责确保其服务器的平稳运行和存储设备的正常运行。)

The company's data center meets the industry standard for management and maintenance of servers and storage devices(该公司的数据中心符合行业标准,能够为服务器和存储设备提供符合要求的管理和维护服务。)

4可靠性和可用性:

    datacenter(数据中心)通常需要提供高可靠性和可用性,以确保企业的业务不中断。它包括冗余的设备、备份和恢复机制、容错能力等。

   Standard(标准)在此方面指的是可靠性和可用性的要求和标准。数据中心可以根据不同的标准进行评估和分类。

   例如:

The company's datacenter has redundancy and backup systems in place to ensure high reliability and availability of its servers and data storage(该公司的数据中心已经实现了冗余和备份系统,以确保其服务器和数据存储的高度可靠性和可用性。)

The company's data center meets the industry standard for reliability and availability of servers and data storage(该公司的数据中心符合行业标准,能够提供符合要求的服务器和数据存储的可靠性和可用性。)

5安全性:

    datacenter(数据中心)通常需要提供安全保障,包括物理安全、网络安全、数据安全等。它需要采取多种安全措施来防止黑客攻击、数据泄露、设备损坏等风险。

    Standard(标准)在此方面指的是安全性的要求和标准。数据中心可以根据不同的标准进行评估和分类。

   例如:

The company's datacenter has stringent security measures in place to protect its servers and data from unauthorized access or attacks(该公司的数据中心已经采取了严格的安全措施,以保护其服务器和数据免受未经授权的访问或攻击。)

The company's data center meets the industry standard for data security and privacy protection(该公司的数据中心符合行业标准,能够提供符合要求的数据安全和隐私保护。)

总的来说,datacenter和standard在可靠性、可用性、安全性、成本和效率等方面有微小的差异。但在具体应用中,这些差异可能会因具体的需求和情况而更加明显。因此,根据实际需要选择最合适的术语来描述企业的数据中心或数据存储和处理能力是非常重要的。

1,Linux下可以在/proc/cpuinfo中看到每个cpu的详细信息。但是对于双核的cpu,在cpuinfo中会看到两个cpu。常常会让人误以为是两个单核的cpu。

其实应该通过Physical Processor ID来区分单核和双核。而Physical Processor ID可以从cpuinfo或者dmesg中找到 flags 如果有 ht 说明支持超线程技术 判断物理CPU的个数可以查看physical id 的值,相同则为同一个物理CPU

2,查看内存大小:

cat /proc/meminfo |grep MemTotal

3,其他一些可以查看详细linux系统信息的命令和方法:

uname -a # 查看内核/操作系统/CPU信息的linux系统信息命令

head -n 1 /etc/issue # 查看操作系统版本,是数字1不是字母L

cat /proc/cpuinfo # 查看CPU信息的linux系统信息命令

hostname # 查看计算机名的linux系统信息命令

lspci -tv # 列出所有PCI设备

lsusb -tv # 列出所有USB设备的linux系统信息命令

lsmod # 列出加载的内核模块

env # 查看环境变量资源

free -m # 查看内存使用量和交换区使用量

df -h # 查看各分区使用情况

du -sh # 查看指定目录的大小

grep MemTotal /proc/meminfo # 查看内存总量

grep MemFree /proc/meminfo # 查看空闲内存量

uptime # 查看系统运行时间、用户数、负载

cat /proc/loadavg # 查看系统负载磁盘和分区

mount | column -t # 查看挂接的分区状态

fdisk -l # 查看所有分区

swapon -s # 查看所有交换分区

hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)

dmesg | grep IDE # 查看启动时IDE设备检测状况网络

ifconfig # 查看所有网络接口的属性

iptables -L # 查看防火墙设置

route -n # 查看路由表

netstat -lntp # 查看所有监听端口

netstat -antp # 查看所有已经建立的连接

netstat -s # 查看网络统计信息进程

ps -ef # 查看所有进程

top # 实时显示进程状态用户

w # 查看活动用户

id # 查看指定用户信息

last # 查看用户登录日志

cut -d: -f1 /etc/passwd # 查看系统所有用户

cut -d: -f1 /etc/group # 查看系统所有组

crontab -l # 查看当前用户的计划任务服务

chkconfig –list # 列出所有系统服务

chkconfig –list | grep on # 列出所有启动的系统服务程序

rpm -qa # 查看所有安装的软件包

cat /proc/cpuinfo :查看CPU相关参数的linux系统命令

cat /proc/partitions :查看linux硬盘和分区信息的系统信息命令

cat /proc/meminfo :查看linux系统内存信息的linux系统命令

cat /proc/version :查看版本,类似uname -r

cat /proc/ioports :查看设备io端口

cat /proc/interrupts :查看中断

cat /proc/pci :查看pci设备的信息

cat /proc/swaps :查看所有swap分区的信息

linux服务器性能监测是很重要的工作,服务器运行应该提供最有效的系统性能。当服务器系统性能突然低于平均应有的情况,问题可能来自在执行的进程、内存的使用率、磁盘的性能、网络流量和cpu

的压力。在预算短缺的今天,理解如何优化系统性能比以往任何时候都重要。

要实现它的前提是,你必须充分了解自己的计算机和网络,从而找到真正的瓶颈所在。本文提供一些基础的工具来辨别和处理一些性能问题。使用的linux

发行版本是red

hat

enterprise

linux

4,工作过程是:首先查看整个系统的状态,然后是检查特定的子系统。

linux服务器进行性能监控有几种方法,每种方法都各有其优缺点。

使用snmp等标准工具

标准及非标准工具能执行一个或多个收集、合并及传输阶段,如rstatd或snmp工具,然而标准的rstat后台程序提供的信息是有限的,速度慢而且效率低。

内核模块

几个系统监控工程利用内核模块来存取监控数据。一般情况下,这是很有效的收集系统数据的方法。然而这种方法存在的问题是,当主内核源内有其它改变时,必须保持代码一致性。一个内核模块可能与用户想使用的其它内核模块相冲突。此外,在使用监控系统之前,用户必须获得或申请模块。

/proc虚拟文件系统

/proc虚拟文件系统是一个较快的、高效率执行系统监控的方法。使用/proc的主要缺点是必须保持代码分析与/proc

文件格式改变的同步。事实表明,linux内核的改变比/proc

文件格式的改变要更频繁,所以,用/proc虚拟文件系统比用内核模块存在的问题要少。本文介绍的方法即基于/proc虚拟文件系统。

一、

/proc文件系统特点

linux

系统向管理员提供了非常好的方法,使他们可以在系统运行时更改内核,而不需要重新引导内核系统。这是通过

/proc

虚拟文件系统实现的。/proc

文件虚拟系统是一种内核和内核模块用来向进程

(process)

发送信息的机制

(所以叫做

/proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取

有关进程的有用信息,在运行中

(on

the

fly)

改变设置

(通过改变内核参数)。

与其他文件系统不同,/proc

存在于内存之中而不是硬盘上。不用重新启动而去看

cmos

,就可以知道系统信息。这就是

/proc

的妙处之一。

小提示:

每个linux系统根据软硬件不同/proc

虚拟文件系统的内容也有些差异。/proc

虚拟文件系统有三个很重要的目录:net,scsi和sys。sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Linux中以sar命令监控系统的使用教程

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情