热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxloadavg算法

php教程|php手册linuxloadavg,算法,linux,loadavg,算法,发表,人,biti,rainy,今天,读,sourcephp教程-php手册linuxloa

php教程|php手册linuxloadavg算法
linuxloadavg,算法,linux,loadavg,算法,发表,人,biti,rainy,今天,读,source
php教程-php手册
linux loadavg 算法
发表人:biti_rainy
今天读linux source code关于cpu load 的计算方法,同时在google上搜索到处参考,晕乎了半天,终于弄明白cpu load 的计算方法了,并不是简单的移动算术平均。
对于linux来说,采样计算load时间间隔为5秒,这都是在source code里面定义的固定数字,其采样结构通过动态内存文件系统 /proc/loadavg 可以动态的得到适时数据,其他工具的输出,比如 uptime / top/sar 等都是读该内存数据所产生的。我们在这里主要考究kernel的算法。
对于5秒的间隔,是动态地采样cpu状态数据,也就是run queue size ,这包括正在cpu中running的进程数量以及在cpu等待队列里面的进程数量。对于linux来说,实际上会计算1分钟、5分钟、15分钟的移动平均。为此首先我们要介绍linux 里面定义的3个常量:
#define EXP_1 1884 /* 1/exp(5sec/1min) */
#define EXP_5 2014 /* 1/exp(5sec/5min) */
#define EXP_15 2037 /* 1/exp(5sec/15min) */
三个常量分别表示1/5/15分钟的常量,计算方法是:
1884 = 2048/(power(e,(5/(60*1)))) /* e = 2.71828 */
2014 = 2048/(power(e,(5/(60*5))))
2037 = 2048/(power(e,(5/(60*15))))
我们假定前一时刻按常量1884计算的load为 load1(t-1),当前采样run queue size 为 rq1,则当前load1(t) = ((load1(t-1) * 1884) + rq1 * (2048 – 1884))/2048
同理可以5分钟和15分钟移动平均的算法分别为 load5(t) = ((load5(t-1) * 2014) + rq1 * (2048 – 2014))/2048和load_15(t) = ((load15(t-1) * 2037) + rq1 * (2048 – 2037))/2048
仿bilibili网站源码,vscode 多行注视,ubuntu哈希怎么校验,tomcat xml在哪,sqlite新建语法,wordpress分享插件带赞,前端常用框架ui组件,go需要爬虫,php 数据获取,动态页面seo,c 免费下载源代码的网站,手机版网页分享代码怎么用,dede免费小说网站模板,评论页面html源码,学生信息管理系统 系统功能模块,站长 报名程序lzw

由此可以看出,移动平均间隔越大,当前run queue size 对移动平均的影响趋向减小。
至于为什么取这个数,涉及到微积分方面的知识了,这样做出的图象更平滑。

html5留言板源码,vscode运行谷歌浏览器,ubuntu 做备份,tomcat+acl保护,手机壁纸爬虫,php 去掉某个字符串,小店区seo优化哪家便宜,网站时间显示lzw

推荐阅读
author-avatar
周俊瑶zjy_963
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有