sar可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
sar 包含在 sysstat 软件包中.
1. 命令:
sar 1 10
每秒采样一次, 共执行 10 次
或者
sar -u 1 10
2. 输出及解释:
2.1 查看整体的数据
sar -u 1 10
Linux 3.5.0-52-generic (VM-154-67-ubuntu) 10/20/2014 _x86_64_ (4 CPU)
14:03:34 CPU %user %nice %system %iowait %idle %steal
14:03:35 all 15.21 0.00 3.74 0.25 80.80 0.00
14:03:36 all 12.50 0.00 2.75 0.00 84.75 0.00
14:03:37 all 15.29 0.00 2.01 0.00 82.71 0.00
14:03:38 all 9.98 0.00 2.99 0.00 87.03 0.00
14:03:39 all 16.29 0.00 3.76 0.00 79.95 0.00
14:03:40 all 9.75 0.00 3.75 0.00 86.50 0.00
14:03:41 all 15.75 0.00 3.50 0.00 80.75 0.00
14:03:42 all 9.25 0.00 2.75 0.00 88.00 0.00
14:03:43 all 9.25 0.00 3.00 0.00 87.75 0.00
14:03:44 all 10.75 0.00 4.00 0.00 85.25 0.00
Average: all 12.40 0.00 3.23 0.03 84.35 0.00
2.2 查看每个 CPU 单独的数据
sar -P ALL 1 2
Linux 3.5.0-52-generic (VM-154-67-ubuntu) 10/20/2014 _x86_64_ (4 CPU)
11:28:04 PM CPU %user %nice %system %iowait %steal %idle
11:28:05 PM all 0.00 0.00 0.00 0.00 0.00 100.00
11:28:05 PM 0 0.00 0.00 0.00 0.00 0.00 100.00
11:28:05 PM 1 0.00 0.00 0.00 0.00 0.00 100.00
11:28:05 PM 2 0.00 0.00 0.00 0.00 0.00 100.00
11:28:05 PM 3 0.00 0.00 0.00 0.00 0.00 100.00
11:28:05 PM CPU %user %nice %system %iowait %steal %idle
11:28:06 PM all 0.00 0.00 0.00 0.00 0.00 100.00
11:28:06 PM 0 0.00 0.00 0.00 0.00 0.00 100.00
11:28:06 PM 1 0.00 0.00 0.00 0.00 0.00 100.00
11:28:06 PM 2 0.00 0.00 0.00 0.00 0.00 100.00
11:28:06 PM 3 0.00 0.00 0.00 0.00 0.00 100.00
2.3 查看 CPU 1 的数据
sar -P 1 1 10
Linux 3.5.0-52-generic (VM-154-67-ubuntu) 10/20/2014 _x86_64_ (4 CPU)
11:41:57 PM CPU %user %nice %system %iowait %steal %idle
11:41:58 PM 1 0.00 0.00 0.00 0.00 0.00 100.00
11:41:59 PM 1 0.00 0.00 0.00 0.00 0.00 100.00
11:42:00 PM 1 0.00 0.00 0.00 0.00 0.00 100.00
11:42:01 PM 1 0.00 0.00 0.00 0.00 0.00 100.00
11:42:02 PM 1 0.00 0.00 0.00 0.00 0.00 100.00
11:42:03 PM 1 0.99 0.00 0.00 0.00 0.00 99.01
11:42:04 PM 1 0.00 0.00 0.00 0.00 0.00 100.00
11:42:05 PM 1 0.00 0.00 0.00 0.00 0.00 100.00
11:42:06 PM 1 0.00 0.00 0.00 0.00 0.00 100.00
11:42:07 PM 1 0.00 0.00 0.00 0.00 0.00 100.00
Average: 1 0.10 0.00 0.00 0.00 0.00 99.90
返回值的解释:
# %user: 未标志nice值的用户态程序的CPU占用率
# %nice: 标志了nice值的用户态程序的CPU占用率
# %system: 系统态(内核)程序的CPU占用率
# %iowait: I/O等待的CPU占用率
# %idle: idle越高,说明CPU越空闲
# %steal: 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比i, 这个一般是在虚拟机中才能看到数值
3. 说明:
1. 命令:
sar -n "keyword" 1 10
关键词可以是(不同的发行版有所区别, 可以用 sar -h 查看):
2. 输出及解释:
2.1 查看网卡统计数据:
sar -n DEV 1 10
Linux 3.5.0-52-generic (VM-154-67-ubuntu) 10/20/2014 _x86_64_ (4 CPU)
05:12:40 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
05:12:41 PM eth0 43.00 0.00 2.51 0.00 0.00 0.00 0.00
05:12:41 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
05:12:41 PM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
05:12:41 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
05:12:42 PM eth0 41.00 1.00 2.40 0.17 0.00 0.00 0.00
05:12:42 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
05:12:42 PM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
05:12:42 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
05:12:43 PM eth0 42.00 2.00 2.46 0.57 0.00 0.00 0.00
05:12:43 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
05:12:43 PM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
-n DEV 返回值解释:
2.2 查看 Socket 统计数据
sar -n SOCK 1 10
Linux 3.5.0-52-generic (VM-154-67-ubuntu) 10/20/2014 _x86_64_ (4 CPU)
11:56:59 PM totsck tcpsck udpsck rawsck ip-frag tcp-tw
11:57:00 PM 77 7 0 0 0 0
11:57:01 PM 77 7 0 0 0 0
11:57:02 PM 77 7 0 0 0 0
11:57:03 PM 77 7 0 0 0 0
11:57:04 PM 77 7 0 0 0 0
11:57:05 PM 77 7 0 0 0 0
11:57:06 PM 77 7 0 0 0 0
11:57:07 PM 77 7 0 0 0 0
11:57:08 PM 77 7 0 0 0 0
11:57:09 PM 77 7 0 0 0 0
Average: 77 7 0 0 0 0
-n SOCK 返回值解释:
3. 说明:
1. 命令及解释:
sar -d 2 2 -p
-p 参数表示把 块设备 的名称打印出来
Linux 3.5.0-52-generic (VM-154-67-ubuntu) 10/20/2014 _x86_64_ (4 CPU)
11:34:21 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11:34:23 PM sda 78.71 316.83 483.17 10.16 24.42 310.23 12.58 99.06
11:34:23 PM sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:34:23 PM sda2 78.71 316.83 483.17 10.16 24.42 310.23 12.58 99.06
11:34:23 PM sda3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:34:23 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11:34:25 PM sda 115.58 924.62 0.00 8.00 2.00 17.52 8.69 100.45
11:34:25 PM sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:34:25 PM sda2 115.58 924.62 0.00 8.00 2.00 17.52 8.69 100.45
11:34:25 PM sda3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: sda 97.01 618.45 243.39 8.88 13.29 137.16 10.28 99.75
Average: sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: sda2 97.01 618.45 243.39 8.88 13.29 137.16 10.28 99.75
Average: sda3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
解释:
3. 说明:
1. 命令及解释
sar -b 1 10
Linux 3.5.0-52-generic (VM-154-67-ubuntu) 10/20/2014 _x86_64_ (4 CPU)
08:21:00 PM tps rtps wtps bread/s bwrtn/s
08:21:01 PM 3.00 0.00 3.00 0.00 40.00
08:21:02 PM 3.00 0.00 3.00 0.00 32.00
08:21:03 PM 0.00 0.00 0.00 0.00 0.00
08:21:04 PM 0.00 0.00 0.00 0.00 0.00
08:21:05 PM 0.00 0.00 0.00 0.00 0.00
08:21:06 PM 0.00 0.00 0.00 0.00 0.00
08:21:07 PM 8.00 0.00 8.00 0.00 176.00
08:21:08 PM 0.00 0.00 0.00 0.00 0.00
08:21:09 PM 0.00 0.00 0.00 0.00 0.00
08:21:10 PM 0.00 0.00 0.00 0.00 0.00
Average: 1.40 0.00 1.40 0.00 24.80
解释:
3. 说明:
1. 命令及解释:
sar -r 1 10
Linux 3.5.0-52-generic (VM-154-67-ubuntu) 10/20/2014 _x86_64_ (4 CPU)
11:08:58 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact
11:08:59 PM 4289192 3888848 47.55 772512 2457160 448212 4.36 1408804 1965308
11:09:00 PM 4289192 3888848 47.55 772512 2457160 448212 4.36 1408804 1965308
11:09:01 PM 4289192 3888848 47.55 772512 2457160 448212 4.36 1408804 1965308
11:09:02 PM 4288204 3889836 47.56 772512 2457160 448228 4.36 1408976 1965308
11:09:03 PM 4288168 3889872 47.56 772512 2457164 448228 4.36 1408960 1965308
11:09:04 PM 4288200 3889840 47.56 772512 2457160 448228 4.36 1408812 1965308
11:09:05 PM 4288200 3889840 47.56 772512 2457160 448228 4.36 1408812 1965308
11:09:06 PM 4288200 3889840 47.56 772512 2457160 448228 4.36 1408812 1965308
11:09:07 PM 4288200 3889840 47.56 772512 2457160 448228 4.36 1408812 1965308
11:09:08 PM 4288200 3889840 47.56 772512 2457160 448228 4.36 1408812 1965308
Average: 4288495 3889545 47.56 772512 2457160 448223 4.36 1408841 1965308
解释:
3. 说明:
1. 命令及解释
sar -R 1 10
Linux 3.5.0-52-generic (VM-154-67-ubuntu) 10/20/2014 _x86_64_ (4 CPU)
11:24:40 PM frmpg/s bufpg/s campg/s
11:24:41 PM -33.00 0.00 0.00
11:24:42 PM -2.00 0.00 0.00
11:24:43 PM 0.00 0.00 0.00
11:24:44 PM 0.00 0.00 0.00
11:24:45 PM 0.00 0.00 0.00
11:24:46 PM 0.00 0.00 0.00
11:24:47 PM 0.00 0.00 0.00
11:24:48 PM 0.00 0.00 0.00
11:24:49 PM 0.00 0.00 0.00
11:24:50 PM 0.00 0.00 0.00
Average: -3.50 0.00 0.00
解释:
3. 说明:
1. 命令及解释
sar -q 1 10
Linux 3.5.0-52-generic (VM-154-67-ubuntu) 10/20/2014 _x86_64_ (4 CPU)
09:04:20 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
09:04:21 PM 0 116 0.00 0.01 0.05 0
09:04:22 PM 0 116 0.00 0.01 0.05 0
09:04:23 PM 0 116 0.00 0.01 0.05 0
09:04:24 PM 0 116 0.00 0.01 0.05 0
09:04:25 PM 0 116 0.00 0.01 0.05 0
09:04:26 PM 0 116 0.00 0.01 0.05 0
09:04:27 PM 0 116 0.00 0.01 0.05 0
09:04:28 PM 0 116 0.00 0.01 0.05 0
09:04:29 PM 0 116 0.00 0.01 0.05 0
09:04:30 PM 0 116 0.00 0.01 0.05 0
Average: 0 116 0.00 0.01 0.05 0
解释:
3. 说明:
sar是通过 fscanf 系统状态获取的数据, 在源码的 rd_stats.h 中定义了, 这些状态是从系统的哪些文件中得到的数据
https://github.com/sysstat/sysstat/blob/master/rd_stats.h
/*
* rd_stats.h: Include file used to read system statistics
* (C) 1999-2018 by Sebastien Godard (sysstat <at> orange.fr)
*/
#ifndef _RD_STATS_H
#define _RD_STATS_H
/*
***************************************************************************
* Miscellaneous constants
***************************************************************************
*/
/* Get IFNAMSIZ */
#include <net/if.h>
#ifndef IFNAMSIZ
#define IFNAMSIZ 16
#endif
/* Maximum length of block device name */
#define MAX_DEV_LEN 128
/* Maximum length of network interface name */
#define MAX_IFACE_LEN IFNAMSIZ
/* Maximum length of USB manufacturer string */
#define MAX_MANUF_LEN 24
/* Maximum length of USB product string */
#define MAX_PROD_LEN 48
/* Maximum length of filesystem name */
#define MAX_FS_LEN 128
/* Maximum length of FC host name */
#define MAX_FCH_LEN 16
#define CNT_PART 1
#define CNT_ALL_DEV 0
#define CNT_USED_DEV 1
#define K_DUPLEX_HALF "half"
#define K_DUPLEX_FULL "full"
#define C_DUPLEX_HALF 1
#define C_DUPLEX_FULL 2
/* Type for all functions counting items. Value can be negative (-1) */
#define __nr_t int
/*
***************************************************************************
* System files containing statistics
***************************************************************************
*/
/* Files */
#define PROC "/proc"
#define SERIAL "/proc/tty/driver/serial"
#define FDENTRY_STATE "/proc/sys/fs/dentry-state"
#define FFILE_NR "/proc/sys/fs/file-nr"
#define FINODE_STATE "/proc/sys/fs/inode-state"
#define PTY_NR "/proc/sys/kernel/pty/nr"
#define NET_DEV "/proc/net/dev"
#define NET_SOCKSTAT "/proc/net/sockstat"
#define NET_SOCKSTAT6 "/proc/net/sockstat6"
#define NET_RPC_NFS "/proc/net/rpc/nfs"
#define NET_RPC_NFSD "/proc/net/rpc/nfsd"
#define NET_SOFTNET "/proc/net/softnet_stat"
#define LOADAVG "/proc/loadavg"
#define VMSTAT "/proc/vmstat"
#define NET_SNMP "/proc/net/snmp"
#define NET_SNMP6 "/proc/net/snmp6"
#define CPUINFO "/proc/cpuinfo"
#define MTAB "/etc/mtab"
#define IF_DUPLEX "/sys/class/net/%s/duplex"
#define IF_SPEED "/sys/class/net/%s/speed"
#define FC_RX_FRAMES "%s/%s/statistics/rx_frames"
#define FC_TX_FRAMES "%s/%s/statistics/tx_frames"
#define FC_RX_WORDS "%s/%s/statistics/rx_words"
#define FC_TX_WORDS "%s/%s/statistics/tx_words"
/*
***************************************************************************
* Definitions of structures for system statistics.
* WARNING: Fields order matters for SVG graphs!
***************************************************************************
*/
#define SIZEOF_LONG_64BIT 8
#define ULL_ALIGNMENT_WIDTH 8
#define UL_ALIGNMENT_WIDTH SIZEOF_LONG_64BIT
#define U_ALIGNMENT_WIDTH 4
#define MAP_SIZE(m) ((m[0] * ULL_ALIGNMENT_WIDTH) + \
(m[1] * UL_ALIGNMENT_WIDTH) + \
(m[2] * U_ALIGNMENT_WIDTH))
/*
* Structure for CPU statistics.
* In activity buffer: First structure is for global CPU utilisation ("all").
* Following structures are for each individual CPU (0, 1, etc.)
*/
struct stats_cpu {
unsigned long long cpu_user;
unsigned long long cpu_nice;
unsigned long long cpu_sys;
unsigned long long cpu_idle;
unsigned long long cpu_iowait;
unsigned long long cpu_steal;
unsigned long long cpu_hardirq;
unsigned long long cpu_softirq;
unsigned long long cpu_guest;
unsigned long long cpu_guest_nice;
};
#define STATS_CPU_SIZE (sizeof(struct stats_cpu))
#define STATS_CPU_ULL 10
#define STATS_CPU_UL 0
#define STATS_CPU_U 0
/*
* Structure for task creation and context switch statistics.
* The attribute (aligned(16)) is necessary so that sizeof(structure) has
* the same value on 32 and 64-bit architectures.
*/
struct stats_pcsw {
unsigned long long context_switch;
unsigned long processes __attribute__ ((aligned (8)));
};
#define STATS_PCSW_SIZE (sizeof(struct stats_pcsw))
#define STATS_PCSW_ULL 1
#define STATS_PCSW_UL 1
#define STATS_PCSW_U 0
/*
* Structure for interrupts statistics.
* In activity buffer: First structure is for total number of interrupts ("SUM").
* Following structures are for each individual interrupt (0, 1, etc.)
*/
struct stats_irq {
unsigned long long irq_nr;
};
#define STATS_IRQ_SIZE (sizeof(struct stats_irq))
#define STATS_IRQ_ULL 1
#define STATS_IRQ_UL 0
#define STATS_IRQ_U 0
/* Structure for swapping statistics */
struct stats_swap {
unsigned long pswpin __attribute__ ((aligned (8)));
unsigned long pswpout __attribute__ ((aligned (8)));
};
#define STATS_SWAP_SIZE (sizeof(struct stats_swap))
#define STATS_SWAP_ULL 0
#define STATS_SWAP_UL 2
#define STATS_SWAP_U 0
/* Structure for paging statistics */
struct stats_paging {
unsigned long pgpgin __attribute__ ((aligned (8)));
unsigned long pgpgout __attribute__ ((aligned (8)));
unsigned long pgfault __attribute__ ((aligned (8)));
unsigned long pgmajfault __attribute__ ((aligned (8)));
unsigned long pgfree __attribute__ ((aligned (8)));
unsigned long pgscan_kswapd __attribute__ ((aligned (8)));
unsigned long pgscan_direct __attribute__ ((aligned (8)));
unsigned long pgsteal __attribute__ ((aligned (8)));
};
#define STATS_PAGING_SIZE (sizeof(struct stats_paging))
#define STATS_PAGING_ULL 0
#define STATS_PAGING_UL 8
#define STATS_PAGING_U 0
/* Structure for I/O and transfer rate statistics */
struct stats_io {
unsigned long long dk_drive;
unsigned long long dk_drive_rio;
unsigned long long dk_drive_wio;
unsigned long long dk_drive_rblk;
unsigned long long dk_drive_wblk;
};
#define STATS_IO_SIZE (sizeof(struct stats_io))
#define STATS_IO_ULL 5
#define STATS_IO_UL 0
#define STATS_IO_U 0
/* Structure for memory and swap space utilization statistics */
struct stats_memory {
unsigned long long frmkb;
unsigned long long bufkb;
unsigned long long camkb;
unsigned long long tlmkb;
unsigned long long frskb;
unsigned long long tlskb;
unsigned long long caskb;
unsigned long long comkb;
unsigned long long activekb;
unsigned long long inactkb;
unsigned long long dirtykb;
unsigned long long anonpgkb;
unsigned long long slabkb;
unsigned long long kstackkb;
unsigned long long pgtblkb;
unsigned long long vmusedkb;
unsigned long long availablekb;
};
#define STATS_MEMORY_SIZE (sizeof(struct stats_memory))
#define STATS_MEMORY_ULL 17
#define STATS_MEMORY_UL 0
#define STATS_MEMORY_U 0
/* Structure for kernel tables statistics */
struct stats_ktables {
unsigned long long file_used;
unsigned long long inode_used;
unsigned long long dentry_stat;
unsigned long long pty_nr;
};
#define STATS_KTABLES_SIZE (sizeof(struct stats_ktables))
#define STATS_KTABLES_ULL 4
#define STATS_KTABLES_UL 0
#define STATS_KTABLES_U 0
/* Structure for queue and load statistics */
struct stats_queue {
unsigned long long nr_running;
unsigned long long procs_blocked;
unsigned long long nr_threads;
unsigned int load_avg_1;
unsigned int load_avg_5;
unsigned int load_avg_15;
};
#define STATS_QUEUE_SIZE (sizeof(struct stats_queue))
#define STATS_QUEUE_ULL 3
#define STATS_QUEUE_UL 0
#define STATS_QUEUE_U 3
/* Structure for serial statistics */
struct stats_serial {
unsigned int rx;
unsigned int tx;
unsigned int frame;
unsigned int parity;
unsigned int brk;
unsigned int overrun;
unsigned int line;
};
#define STATS_SERIAL_SIZE (sizeof(struct stats_serial))
#define STATS_SERIAL_ULL 0
#define STATS_SERIAL_UL 0
#define STATS_SERIAL_U 7
/* Structure for block devices statistics */
struct stats_disk {
unsigned long long nr_ios;
unsigned long rd_sect __attribute__ ((aligned (8)));
unsigned long wr_sect __attribute__ ((aligned (8)));
unsigned int rd_ticks __attribute__ ((aligned (8)));
unsigned int wr_ticks;
unsigned int tot_ticks;
unsigned int rq_ticks;
unsigned int major;
unsigned int minor;
};
#define STATS_DISK_SIZE (sizeof(struct stats_disk))
#define STATS_DISK_ULL 1
#define STATS_DISK_UL 2
#define STATS_DISK_U 6
/* Structure for network interfaces statistics */
struct stats_net_dev {
unsigned long long rx_packets;
unsigned long long tx_packets;
unsigned long long rx_bytes;
unsigned long long tx_bytes;
unsigned long long rx_compressed;
unsigned long long tx_compressed;
unsigned long long multicast;
unsigned int speed;
char interface[MAX_IFACE_LEN];
char duplex;
};
#define STATS_NET_DEV_SIZE (sizeof(struct stats_net_dev))
#define STATS_NET_DEV_SIZE2CMP (STATS_NET_DEV_SIZE - MAX_IFACE_LEN - 1)
#define STATS_NET_DEV_ULL 7
#define STATS_NET_DEV_UL 0
#define STATS_NET_DEV_U 1
/* Structure for network interface errors statistics */
struct stats_net_edev {
unsigned long long collisions;
unsigned long long rx_errors;
unsigned long long tx_errors;
unsigned long long rx_dropped;
unsigned long long tx_dropped;
unsigned long long rx_fifo_errors;
unsigned long long tx_fifo_errors;
unsigned long long rx_frame_errors;
unsigned long long tx_carrier_errors;
char interface[MAX_IFACE_LEN];
};
#define STATS_NET_EDEV_SIZE (sizeof(struct stats_net_edev))
#define STATS_NET_EDEV_SIZE2CMP (STATS_NET_EDEV_SIZE - MAX_IFACE_LEN)
#define STATS_NET_EDEV_ULL 9
#define STATS_NET_EDEV_UL 0
#define STATS_NET_EDEV_U 0
/* Structure for NFS client statistics */
struct stats_net_nfs {
unsigned int nfs_rpccnt;
unsigned int nfs_rpcretrans;
unsigned int nfs_readcnt;
unsigned int nfs_writecnt;
unsigned int nfs_accesscnt;
unsigned int nfs_getattcnt;
};
#define STATS_NET_NFS_SIZE (sizeof(struct stats_net_nfs))
#define STATS_NET_NFS_ULL 0
#define STATS_NET_NFS_UL 0
#define STATS_NET_NFS_U 6
/* Structure for NFS server statistics */
struct stats_net_nfsd {
unsigned int nfsd_rpccnt;
unsigned int nfsd_rpcbad;
unsigned int nfsd_netcnt;
unsigned int nfsd_netudpcnt;
unsigned int nfsd_nettcpcnt;
unsigned int nfsd_rchits;
unsigned int nfsd_rcmisses;
unsigned int nfsd_readcnt;
unsigned int nfsd_writecnt;
unsigned int nfsd_accesscnt;
unsigned int nfsd_getattcnt;
};
#define STATS_NET_NFSD_SIZE (sizeof(struct stats_net_nfsd))
#define STATS_NET_NFSD_ULL 0
#define STATS_NET_NFSD_UL 0
#define STATS_NET_NFSD_U 11
/* Structure for IPv4 sockets statistics */
struct stats_net_sock {
unsigned int sock_inuse;
unsigned int tcp_inuse;
unsigned int tcp_tw;
unsigned int udp_inuse;
unsigned int raw_inuse;
unsigned int frag_inuse;
};
#define STATS_NET_SOCK_SIZE (sizeof(struct stats_net_sock))
#define STATS_NET_SOCK_ULL 0
#define STATS_NET_SOCK_UL 0
#define STATS_NET_SOCK_U 6
/* Structure for IP statistics */
struct stats_net_ip {
unsigned long long InReceives;
unsigned long long ForwDatagrams;
unsigned long long InDelivers;
unsigned long long OutRequests;
unsigned long long ReasmReqds;
unsigned long long ReasmOKs;
unsigned long long FragOKs;
unsigned long long FragCreates;
};
#define STATS_NET_IP_SIZE (sizeof(struct stats_net_ip))
#define STATS_NET_IP_ULL 8
#define STATS_NET_IP_UL 0
#define STATS_NET_IP_U 0
/* Structure for IP errors statistics */
struct stats_net_eip {
unsigned long long InHdrErrors;
unsigned long long InAddrErrors;
unsigned long long InUnknownProtos;
unsigned long long InDiscards;
unsigned long long OutDiscards;
unsigned long long OutNoRoutes;
unsigned long long ReasmFails;
unsigned long long FragFails;
};
#define STATS_NET_EIP_SIZE (sizeof(struct stats_net_eip))
#define STATS_NET_EIP_ULL 8
#define STATS_NET_EIP_UL 0
#define STATS_NET_EIP_U 0
/* Structure for ICMP statistics */
struct stats_net_icmp {
unsigned long InMsgs __attribute__ ((aligned (8)));
unsigned long OutMsgs __attribute__ ((aligned (8)));
unsigned long InEchos __attribute__ ((aligned (8)));
unsigned long InEchoReps __attribute__ ((aligned (8)));
unsigned long OutEchos __attribute__ ((aligned (8)));
unsigned long OutEchoReps __attribute__ ((aligned (8)));
unsigned long InTimestamps __attribute__ ((aligned (8)));
unsigned long InTimestampReps __attribute__ ((aligned (8)));
unsigned long OutTimestamps __attribute__ ((aligned (8)));
unsigned long OutTimestampReps __attribute__ ((aligned (8)));
unsigned long InAddrMasks __attribute__ ((aligned (8)));
unsigned long InAddrMaskReps __attribute__ ((aligned (8)));
unsigned long OutAddrMasks __attribute__ ((aligned (8)));
unsigned long OutAddrMaskReps __attribute__ ((aligned (8)));
};
#define STATS_NET_ICMP_SIZE (sizeof(struct stats_net_icmp))
#define STATS_NET_ICMP_ULL 0
#define STATS_NET_ICMP_UL 14
#define STATS_NET_ICMP_U 0
/* Structure for ICMP error message statistics */
struct stats_net_eicmp {
unsigned long InErrors __attribute__ ((aligned (8)));
unsigned long OutErrors __attribute__ ((aligned (8)));
unsigned long InDestUnreachs __attribute__ ((aligned (8)));
unsigned long OutDestUnreachs __attribute__ ((aligned (8)));
unsigned long InTimeExcds __attribute__ ((aligned (8)));
unsigned long OutTimeExcds __attribute__ ((aligned (8)));
unsigned long InParmProbs __attribute__ ((aligned (8)));
unsigned long OutParmProbs __attribute__ ((aligned (8)));
unsigned long InSrcQuenchs __attribute__ ((aligned (8)));
unsigned long OutSrcQuenchs __attribute__ ((aligned (8)));
unsigned long InRedirects __attribute__ ((aligned (8)));
unsigned long OutRedirects __attribute__ ((aligned (8)));
};
#define STATS_NET_EICMP_SIZE (sizeof(struct stats_net_eicmp))
#define STATS_NET_EICMP_ULL 0
#define STATS_NET_EICMP_UL 12
#define STATS_NET_EICMP_U 0
/* Structure for TCP statistics */
struct stats_net_tcp {
unsigned long ActiveOpens __attribute__ ((aligned (8)));
unsigned long PassiveOpens __attribute__ ((aligned (8)));
unsigned long InSegs __attribute__ ((aligned (8)));
unsigned long OutSegs __attribute__ ((aligned (8)));
};
#define STATS_NET_TCP_SIZE (sizeof(struct stats_net_tcp))
#define STATS_NET_TCP_ULL 0
#define STATS_NET_TCP_UL 4
#define STATS_NET_TCP_U 0
/* Structure for TCP errors statistics */
struct stats_net_etcp {
unsigned long AttemptFails __attribute__ ((aligned (8)));
unsigned long EstabResets __attribute__ ((aligned (8)));
unsigned long RetransSegs __attribute__ ((aligned (8)));
unsigned long InErrs __attribute__ ((aligned (8)));
unsigned long OutRsts __attribute__ ((aligned (8)));
};
#define STATS_NET_ETCP_SIZE (sizeof(struct stats_net_etcp))
#define STATS_NET_ETCP_ULL 0
#define STATS_NET_ETCP_UL 5
#define STATS_NET_ETCP_U 0
/* Structure for UDP statistics */
struct stats_net_udp {
unsigned long InDatagrams __attribute__ ((aligned (8)));
unsigned long OutDatagrams __attribute__ ((aligned (8)));
unsigned long NoPorts __attribute__ ((aligned (8)));
unsigned long InErrors __attribute__ ((aligned (8)));
};
#define STATS_NET_UDP_SIZE (sizeof(struct stats_net_udp))
#define STATS_NET_UDP_ULL 0
#define STATS_NET_UDP_UL 4
#define STATS_NET_UDP_U 0
/* Structure for IPv6 sockets statistics */
struct stats_net_sock6 {
unsigned int tcp6_inuse;
unsigned int udp6_inuse;
unsigned int raw6_inuse;
unsigned int frag6_inuse;
};
#define STATS_NET_SOCK6_SIZE (sizeof(struct stats_net_sock6))
#define STATS_NET_SOCK6_ULL 0
#define STATS_NET_SOCK6_UL 0
#define STATS_NET_SOCK6_U 4
/* Structure for IPv6 statistics */
struct stats_net_ip6 {
unsigned long long InReceives6;
unsigned long long OutForwDatagrams6;
unsigned long long InDelivers6;
unsigned long long OutRequests6;
unsigned long long ReasmReqds6;
unsigned long long ReasmOKs6;
unsigned long long InMcastPkts6;
unsigned long long OutMcastPkts6;
unsigned long long FragOKs6;
unsigned long long FragCreates6;
};
#define STATS_NET_IP6_SIZE (sizeof(struct stats_net_ip6))
#define STATS_NET_IP6_ULL 10
#define STATS_NET_IP6_UL 0
#define STATS_NET_IP6_U 0
/* Structure for IPv6 errors statistics */
struct stats_net_eip6 {
unsigned long long InHdrErrors6;
unsigned long long InAddrErrors6;
unsigned long long InUnknownProtos6;
unsigned long long InTooBigErrors6;
unsigned long long InDiscards6;
unsigned long long OutDiscards6;
unsigned long long InNoRoutes6;
unsigned long long OutNoRoutes6;
unsigned long long ReasmFails6;
unsigned long long FragFails6;
unsigned long long InTruncatedPkts6;
};
#define STATS_NET_EIP6_SIZE (sizeof(struct stats_net_eip6))
#define STATS_NET_EIP6_ULL 11
#define STATS_NET_EIP6_UL 0
#define STATS_NET_EIP6_U 0
/* Structure for ICMPv6 statistics */
struct stats_net_icmp6 {
unsigned long InMsgs6 __attribute__ ((aligned (8)));
unsigned long OutMsgs6 __attribute__ ((aligned (8)));
unsigned long InEchos6 __attribute__ ((aligned (8)));
unsigned long InEchoReplies6 __attribute__ ((aligned (8)));
unsigned long OutEchoReplies6 __attribute__ ((aligned (8)));
unsigned long InGroupMembQueries6 __attribute__ ((aligned (8)));
unsigned long InGroupMembResponses6 __attribute__ ((aligned (8)));
unsigned long OutGroupMembResponses6 __attribute__ ((aligned (8)));
unsigned long InGroupMembReductions6 __attribute__ ((aligned (8)));
unsigned long OutGroupMembReductions6 __attribute__ ((aligned (8)));
unsigned long InRouterSolicits6 __attribute__ ((aligned (8)));
unsigned long OutRouterSolicits6 __attribute__ ((aligned (8)));
unsigned long InRouterAdvertisements6 __attribute__ ((aligned (8)));
unsigned long InNeighborSolicits6 __attribute__ ((aligned (8)));
unsigned long OutNeighborSolicits6 __attribute__ ((aligned (8)));
unsigned long InNeighborAdvertisements6 __attribute__ ((aligned (8)));
unsigned long OutNeighborAdvertisements6 __attribute__ ((aligned (8)));
};
#define STATS_NET_ICMP6_SIZE (sizeof(struct stats_net_icmp6))
#define STATS_NET_ICMP6_ULL 0
#define STATS_NET_ICMP6_UL 17
#define STATS_NET_ICMP6_U 0
/* Structure for ICMPv6 error message statistics */
struct stats_net_eicmp6 {
unsigned long InErrors6 __attribute__ ((aligned (8)));
unsigned long InDestUnreachs6 __attribute__ ((aligned (8)));
unsigned long OutDestUnreachs6 __attribute__ ((aligned (8)));
unsigned long InTimeExcds6 __attribute__ ((aligned (8)));
unsigned long OutTimeExcds6 __attribute__ ((aligned (8)));
unsigned long InParmProblems6 __attribute__ ((aligned (8)));
unsigned long OutParmProblems6 __attribute__ ((aligned (8)));
unsigned long InRedirects6 __attribute__ ((aligned (8)));
unsigned long OutRedirects6 __attribute__ ((aligned (8)));
unsigned long InPktTooBigs6 __attribute__ ((aligned (8)));
unsigned long OutPktTooBigs6 __attribute__ ((aligned (8)));
};
#define STATS_NET_EICMP6_SIZE (sizeof(struct stats_net_eicmp6))
#define STATS_NET_EICMP6_ULL 0
#define STATS_NET_EICMP6_UL 11
#define STATS_NET_EICMP6_U 0
/* Structure for UDPv6 statistics */
struct stats_net_udp6 {
unsigned long InDatagrams6 __attribute__ ((aligned (8)));
unsigned long OutDatagrams6 __attribute__ ((aligned (8)));
unsigned long NoPorts6 __attribute__ ((aligned (8)));
unsigned long InErrors6 __attribute__ ((aligned (8)));
};
#define STATS_NET_UDP6_SIZE (sizeof(struct stats_net_udp6))
#define STATS_NET_UDP6_ULL 0
#define STATS_NET_UDP6_UL 4
#define STATS_NET_UDP6_U 0
/*
* Structure for CPU frequency statistics.
* In activity buffer: First structure is for global CPU utilisation ("all").
* Following structures are for each individual CPU (0, 1, etc.)
*/
struct stats_pwr_cpufreq {
unsigned long cpufreq __attribute__ ((aligned (8)));
};
#define STATS_PWR_CPUFREQ_SIZE (sizeof(struct stats_pwr_cpufreq))
#define STATS_PWR_CPUFREQ_ULL 0
#define STATS_PWR_CPUFREQ_UL 1
#define STATS_PWR_CPUFREQ_U 0
/* Structure for hugepages statistics */
struct stats_huge {
unsigned long long frhkb;
unsigned long long tlhkb;
};
#define STATS_HUGE_SIZE (sizeof(struct stats_memory))
#define STATS_HUGE_ULL 2
#define STATS_HUGE_UL 0
#define STATS_HUGE_U 0
/*
* Structure for weighted CPU frequency statistics.
* In activity buffer: First structure is for global CPU utilisation ("all").
* Following structures are for each individual CPU (0, 1, etc.)
*/
struct stats_pwr_wghfreq {
unsigned long long time_in_state;
unsigned long freq __attribute__ ((aligned (8)));
};
#define STATS_PWR_WGHFREQ_SIZE (sizeof(struct stats_pwr_wghfreq))
#define STATS_PWR_WGHFREQ_ULL 1
#define STATS_PWR_WGHFREQ_UL 1
#define STATS_PWR_WGHFREQ_U 0
/*
* Structure for USB devices plugged into the system.
*/
struct stats_pwr_usb {
unsigned int bus_nr;
unsigned int vendor_id;
unsigned int product_id;
unsigned int bmaxpower;
char manufacturer[MAX_MANUF_LEN];
char product[MAX_PROD_LEN];
};
#define STATS_PWR_USB_SIZE (sizeof(struct stats_pwr_usb))
#define STATS_PWR_USB_ULL 0
#define STATS_PWR_USB_UL 0
#define STATS_PWR_USB_U 4
/* Structure for filesystems statistics */
struct stats_filesystem {
unsigned long long f_blocks;
unsigned long long f_bfree;
unsigned long long f_bavail;
unsigned long long f_files;
unsigned long long f_ffree;
char fs_name[MAX_FS_LEN];
char mountp[MAX_FS_LEN];
};
#define STATS_FILESYSTEM_SIZE (sizeof(struct stats_filesystem))
#define STATS_FILESYSTEM_SIZE2CMP (STATS_FILESYSTEM_SIZE - 2 * MAX_FS_LEN)
#define STATS_FILESYSTEM_ULL 5
#define STATS_FILESYSTEM_UL 0
#define STATS_FILESYSTEM_U 0
/* Structure for Fibre Channel HBA statistics */
struct stats_fchost {
unsigned long f_rxframes __attribute__ ((aligned (8)));
unsigned long f_txframes __attribute__ ((aligned (8)));
unsigned long f_rxwords __attribute__ ((aligned (8)));
unsigned long f_txwords __attribute__ ((aligned (8)));
char fchost_name[MAX_FCH_LEN] __attribute__ ((aligned (8)));
};
#define STATS_FCHOST_SIZE (sizeof(struct stats_fchost))
#define STATS_FCHOST_ULL 0
#define STATS_FCHOST_UL 4
#define STATS_FCHOST_U 0
/* Structure for softnet statistics */
struct stats_softnet {
unsigned int processed;
unsigned int dropped;
unsigned int time_squeeze;
unsigned int received_rps;
unsigned int flow_limit;
};
#define STATS_SOFTNET_SIZE (sizeof(struct stats_softnet))
#define STATS_SOFTNET_ULL 0
#define STATS_SOFTNET_UL 0
#define STATS_SOFTNET_U 5
/*
***************************************************************************
* Prototypes for functions used to read system statistics
***************************************************************************
*/
void compute_ext_disk_stats
(struct stats_disk *, struct stats_disk *, unsigned long long,
struct ext_disk_stats *);
unsigned long long get_per_cpu_interval
(struct stats_cpu *, struct stats_cpu *);
__nr_t read_stat_cpu
(struct stats_cpu *, __nr_t);
__nr_t read_stat_irq
(struct stats_irq *, __nr_t);
__nr_t read_meminfo
(struct stats_memory *);
void read_uptime
(unsigned long long *);
#ifdef SOURCE_SADC
void oct2chr
(char *);
__nr_t read_stat_pcsw
(struct stats_pcsw *);
__nr_t read_loadavg
(struct stats_queue *);
__nr_t read_vmstat_swap
(struct stats_swap *);
__nr_t read_vmstat_paging
(struct stats_paging *);
__nr_t read_diskstats_io
(struct stats_io *);
__nr_t read_diskstats_disk
(struct stats_disk *, __nr_t, int);
__nr_t read_tty_driver_serial
(struct stats_serial *, __nr_t);
__nr_t read_kernel_tables
(struct stats_ktables *);
__nr_t read_net_dev
(struct stats_net_dev *, __nr_t);
void read_if_info
(struct stats_net_dev *, int);
__nr_t read_net_edev
(struct stats_net_edev *, __nr_t);
__nr_t read_net_nfs
(struct stats_net_nfs *);
__nr_t read_net_nfsd
(struct stats_net_nfsd *);
__nr_t read_net_sock
(struct stats_net_sock *);
__nr_t read_net_ip
(struct stats_net_ip *);
__nr_t read_net_eip
(struct stats_net_eip *);
__nr_t read_net_icmp
(struct stats_net_icmp *);
__nr_t read_net_eicmp
(struct stats_net_eicmp *);
__nr_t read_net_tcp
(struct stats_net_tcp *);
__nr_t read_net_etcp
(struct stats_net_etcp *);
__nr_t read_net_udp
(struct stats_net_udp *);
__nr_t read_net_sock6
(struct stats_net_sock6 *);
__nr_t read_net_ip6
(struct stats_net_ip6 *);
__nr_t read_net_eip6
(struct stats_net_eip6 *);
__nr_t read_net_icmp6
(struct stats_net_icmp6 *);
__nr_t read_net_eicmp6
(struct stats_net_eicmp6 *);
__nr_t read_net_udp6
(struct stats_net_udp6 *);
__nr_t read_cpuinfo
(struct stats_pwr_cpufreq *, __nr_t);
__nr_t read_meminfo_huge
(struct stats_huge *);
__nr_t read_cpu_wghfreq
(struct stats_pwr_wghfreq *, __nr_t, __nr_t);
__nr_t read_bus_usb_dev
(struct stats_pwr_usb *, __nr_t);
__nr_t read_filesystem
(struct stats_filesystem *, __nr_t);
__nr_t read_fchost
(struct stats_fchost *, __nr_t);
int read_softnet
(struct stats_softnet *, __nr_t, unsigned char []);
#endif /* SOURCE_SADC */
#endif /* _RD_STATS_H */
Refrence
http://www.computerhope.com/unix/usar.htm
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。