怎么理解load_average

<p>之前我讲了cpu使用率的问题,cpu使用率是我们监控中非常关注的指标。</p><p>但是工作中,我们经常遇到业务应用已经很慢了,但是cpu利用率显示很低。</p><p>这种时候,你会发现top中load很高。</p><p>在top中,load average后面有3个数字。分别代表1分钟,5分钟和15分钟的平均负载。</p><p>是对过去一段时间的负载情况的反应。</p><h2><span/><span>对load average的正确理解</span><span/><span> </span></h2><p>假设一台只有1个cpu的服务器,如果此时cpu在运行一个进程,并且没有其他等待运行的进程。那么现在的load就是1。</p><p>如果此时还有2个进程在等待运行,那么load就是3</p><p>也就是说<strong>load = 正在运行的进程数 + 等待运行的进程数</strong></p><p>对于一个24C的服务器,如果只有10个进程在运行,那么load就是10</p><p>不管cpu的使用率是多少。所以我们通常建议说最好的情况是load 大致等于cpu数。这样表示cpu都在工作,没有浪费。又不至于太忙导致任务等待。</p><p><strong>这是理想的情况。</strong></p><p>实际上,我们经常遇到cpu利用率几乎是0,但是load非常高的情况。</p><p>这是因为我们假设了服务器其他模块全部都非常给力,没有拖后腿。但是在实际的业务中,磁盘或者网络总是会出问题的。</p><p>比如同样的业务应用场景,服务器配置一样,将高速磁盘换成低速磁盘,会明显感受到应用性能的降低。</p><p>但是如果按照前面的公式,load是不会变大的。就是说load没有真实反应服务器的性能</p><p>然后linux的一位开发者给内核打了个补丁,增加了对 TASK_UNINTERRUPTIBLE 状态进程的计数。将 TASK_UNINTERRUPTIBLE 状态的进程也计算在了load中。</p><p>在前面的文章里,我提到过TASK_UNINTERRUPTIBLE 状态。</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/5149787-7c5e72c3bcabc5e6.jpeg" img-data="{"format":"jpeg","size":34014,"width":1080,"height":608,"space":"srgb","channels":3,"depth":"uchar","density":72,"chromaSubsampling":"4:2:0","isProgressive":false,"hasProfile":false,"hasAlpha":false}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div>7dbd023628f5f4165abc23c1d67aca99<p>还是看这张图,在进行磁盘io操作的时候,进程就会进入这个状态。</p><p>TASK_UNINTERRUPTIBLE 根据名字就能猜到这个状态是不能被打断的。这对于保证某些关键操作的原子性和完整性是必要的。</p><p>比如write()操作可不能执行一半被打断。</p><p>TASK_UNINTERRUPTIBLE状态的进程,在系统里显示位D状态。</p><p>进程状态 "D" 代表 "Uninterruptible Sleep" 或 "Disk Sleep"。这通常意味着进程正在等待 I/O 操作,如从磁盘读取数据,而这个操作目前无法完成,可能是因为物理设备(如硬盘)正在忙碌,或者数据尚未准备好。</p><p>可以查询一下系统里是否有D进程</p>ps -eo pid,stat | grep -w 'D'
<p>有D进程不是啥好事,如果D进程太多,一定要分析出根因。因为D进程会显著拖慢整个系统,使load上升。</p><p>可以 cat /proc/<pid>/stack, 看到进程停在内核中的哪个函数上,结合内核的代码,猜一下到底是卡在哪里。</p><p>总结,</p><p><strong>load = 可运行的进程数 + D状态的进程数</strong></p><p>对于load可以做一个比方,每个cpu是一条道路,进程就是路上的车。单位时间通过的车辆数就是load值。</p><p>可以想象load值不会等于车的数量,因为有红绿灯的存在。绿灯就是进程在等待的资源。</p><p>
</p>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,728评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,220评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 171,936评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,976评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,981评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,468评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,843评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,817评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,353评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,384评论 3 346
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,510评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,113评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,833评论 3 338
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,290评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,419评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,055评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,577评论 2 365

推荐阅读更多精彩内容