ホームページ > バックエンド開発 > PHPチュートリアル > linuxloadavg アルゴリズム_PHP チュートリアル

linuxloadavg アルゴリズム_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:26:14
オリジナル
905 人が閲覧しました

linux loadavg アルゴリズム
投稿者: biti_rainy
今日、CPU 負荷の計算方法について Linux のソースコードを読み、同時に Google であちこち検索して参考にしたのですが、長い間混乱していましたが、ついに計算を理解しました。 CPU 負荷の計算方法は、単純なモバイル算術平均ではありません。
Linux の場合、サンプリング計算のロード時間間隔は 5 秒で、これはソース コードで定義された固定数値であり、そのサンプリング構造により、動的メモリ ファイル システム /proc/loadavg および他のツールの出力を通じてタイムリーなデータを動的に取得できます。 uptime/top/sar などはすべてメモリ データを読み取ることによって生成されます。ここでは主にカーネル アルゴリズムに焦点を当てます。
5 秒間隔で、CPU ステータス データ、つまり実行キュー サイズが動的にサンプリングされます。これには、CPU で実行中のプロセスの数と 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) */
3 つの定数はそれぞれ 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 に従って計算された負荷がload1(t-1)、現在のサンプリング実行キューのサイズが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


移動平均間隔が大きいほど、現在の実行キューのサイズが移動平均に与える影響は小さくなる傾向にあることがわかります。
なぜこの数字が選ばれるかというと、微積分の知識が関係しているので、生成される画像がより滑らかになります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/532000.html技術記事 linux loadavg アルゴリズム 投稿者: biti_rainy 今日、私は CPU 負荷の計算方法について Linux のソースコードを読み、同時に Google で参考になるものをあちこち探しましたが、長い間混乱していましたが、最終的に CPU LOA を理解しました。 ..
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート