Linux性能优化2.1 CPU性能统计信息

摘要

性能工具:系统CPU

本章概述了系统级的Linux性能工具。这些工具是你追踪性能问题时的第一道防线。它们能展示整个系统的性能情况和哪些部分表现不好。本章将讨论这些工具可以测量的统计信息,以及如何使用各种工具收集这些统计结果。阅读本章后,你将能够:

理解系统级性能的基本指标,包括CPU的使用情况。

明白哪些工具可以检索这些系统级性能指标。


2.1 CPU性能统计信息


每一种系统级Linux性能工具都提供了不同的方式来提取相似的统计结果。虽然没有工具能显示全部的信息,但是有些工具显示的是相同的统计信息。为了不多次(每种工具一次)解释统计信息的含义,我们在描述所有工具之前对这些信息进行一次性说明。

2.1.1 运行队列统计

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

性能工具通常会给出可运行的进程个数和等待I/O的阻塞进程个数。另一种常见的系统统计是平均负载。系统的负载是指正在运行和可运行的进程总数。比如,如果正在运行的进程为两个,而可运行的进程为三个,那么系统负载就是5。平均负载是给定时间内的负载量。一般情况下,取平均负载的时间为1分钟、5分钟和15分钟。这能让你观察到负载是如何随时间变化的。

2.1.2 上下文切换

大部分现代处理器一次只能运行一个进程或线程。虽然有些处理器(比如超线程处理器)实际上可以同时运行多个进程,但是Linux会把它们看作多个单线程处理器。如果要制造出给定单处理器同时运行多个任务的假象,Linux内核就要不断地在不同的进程间切换。这种不同进程间的切换称为上下文切换,因为当其发生时,CPU要保存旧进程的所有上下文信息,并取出新进程的所有上下文信息。上下文中包含了Linux跟踪新进程的大量信息,其中包括:进程正在执行的指令,分配给进程的内存,进程打开的文件等。这些上下文切换涉及大量信息的移动,因此,上下文切换的开销可以是相当大的。尽量减少上下文切换的次数是个好主意。

要避免上下文切换,重要的一点是了解它们是如何发生的。首先,上下文切换可以是内核调度的结果。为了保证公平地给每个进程分配处理器时间,内核周期性地中断正在运行的进程,在适当的情况下,内核调度器会决定开始另一个进程,而不是让当前进程继续执行。每次这种周期性中断或定时发生时,你的系统都可能进行上下文切换。每秒定时中断的次数与架构和内核版本有关。一个检查中断频率的简单方法是用/proc/interrupts文件,它可以确定已知时长内发生的中断次数。如清单2.1所示。

清单2.1

 

在清单2.1中,我们要求内核给出定时器启动的次数,等待10秒后,再次请求。这就是说,在这台机器上定时器启动频率为(24 070 093-24 060 043)中断/(10秒)或者约1000次中断/秒。如果你的上下文切换明显多于定时器中断,那么这些切换极有可能是由I/O请求或其他长时间运行的系统调用(如休眠)造成的。当应用请求的操作不能立即完成时,内核启动该操作,保存请求进程,并尝试切换到另一个已就绪进程。这能让处理器尽量保持忙状态。

2.1.3 中断

此外,处理器还周期性地从硬件设备接收中断。当设备有事件需要内核处理时,它通常就会触发这些中断。比如,如果磁盘控制器刚刚完成从驱动器取数据块的操作,并准备好提供给内核,那么磁盘控制器就会触发一个中断。对内核收到的每个中断,如果已经有相应的已注册的中断处理程序,就运行该程序,否则将忽略这个中断。这些中断处理程序在系统中具有很高的运行优先级,并且通常执行速度也很快。有时,中断处理程序有工作要做,但是又不需要高优先级,因此它可以启动“下半部”(bottom half),也就是所谓的软中断处理程序。如果有很多中断,内核会花大量的时间服务这些中断。查看/proc/interrupts文件可以显示出哪些CPU上触发了哪些中断。

