当前位置:  互联网>综合
本页文章导读:
    ▪linux性能分析 sar 命令详解       linux性能分析 sar 命令详解 sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写.........
    ▪令牌桶在数据通信QoS流量监管中的应用        令牌桶(Tocken Bucket,以下简称TB)在流量监管(以下简称CAR)功能中完成对流量进行限速的作用。流量监管主要是应用与网络边缘,从而保证核心设备的正常数据处理。     在.........
    ▪Redis笔记(一)纯小白版篇            这是每个人学习Redis使用的第一步最常见的做法: 第一:下载          Redis下载:从官网http://redis.io/下载最新的redis,我下载的是 http://redis.googlecode..........

[1]linux性能分析 sar 命令详解
    来源: 互联网  发布时间: 2013-10-26
linux性能分析 sar 命令详解
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。本文主要以CentOS 6.3 x64系统为例,介绍sar命令。

sar命令常用格式

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

其中:

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

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

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

-A:所有报告的总和

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

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

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

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

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

-B:显示内存与“磁盘或SWAP空间”交换情况,监控分页情况

-a:文件读写情况

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

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

-y:终端设备活动情况

-w:输出每秒上下文切换数

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

1. CPU资源监控

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

sar -u -o test 10 3

屏幕显示如下:

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

17:06:26 all 0.00 0.00 0.20 0.00 0.00 99.80

17:06:36 all 0.00 0.00 0.20 0.00 0.00 99.80

17:06:46 all 0.00 0.00 0.10 0.00 0.00 99.90

Average: all 0.00 0.00 0.17 0.00 0.00 99.83

输出项说明:

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 。

如果要查看二进制文件test中的内容,需键入如下sar命令:

sar -u -f test

2. 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数量

3. 内存和交换空间监控

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

sar -r 10 3

屏幕显示如下:

输出项说明:

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

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

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

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

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

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

4. 内存分页监控

例如,每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)的百分比

5. I/O和传送速率监控

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

sar -b 10 3

屏幕显示如下:

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

18:51:15 0.00 0.00 0.00 0.00 0.00

18:51:25 1.92 0.00 1.92 0.00 22.65

18:51:35 0.00 0.00 0.00 0.00 0.00

Average: 0.64 0.00 0.64 0.00 7.59

输出项说明:

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

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

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

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

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

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

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

sar -q 10 3

屏幕显示如下:

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

19:26:00 0 259 0.00 0.00 0.00

19:26:10 0 259 0.00 0.00 0.00

19:26:20 0 259 0.00 0.00 0.00

Average: 0 259 0.00 0.00 0.00

输出项说明:

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

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

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

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

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

7. 系统交换活动信息监控

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

sar -W 10 3

屏幕显示如下:

19:39:50 pswpin/s pswpout/s

19:40:00 0.00 0.00

19:40:10 0.00 0.00

19:40:20 0.00 0.00

Average: 0.00 0.00

输出项说明:

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

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

8. 设备使用情况监控

例如,每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    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

17:46:04    sda    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

17:

    
[2]令牌桶在数据通信QoS流量监管中的应用
    来源: 互联网  发布时间: 2013-10-26

  令牌桶(Tocken Bucket,以下简称TB)在流量监管(以下简称CAR)功能中完成对流量进行限速的作用。流量监管主要是应用与网络边缘,从而保证核心设备的正常数据处理。

    在流量监管的处理过程中,首先报文被分类,如果报文是某类报文,规定了流量特性,则进入令牌桶中进行处理,如果令牌桶中有足够的令牌可以用来发送报文,则报文可以通过可以被继续发送下去,如果令牌桶中的令牌不满足报文的发送条件,则报文被丢弃。这样就可以对某类报文的流量进行控制。

 

           图1:令牌桶在流量监管中的处理过程示意图

      令牌桶按用户设定的速度向桶中放置令牌,并且令牌桶有用户设定的容量,当桶中令牌的量超出桶的容量的时候,令牌的量不再增加;当报文被令牌桶处理的时候,如果令牌桶中有足够的令牌可以用来发送报文,则报文可以通过可以被继续发送下去,同时令牌桶中的令牌量按报文的长度做相应的减少,令牌桶中的令牌少到报文不能再发送时报文被丢弃。

      令牌桶是一个控制数据流量的很好的工具,当令牌桶中充满令牌的时候,桶中所有的令牌代表的报文都可以被发送,这样可以允许数据的突发性传输。当令牌桶中没有令牌的时候报文将不能被发送,只有等到桶中生成了新的令牌报文才可以发送,这就可以限制报文的流量只能是小于等于令牌生成的速度,达到限制流量的目的。
作者:lezhiyong 发表于2013-7-18 13:21:33 原文链接
阅读:0 评论:0 查看评论

    
[3]Redis笔记(一)纯小白版篇
    来源: 互联网  发布时间: 2013-10-26

      这是每个人学习Redis使用的第一步最常见的做法:

第一:下载

         Redis下载:从官网http://redis.io/下载最新的redis,我下载的是

http://redis.googlecode.com/files/redis-2.6.14.tar.gz

jedis下载:从https://github.com/xetorthio/jedis/downloads下载jedis2.1.0 ,路径为:

https://github.com/downloads/xetorthio/jedis/jedis-2.1.0.jar

 

第二:解压安装

解压tar -zxvfredis-2.6.14.tar.gz

然后进入src文件夹,make 然后makeinstall,详见README文件

第三:测试

         编写测试文件

 

package test.redis;


import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisShardInfo;

public class TestRedisConnect {

    private static Jedis jedis;
    
    static {
        jedis = new Jedis("127.0.0.1");
        jedis.connect();    

    }


    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        jedis.incr("testAge");
        System.out.println(jedis.get("testAge"));
    }


}

 

目录结构:

.
|-- libs
|   `-- jedis-2.1.0.jar
`-- test
    `-- redis
        |-- TestRedisConnect.class
        `-- TestRedisConnect.java

 

3 directories, 3 files

 

启动redis服务:redis-server redis.conf

编译:

javac -Djava.ext.dirs=libstest/redis/TestRedisConnect.java

执行:

java -Djava.ext.dirs=libstest.redis.TestRedisConnect

如果输入了1,则测试成功,下一篇讲redis的主从配置。

 

         

作者:ssergsw 发表于2013-7-18 17:24:11 原文链接
阅读:12 评论:0 查看评论

    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3