几个linux系统参数的理解

CPU LOAD

通俗点讲,即当前系统正在执行及等待执行的任务数量。 维基百科上面对LOAD的详细解释:

Each process using or waiting for CPU (the ready queue or run queue) increments the load number by 1.

Most UNIX systems count only processes in the running (on CPU) or runnable (waiting for CPU) states.

However, Linux also includes processes in uninterruptible sleep states (usually waiting for disk activity),which can lead tomarkedly different results if many processes remain blocked in I/O due to a busy or stalled I/O system.

根据上面的解释,LOAD值高并不一定是系统计算资源瓶颈,这个值更多反应的是:1、系统上服务的实现方式;2、系统上当前请求服务的延迟。采用多线程及阻塞IO的方式实现的服务,当服务IO压力较大时(重IO类型的服务),一般都会出现系统LOAD较高的问题。仅仅通过多线程来实现并发是最简单低效的一种实现方式,一旦线程的执行被IO 阻塞,而新的请求又会导致创建新的线程,系统线程数最不断升高,导致一个可怕的问题: 系统上下文切换次数骤升,大量的CPU时间被消耗在无用的上下文切换。

IO wait

CPU因为等待IO而执行idle空转所耗用的时间,产生IO wait必须满足两个条件:1、CPU上执行的进程因为IO而阻塞;2、当前没有runnable状态的进程。 
IO wait实际上是cpu idle的时间,kernel把cpu分成三种状态:busy、idle、wait,busy表示cpu正在忙着干活,idle表示CPU闲着没事可做,而wait表示cpu有活而不能干(数据没准备好),内核统计wait时间的是在accountsystemtime函数中,函数中重要代码片段:

/* Add system time to cpustat. */
tmp = cputime_to_cputime64(cputime);
/*CPU在做硬件中断*/
if (hardirq_count() - hardirq_offset)
    cpustat->irq = cputime64_add(cpustat->irq, tmp);
/*CPU在处理软中断*/
else if (softirq_count())
    cpustat->softirq = cputime64_add(cpustat->softirq, tmp);
/*CPU 正常运行*/
else if (p != rq->idle)
    cpustat->system = cputime64_add(cpustat->system, tmp);
/*不在做中断,且rq->nr_iowait大于0,表示cpu 在IO wait*/
else if (atomic_read(&rq->nr_iowait) > 0)
    cpustat->iowait = cputime64_add(cpustat->iowait, tmp);
else
/*CPU在执行idle*/
    cpustat->idle = cputime64_add(cpustat->idle, tmp);

accountsystemtime中统计各种CPU时间,包括iowait时间,那么&rq->nr_iowait是如何被更新的呢?

时间: 2025-01-19 22:48:29

几个linux系统参数的理解的相关文章

Linux系统的理解及学习Linux内核的心得

作业列表      linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作 linux内核分析作业:操作系统是如何工作的进行:完成一个简单的时间片轮转多道程序内核代码 linux内核分析作业3:跟踪分析Linux内核的启动过程 linux内核分析作业4:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 linux内核分析作业5:分析system_call中断处理过程 linux内核分析作业6:分析Linux内核创建一个新进程的过程 Linux内核分析作业7:L

Linux系统参数调优

摘要 本文讲Linux系统参数的含义及调优,本文会持续更新. - 最大文件句柄数设置 a) /etc/sysctl.conf fs.file-max = 102400000 b) /etc/security/limit.d/user.conf *         hard    nofile      500000  *         soft    nofile      500000  root      hard    nofile      500000  root      soft

两个局域网(办公网-IDC)安全互通方案2:by GRE and linux server&深入理解GRE

[第一.需求描述]     办公网和IDC两个局域网(or,任意两个不同局域网),相互隔离.但是在日常运维.研发过程中,需要在办公网访问IDC网络.如果都通过公网ip绕,既不方便,也不安全.如果拉专线,是最稳定可靠的办法.但是作为技术屌丝,想为公司省点钱(这也可以看作是技术价值的一部分),所以打算使用其他方案(当然是免费的方案,或者这样说,使用已有资源的方案.服务器当然也需要花钱的,但是你可以使用已有服务器来完成这个方案)解决这个需求. [第二.背景介绍]     办公网有lan192.168.