2.1.4 CPU使用率

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

(1)CPU可以是空闲的,这意味着处理器实际上没有做任何工作,并且等待有任务可以执行。

(2)CPU可以运行用户代码,即指定的“用户”时间。

(3)CPU可以执行Linux内核中的应用程序代码,这就是“系统”时间。

(4)CPU可以执行“比较友好”的或者优先级被设置为低于一般进程的用户代码。

(5)CPU可以处于iowait状态,即系统正在等待I/O(如磁盘或网络)完成。

(6)CPU可以处于irq状态,即它正在用高优先级代码处理硬件中断。

(7)CPU可以处于softirq模式,即系统正在执行同样由中断触发的内核代码,只不过其运行于较低优先级(下半部代码)。

此情景出现的条件为:发生设备中断时,而内核在将其移交给用户空间之前必须对其进行一些处理(比如,处理网络包)。

大多数性能工具将这些数值表示为占CPU总时间的百分比。这些时间的范围从0%到100%,但全部三项加起来等于100%。一个具有高“系统”百分比的系统表明其大部分时间都消耗在了内核上。像oprofile一样的工具可以帮助确定时间都消耗在了哪里。具有高“用户”时间的系统则将其大部分时间都用来运行应用程序。下一章展示在上述情况下,如何用性能工具追踪问题。如果系统在应该工作的时候花费了大量的时间处于iowait状态,那它很可能在等待来自设备的I/O。导致速度变慢的原因可能是磁盘、网卡或其他设备。

时间: 2024-07-29 18:05:38

Linux性能优化2.1 CPU性能统计信息的相关文章

SQL性能优化之定位网络性能问题的方法(DEMO)_MsSql

