zoukankan      html  css  js  c++  java
  • Linux性能优化 第二章 性能工具:系统CPU

    2.1 CPU性能统计信息

    2.1.1运行队列统计

             在Linux中,一个进程要么是可运行的,要么是阻塞的(正在等待一个事件的完成)。阻塞进程可能在等待从I/O设备来的数据,或者是系统调用的结果如果一个进程是可运行的,那就意味着它要和其他可运行的进程竞争CPU时间。一个进程不一定会使用CPU,但是当Linux调度器决定从下一要运行的进程时,它会从可运行进程队列中挑选。如果进程是可运行的,同时又在等待使用处理器,这些进程就构成了运行队列。运行队列越长,处于等待的进程就越多。

             性能工具通常会给出可运行的进程个数和等待I/O的阻塞进程的个数。另一种常见的系统统计是系统的平均负载。

    2.1.2 上下文切换

             处理器(单核)通常一次只能处理一个进程或者线程,多任务的假象就是不断的在进程间切换。这种在不同的进程间的切换叫做上下文切换,因为当其发生时,CPU要保存旧进程的所有上下文信息,并取出新进程的所有上下文信息。上下文的切换涉及大量信息的移动,因此,上下文的切换开销是相当大的,应尽量减少。

             上下文切换的产生可能是由内核的调度的结果。为了保证公平地给每个进程分配处理器时间,内核会周期性地中断运行的程序。在适当的情况下,内核调度器会决定开始另一个进程。这样的中断频率与服务器的架构和内核版本有关。检查办法可以查看/proc/interrupts文件。

    后面的数减去前面的数再除以10,可以算出每秒CPU大概中断1000次。

    2.1.3 中断

        此外,处理器还周期性地从硬件设备接收中断。当设备有事件需要内核处理时,它通常就会触发这些中断。比如有外设插入设备,并准备好提供数据给内核,外设就会触发一个中断。内核收到的每个中断,如果已经有相应的已经注册的中断处理程序,就会运行该程序,否则就忽略这个中断。

    2.1.4 CPU使用率

             CPU使用率是个简单的概念。在任何时间,CPU可以执行以下几件事的其中一个:

    1. CPU可以是空闲的,等待有任务可以执行。
    2. CPU可以运行用户代码,即指定的用户时间。
    3. CPU可以执行内核中的应用程序代码,这就是系统时间。
    4. CPU可以执行比较友好的或者优先级较高的用户代码
    5. CPU可以处于iowait状态,即系统等待I/O的完成。
    6. CPU处于irq状态,即它正在用高优先级代码处理中断。
    7. CPU处于softirq模式,用低优先级代码处理中断。

    2.2 Linux性能工具:CPU

    2.2.1 vmstat(虚拟内存统计)

    vmstat输出的部分说明

    r

    当前可运行的进程数。

    b

    等待I/O完成的被阻塞进程数

    in

    系统发生中断的次数

    cs

    系统发生上下文切换的次数

    us

    用户进程消耗的CPU时间百分比

    sy

    系统进程消耗的CPU时间百分比

    id

    系统空闲时间的百分比

    wa

    等待IO消耗的总的CPU时间百分比

    vmstat默认显示

    vmstat默认显示的是系统启动后记录信息的平均值。vmstat最有用的是运行在采样模式下,如下图:

    vmstat  –s 可以显示更多的信息

    更多用法可以网上搜索资料。

    2.2.2 top

    语法

    top   [ -d delay ] [ -n iter ] [ -i ] [ -b ]

    top参数说明

    -d   delay

    统计信息更新的时间间隔

    -n   iterations

    退出前的迭代次数,即更新次数

    -i

    是否显示空闲进程

    -b

    以批处理模式运行,会显示全部的进程

    top运行时的部分参数

    P

    按CPU使用率排序

    M

    按内存使用率排序

    N

    按PID排序

    A

    进程信息的另一种显示方式,其内容为各种系统资源的最大消耗者

    f

    显示配置页面,选择屏幕要出现的统计信息

    o

    显示配置页面,修改显示在屏幕统计信息的顺序

    执行top命令结果如下

    top部分输出说明

    PR

    进程优先级,值越大代表优先级越高。RT代表实施优先级,该优先级高于标准范围

    NI

    nice值,nice值越高,系统认为该进程越不重要。

    VIRT

    系统使用虚拟内存的大小,单位为kb VIRT=SWAP+RES

    RES

    进程使用的,未被换出的物理内存大小,单位kb RES=CODE+DATA

    SHR

    共享内存的大小,单位kb

    2.2.3 mpstat(多处理器统计)

    语法

    mpstat   [ -P {cpu | ALL } ] [ delay [count ]]

    top参数说明

    -P{   cpu |ALL }

    设置监控的CPU

    -d   delay

    统计信息更新的时间间隔

    mpstat可以用来确定CPU是否得到充分的利用,以及使用情况是否均衡。

    2.2.4 sar(系统活动报告)

    sar默认会输出过去一天(0点开始统计)的采样数据

    sar 1 3 查看系统过去三秒钟的CPU采样数据

  • 相关阅读:
    POJ 2513 Colored Sticks 字典树 + 并查集 + 欧拉通路
    管理收尾往往是项目经理经常忽略的过程
    一个十人开发团队的人员安排
    GridView的RowCreated与RowDataBound事件区别
    全局程序集缓存(GAC)
    Aspose.Cells 使用整理
    Difference between Assembly and Namespace
    Ltib 应用初步
    setsocketopt() usage
    ARM地址空间
  • 原文地址:https://www.cnblogs.com/tcicy/p/10080404.html
Copyright © 2011-2022 走看看