首先,说一下产生D状态的原因。

上图阐释了一个进程运行的情况,首先,运行的时候,进程会向内核请求一些服务,内核就会将程序挂起进程,并将进程放到parked队列,通常这些进程只会在parked队列中停留很短的时间,在ps(1)列表中是不会出现的。但是如果内核因为某些原因不能提供相应服务的话。例如,进程要读某一个特定的磁盘块,但是磁盘控制器坏了,这时,除非进程完成读磁盘,否则内核无法将该进程移出parked队列,此时该进程标志位就会被置为D。由于进程只有在运行的时候才能接受到signals,所以此时在parked队列上的进程也就无法接收到信号了。解决这个问题的方法要么是给资源给该进程,要么是reboot。
通俗一点说,产生D状态的原因出现uninterruptible sleep状态的进程一般是因为在等待IO,例如磁盘IO、网络IO等。在发出的IO请求得不到相应之后,进程一般就会转入uninterruptible sleep状态,例如若NFS服务端关闭时,如果没有事先amount相关目录。在客户端执行df的话就会挂住整个会话,再用ps axf查看的话会发现df进程状态位已经变成D。

出现负载较高的情况,可以通过vmstat查看是否是由于uninterruptible sleep进程引起的,其中vmstat命令中的procs部分的b列就表示uninterruptible sleep的数量:

 Procs
r: The number of runnable processes (running or waiting for run time).
b: The number of processes in uninterruptible sleep.

如上图,该服务器存在uninterruptible sleep进程,通过 ps aux查看,是数据库的写盘进程,初步判断进程在等待io。

注:

  由于只有运行状态的进程才可以接受信号,所以处于uninterruptible sleep的进程,是无法用kill命令杀掉的,即使是加9或15的信号。

参考:

http://www.dewen.net.cn/q/5664

Linux 进程的 Uninterruptible sleep(D) 状态的更多相关文章

  1. Linux进程的Uninterruptible sleep(D)状态【转】

    转自:http://c20031776.blog.163.com/blog/static/68471625201121522824111/ 运行在KVM虚拟机里的一些进程突然出了问题,这些出了问题的进 ...

  2. linux进程的几种状态

    Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态. Linux进程状态:R (TASK_RUNNING),可执行状态. 只有在该状 ...

  3. Linux进程的状态转换图

    http://blog.csdn.net/mu0206mu/article/details/7348618 ◆运行状态(TASK_RUNNING) 当进程正在被CPU执行,或已经准备就绪随时可由调度程 ...

  4. linux进程的几个状态

    [linux进程的几个状态] 1. Linux进程状态:R (TASK_RUNNING),可执行状态&运行状态(在run_queue队列里的状态) 2. Linux进程状态:S (TASK_I ...

  5. Linux进程管理之状态(二)

    二.进程的生命周期 进程是一个动态的实体,所以他是有生命的.从创建到消亡,是一个进程的整个生命周期.在这个周期中,进程可能会经历各种不同的状态.一般来说,所有进程都要经历以下的3个状态: 就绪态.指进 ...

  6. Linux 进程--父进程查询子进程的退出状态

    僵尸进程 当一个子进程先于父进程结束运行时,它与其父进程之间的关联还会保持到父进程也正常地结束运行,或者父进程调用了wait才告终止. 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它 ...

  7. Linux进程管理及while循环

    目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...

  8. Linux—进程管理

    Linux 进程管理 1.进程管理介绍 1.1 什么是进程? 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 简而言之 ...

  9. 如何灵活运用Linux 进程资源监控和进程限制

    导读 每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工 ...

随机推荐

  1. Vue2 v-bind:href 中如何使用过滤器

    <a class="topic_title" v-bind:href="info.id|getTitleHref" v-bind:title=" ...

  2. PLSQL变量和类型,流程控制语句,集合

    ---PLSQL 调试授权 GRANT debug any procedure, debug connect session TO scott; --定义变量 declare part_number ...

  3. day09,10 函数

    一.函数 什么是函数 函数: 对代码块和功能的封装和定义 定义一个事情或者功能. 等到需要的时候直接去用就好了. 那么这里定义的东西就是一个函数. 语法: def 函数名(形参): 函数体 函数名(实 ...

  4. Spark Shell Examples

    Spark Shell Example 1 - Process Data from List: scala> val pairs = sc.parallelize( List( ("T ...

  5. Wacom将在CES 2015上发布全新旗舰版Cintiq

    Cintiq 27QHD和Cintiq 27QHD touch拥有宽大的工作表面,以及令人惊喜的屏幕笔触和颜色性能. 2015年1月6日,Wacom发布了Cintiq 27QHD和Cintiq 27Q ...

  6. BZOJ 3489 A simple rmq problem 可持久化KDtree/二维线段树

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3489 题意概述: 给出一个序列,每次询问一个序列区间中仅出现了一次的数字最大是多少,如果 ...

  7. Intense Heat(前缀和或尺取)

    The heat during the last few days has been really intense. Scientists from all over the Berland stud ...

  8. Beta发布——美工+文案

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2408项目地址:https://coding.net/u/wuyy694/ ...

  9. unknown2

    结对作业 本次结对:211606457 郑沐榕.211406242 杨长元 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时( ...

  10. HDU 5636 Shortest Path

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5636 题解: 1.暴力枚举: #include<cmath> #include<c ...