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采样数据

Linux性能优化 第二章 性能工具:系统CPU的更多相关文章

  1. Linux性能优化 第一章 性能追踪建议

    1.1常用建议1.1.1记大量的笔记(记录所有的事情)在做性能调优问题的时候很重要的一个操作就是记录下所有的事情,包括每一个输出.执行的结果.可以新建一个文件夹,然后把结果的文件都塞到该文件夹内.包括 ...

  2. web性能优化-网络传输性能优化

    浏览器工作原理:https://www.cnblogs.com/thonrt/p/10008220.html 浏览器渲染原理: https://www.cnblogs.com/thonrt/p/100 ...

  3. Android App性能优化笔记之一:性能优化是什么及为什么?

    By Long Luo   周星驰的电影<功夫>里面借火云邪神之口说出了一句至理名言:“天下武功,唯快不破”. 在移动互联网时代,同样如此,留给一个公司的窗口往往只有很短的时间,如何把握住 ...

  4. 性能优化——Web前端性能优化

    核心知识点: 1.排查网站性能瓶颈的手法:分析各个环节的日志,找出异常部分 2.Web前端:网站业务逻辑之前的部分(浏览器.图片服务.CDN) 3.优化手段 1)浏览器优化 (1)减少http请求 a ...

  5. 微擎开启性能优化里面的性能优化memcache内存优化及数据库读写分离

    http://www.mitusky.com/forum.php?mod=viewthread&tid=3135 [微擎 安装使用] 微擎开启性能优化里面的性能优化memcache内存优化及数 ...

  6. Linux性能优化之内存性能统计信息

    关于内存的概念及其原理在任何一本介绍操作系统的书本中都可以查阅到. 理论放一遍,在Linux操作系统中如何查看系统内存使用情况呢?看看内存统计信息有哪些维度. 一.内存使用量 详细使用方法,man f ...

  7. Java性能优化的9大工具

    在这篇文章中,我会带着大家一起看一下9个可以帮助我们优化Java性能的工具.有一些我们已经在IDR Solutions中使用了,而另外一些有可能在个人项目中使用. NetBeans Profiler ...

  8. mysql 查询性能优化第一章 为什么查询速度会慢

    一 为什么查询速度会慢 在尝试编写快速的查询之前,咱们需要清除一点,真正重要的是响应时间.如果把查询看成是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要有 优化查询,实际上要 ...

  9. Linux内核分析——第二章 从内核出发

    第二章 从内核出发 一.获取内核源码 1.Git是分布式的:下载和管理Linux内核源代码: 2.获取最新提交到版本树的一个副本 $ git clone git://git.kernel.org/pu ...

随机推荐

  1. cos migration工具webhook推送

    上一篇讲了腾讯云同步工具的使用,这篇主要是补充如何将同步结果主动消息通知. 因为cos migration 工具是java语言,并在github开源的,所以可以直接修改源码,添加webhook推送代码 ...

  2. [转]ConcurrentHashMap原理分析

    一.背景: 线程不安全的HashMap     因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap. 效率低下的Has ...

  3. webpack 入口:entry

    定义一个入口点就生成一个chunk.如果你只是用字符串的方式定义了一个入口点,其就被命名为main.如果你用对象的方式定义多个入口点,其就被命名为入口对象中的键值.下面两个例子是等价的: entry: ...

  4. 无界面运行Jmeter压测脚本 --后知者

    原文作者---后知者 原文地址:http://www.cnblogs.com/houzhizhe/p/8119735.html [后知者的故事]:针对单一接口压测时出现了从未遇到的问题,设好并发量后用 ...

  5. C++Builder XE7 up1 简单测试

    很久没用BCB了, 新装了BCBXE7up1试试了,发现有点找不到北了,好像与BCB6的一些默认设置项不一样,编译了一个空APP,提示找不到bpl 和 dll. 设置为不带包编译后,还是提示DLL找不 ...

  6. ecstore-安装提示flock,即使绕过检测,安装成功后还是提示t function 解决办法

    安装时先绕过去 安装好后,修改config.php里的TMP_DIR,指向网站目录下的data目录(用绝对路径) 分析:应该是php的运行用户没有对tmp目录的写权限.中电云集的管理工具就出现过

  7. 阅读 RAM-Based Shift Register(ALTSHIFT_TAPS) IP Core User Guide

    阅读 RAM-Based Shift Register(ALTSHIFT_TAPS) IP Core User Guide 说明:本文档自带测试工程: DE_ALTSHIFT_TAPS.zip 1.支 ...

  8. 利用event为z数据表定期添加和删除分区

    我们去年就开始把zabbix数据库改成用TokuDB来支撑,并且启用了表分区(详情见:迁移Zabbix数据库到TokuDB).这样做的好处很明显,较早的历史数据可以通过删除分区快速废弃掉.要知道,za ...

  9. 抓包及分析(wireshark&tcpdump)

    1.简介 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话,我直接用tcpdump了,因为我工 ...

  10. webGL之three.js入门1

    开场白 最近开始学前端,看了极客学院的前端教学视频,其实有C++或者java基础的人学前端还是很快的.但是html的标签和CSS的样式还是得多code才能熟练,熟能生巧,学以致用. 还在看js,因为有 ...