首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

Linux性能监控(一)

2012-11-23 
Linux性能监控(1)linux性能监控,就是要监控系统的各个子系统是否正常。linux主要的子系统包括:CPU、Memory、I

Linux性能监控(1)

        linux性能监控,就是要监控系统的各个子系统是否正常。linux主要的子系统包括:CPU、Memory、IO和Network,它们之间相互依赖,一个出问题可能会影响其他的。比如:网卡流量很大会导致更多的CPU开销,因为频繁的响应中断执行协议栈。

        性能监控时,首先要确定应用的类型,然后对症下药,可以将应用分成:
        CPU密集型:CPU开销很高,比如大量的CPU运算、科学计算等。通常web server属于这类。
        IO密集型:大量的磁盘读写,高负荷的内存使用。IO密集型不会对CPU发起更多的请求,它占用CPU只是为了产生IO请求然后sleep。通常数据库属于这一类型。

1. CPU1. 上下文切换

        上下文切换(Context Switch)是多任务操作系统的基石,每个进程都有自己的执行环境就是进程的上下文,这些上下文就是当前进程使用的寄存器,比如PC、栈指针%esp、帧指针%ebp等。每个处理器核心在任意时刻只能执行一个进程或线程,当线程的时间片用尽或者线程阻塞(比如线程执行磁盘io或网络io时),进程调度器会根据一定的规则(比如选择运行时间加权之后最少的)挑选一个线程占有处理器。因为CPU的寄存器集合只有一份,所有必须要保存上一个进程使用的寄存器,同时恢复被调度的进程的寄存器状态。

        上下文切换时有损耗的。一般地,当系统中线程过多或者io负载过高时,上下文切换会比较频繁,此时CPU时间过多的消耗在上下文切换。

2. 运行队列

        内核中的进程调度器维护着运行队列(run queue),而每个阻塞源维护着自己的阻塞队列(wait queue,比如一个文件描述符,正在读写该文件的进程会被阻塞在其阻塞队列上)。任意一个进程要么处于可执行状态,要么阻塞状态。所有的可执行状态的进程都处于运行队列,如果当前系统CPU负载很高,那么运行队列的长度很大,进程调度器就不会及时响应系统请求。当运行队列越来越大时,进程或线程将花费更多的时间来获取CPU时间。

sar -B 1 5Linux 2.6.32-5-xen-amd64 (debian-org)   2012年11月17日  _x86_64_        (4 CPU)18时53分20秒  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff18时53分21秒      0.00      0.00     40.00      0.00    355.00      0.00      0.00      0.00      0.0018时53分22秒      0.00      0.00     42.00      0.00    362.00      0.00      0.00      0.00      0.0018时53分23秒      0.00      0.00     32.00      0.00    355.00      0.00      0.00      0.00      0.0018时53分24秒      0.00   6584.00    104.00      0.00    414.00      0.00      0.00      0.00      0.0018时53分25秒      0.00     28.00     66.00      0.00    427.00      0.00      0.00      0.00      0.00平均时间:        0.00   1322.40     56.80      0.00    382.60      0.00      0.00      0.00      0.00
5. 总结        a. 当系统出现较少的page fault,说明页命中率很高,会获得较好的响应时间。
        b. 在没有写入swap和disk的情况下,空闲内存越小,表明页高速缓存利用率越高。
        c. 如果系统不断报告swap device繁忙,那么说明系统内存不足。


热点排行