Linux命令行–理解Linux文件权限(转)

6.1.1 /etc/passwd文件 /etc/passwd:包含系统用户账户列表以及每个用户的基本配置信息 每个条目有七个字段,每个字段用冒号隔开 登录用户名 用户密码 用户账户的UID 用户账户的GID 用户账户的文本描述 用户HOME目录的位置 1 rich:x:501:501:Rich Blum:/home/rich:/bin/bash 默认情况下,bash shell启动时会自动处理用户主目录下.bashrc文件中的命令 linux系统将用户密码保存在另一个单独的文件中(称为shad

对Linux进程的理解

在本科期间学习过进程,网上也有很多关于进程的知识,但对于进程到底是什么一直没有让我满意的解答(以下截图来自网络,感觉对进程理解有问题,说得也很虚). 但今天找到这个博文感觉挺符合我的胃口:http://blog.csdn.net/yuqiang_ee_android/article/details/16889257 进程的本质 进程是Linux内核提供的一个环境(资源分配的基本单位),包括: (1)进程控制块(用于操作系统对进程的管理). (2)虚拟内存(分为好几段:正文段.数据段.BBS段.堆

Linux内核学习总结:Linux系统的理解及学习Linux内核的心得

作业一计算机是如何工作的进行http://www.cnblogs.com/zhengwei0712/p/5207299.html 作业二操作系统是如何工作的进行http://www.cnblogs.com/zhengwei0712/p/5234622.html 作业三LINUX内核的启动过程http://www.cnblogs.com/zhengwei0712/p/5253703.html    第一章:Linux发展与UNIX 第二章:内核源码获取.解压.配置.编译与安装 作业四系统调用的工作

Linux 进程的理解

进程的描述 通俗的讲,进程就是正在执行的程序或代码.我们知道,程序本身就是一堆代码,开始的时候存储在磁盘上,这时它是静态的.无生命的:只有当程序的代码被加载到内存中,代码才有了生命,才能被CPU动态的执行. 问题是,现在的操作系统可以并行的执行多个程序,也就是内存中同时存放着多个程序的代码,为了方便管理,必须要合理的组织它们.方式就是由操作系统给每段代码添加一些元数据,这些元数据就是PCB,即任务控制块. 不难理解的是,每个程序的代码实际上可以分为两部分:指令的数据.指令就是程序代码规定的各种操

《Linux操作系统分析》之Linux系统的理解及学习Linux内核的心得

经过这一段时间的学习,自己对linux也有了一定的认识,今天这篇博客对以往的知识进行一个总结吧. 以往linux学习的博客,从上而下是学习深入的过程,我的博客链接如下: 第一篇:<Linux操作系统分析>之分析计算机如何启动以及如何工作运行 第二篇:<Linux操作系统分析>之分析精简的Linux的内核中断和时间片轮询 第三篇:<Linux操作系统分析>之跟踪分析Linux内核的启动过程 第四篇:<Linux操作系统分析>之使用库函数API和C代码中嵌入汇编

Linux内核分析--理解进程调度时机、跟踪分析进程调度和进程切换的过程

ID:fuchen1994 姓名:江军 作业要求: 理解Linux系统中进程调度的时机,可以在内核代码中搜索schedule()函数,看都是哪里调用了schedule(),判断我们课程内容中的总结是否准确: 使用gdb跟踪分析一个schedule()函数 ,验证您对Linux系统进程调度与进程切换过程的理解:推荐在实验楼Linux虚拟机环境下完成实验. 特别关注并仔细分析switch_to中的汇编代码,理解进程上下文的切换机制,以及与中断上下文切换的关系: 实验过程: 1. 进程调度的时机 中断