|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
多个成员之间重复做相同的工作,很容易因为交流沟通的时候没有进行一致性的文档要求而出现不明错误,严重影响开发进度,导致在预定时间内无法完成该项目或者完成的项目跟原先计划所要实现的项目功能不符合。算法 linux loadavg 算法
宣布人:biti_rainy
明天读linux source code关于cpu load 的盘算办法,同时在谷歌上搜刮各处参考,晕乎了半天,终究弄分明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
由此可以看出,挪动均匀距离越大,以后run queue size 对挪动均匀的影响趋势减小。
至于为何取这个数,触及到微积分方面的常识了,如许做出的图像更光滑。
既然选择了PHP,就要坚持学下去!大家有没有问自己为什么会选择学习PHP呢?就我个人而言,完全是因为兴趣,因为我的专业和计算机完全无关,但是就是对编程很赶兴趣,尤其对网络编程、web开发特别赶兴趣。 |
|