最近项目组同事跟我说遇到一个SQL性能问题,他说全表只有69条记录,客户端执行耗费了两分多钟,很不科学.我帮了分析出了原因并得到解决.下面小编安装类似表结构,构造了一个案例,测试截图如下所示: 这个表有13800KB(也就是13M多大小),因为该表将图片保存到数据库(Item_Photo字段为iamge类型),这个是历史原因,暂且不喷这种的设计.看来这个SQL执行时间长的性能问题不在于IO和SQL本身执行计划是否有问题,而是在网络数据传时间上(服务器与客户端位于异地,两地专线带宽6M,不过很多应

SQL性能优化之定位网络性能问题的方法(DEMO)

最近项目组同事跟我说遇到一个SQL性能问题,他说全表只有69条记录,客户端执行耗费了两分多钟,很不科学.我帮了分析出了原因并得到解决.下面小编安装类似表结构,构造了一个案例,测试截图如下所示: 这个表有13800KB(也就是13M多大小),因为该表将图片保存到数据库(Item_Photo字段为iamge类型),这个是历史原因,暂且不喷这种的设计.看来这个SQL执行时间长的性能问题不在于IO和SQL本身执行计划是否有问题,而是在网络数据传时间上(服务器与客户端位于异地,两地专线带宽6M,不过很多应

【性能优化】ORACLE数据库性能优化概述

   为了保证ORACLE数据库运行在最佳的性能状态下,在信息系统开发之前就应该考虑数据库的优化策略.优化策略一般包括服务器操作系统参数调整.ORACLE数据库参数调整.网络性能调整.应用程序SQL语句分析及设计等几个方面,其中应用程序的分析与设计是在信 分析评价ORACLE数据库性能主要有数据库吞吐量.数据库用户响应时间两项指标.数据库吞吐量是指单位时间内数据库完成的SQL语句数目:数据库用户响应时间是指用户从提交SQL语句开始到获得结果的那一段时间.数据库用户响应时间又可以分为系统服务时间和

在DB2优化器中使用分布统计信息

本文配套源码 简介 为了执行查询或 DML 语句(INSERT.UPDATE.DELETE),DB2 必须创建一个访问计划(access plan).访问计划定义按什么顺序访问表,使用哪些索引,以及用何种连接(join)方法来关联数据.好的访问计划对于 SQL 语句的快速执行至关重要.DB2 优化器可以创建访问计划.这是一种基于成本的优化器,这意味着它是根据表和索引的相关统计信息来作出决策的.DB2 在生成统计信息时,不但能提供基本统计信息,还允许创建所谓的分布统计信息.不但数据库管理员要理解分

Linux性能优化1.2 性能调查概要

1.2 性能调查概要 本节列出了开始性能调查时的几个重要步骤.由于终极目标是解决问题,因此最好的方法是在你接触性能工具之前就开始研究问题.遵循如下特定步骤是解决问题的有效方法,并且不会浪费宝贵的时间. 1.2.1 找到指标.基线和目标 性能调查的第一步就是确定当前的性能,并明确其应提升的程度.如果你的系统明显性能不佳,你就可以确定值得花时间进行研究.但是,如果系统性能接近其峰值,那么就不值得研究.明确性能峰值有助于你设置合理的性能期望值,并能给你一个性能目标,这样你就知道何时应该停止优化.你可能

Linux性能优化2.2 Linux性能工具:CPU

2.2 Linux性能工具:CPU 现在开始讨论性能工具,使用这些工具能够提取之前描述的那些信息. 2.2.1 vmstat(虚拟内存统计) vmstat是指虚拟内存统计,这个名称表明它能告诉你系统的虚拟内存性能信息.幸运的是,它实际上能完成的工作远不止于此.vmstat是一个很有用的命令,它能获取整个系统性能的粗略信息,包括: 正在运行的进程个数. CPU的使用情况. CPU接收的中断个数. 调度器执行的上下文切换次数. 它是用于获取系统性能大致信息的极好工具. 2.2.1.1 CPU性能相关

LAMP服务器性能优化技巧之Linux主机优化_Linux

目前LAMP (Linux + Apache + MySQL + PHP) 近几年来发展迅速,已经成为Web 服务器的事实标准. LAMP这个词的由来最早始于德国杂志"c't Magazine",Michael Kunze在1990年最先把这些项目组合在一起创造了LAMP的缩写字.这些组件虽然并不是开开始就设计为一起使用的,但是,这些开源软件都可以很方便的随时获得并免费获得.这就导致了这些组件经常在一起使用.在过去的几年里,这些组件的兼容性不断完善,在一起的应用情形变得非常普便.为了改

kvm虚拟化学习笔记(二十一)之KVM性能优化学习笔记

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1606422 本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6.x系列操作系统下KVM优化的点,有很多都是默认支持开启了的,除了采用virtio方式的磁盘IO,与网络IO接口

Oracle 数据库性能优化3日实战(企业培训)

课程名称一: Oracle性能优化及调整 课程时长 1天 课程深度: 高级 上机实验: 10%-30% 授课对象: Oracle开发人员.Oracle数据库管理人员,应用程序开发人员 课程描述: 本课程讲述Oracle数据库物理层规划,系统性能的监控,数据库性能参数调整,统计信息的收集,使用自动化调试工具优化数据库,I/O子系统的配置与设计以及性能优化方法论等. 预备知识: 熟悉操作系统相关(含Linux)基础知识,具备中级以上数据库相关的基础知识,对Oracle数据库体系结构有深入的理解, 熟

《Oracle数据库性能优化方法论和最佳实践》——1.7 Oracle性能优化的神话和误区

1.7 Oracle性能优化的神话和误区 Oracle性能优化工作是Oracle数据库科学最为神秘莫测的领域,自然也就会流传着各种传言和八卦.本书最主要的目的就是真正使Oracle性能优化成为一门严谨的科学,使任何阅读并且理解本书内容的读者可以比较简单地完成Oracle性能优化工作,使自己在其他人面前成为"巫师"或"神秘的对象".1.7.1 艺术和科学 从百度.Google等网站搜索"性能优化艺术",会出现大量的条目,部分Oracle性能优化的图