-CPU負荷およびパフォーマンステストのCPU使用率

アウトライン

ストレステスト、我々は多くの場合、2つの指標に焦点を当てて、CPU使用率とCPU負荷を行います

  Linuxが、プロセスは、3つの状態に分けられます。

  •   ブロックされたプロセスをブロックされたプロセス

  •   実行可能なプロセス実行可能なプロセス

  •   実行中のプロセス実行中のプロセス

  プロセスがブロックされている場合、プロセスはI / Oデバイスのデータやシステムコールを待ちます。

  プロセスが実行可能状態である場合には、実行キューであり、他の実行可能なプロセスがCPUを奪い合います

 

CPUの使用率

CPU使用率が一定の期間のためのCPU使用量の統計でプログラムの実行リアルタイムの占領、中のCPUの割合を指します。

この指標によってCPUが占有されている一定期間の場合に見ることができます

 

CPUの負荷(負荷) 

  これは、タスクキューが処理されるのを待っている(実行可能)プロセス、(ランニング)を実行しているの合計数を参照し、実行する準備ができて

負荷平均 

  それが指しているのプロセスの特定の時間キューの平均数(実行しているか、CPU上で実行するために待機している)内で実行されます

  途中で、Linuxのトップコマンドがあり、最新の1分、5分、15分のシステムの平均負荷

  プロセスは、以下の条件を満たしている場合、それは実行キューに配置されます

  - それは、I / O操作の結果を待っていません

  - それは(つまり、何のコール待ちではありません)待ち状態に入るためのイニシアチブを取ることはありません。

  - 停止されていません

 

コンピューティングのCPU負荷

  タスクが最終的に処理するために、CPUコアに割り当てることがされているため、CPUの数とCPUコアの数は、CPUの負荷に影響を与えます。

  シングルコアよりも良い良いCPU、デュアルコアよりも優れた2種類のCPU。したがって、除去CPU性能の差は、CPU負荷がコアの数に基づいて計算されます。

  「その多くの負荷がどのように多くのコアがあります」。ように1.00の単核、2.00の二核負荷の負荷。そして。

 

CPU負荷を示しています

 

我々は、すべてのエレベーターを取るためにエレベーターを取らなければなりません。エレベーターは10人を立て、そして1-10人々はエレベーターを取る際に、エレベータは負荷とみなすことができることをできると仮定すると、<1;
ちょうど10時に、負荷= 1;
10人以上と、負荷> 1;
15人の個人が存在する場合エレベーターを取る、それはジェットコースターに直接10人を持つことである、5人は待たなければなりません。
この時、エレベータ荷重= 15/10 = 1.5
すなわち、現在の全負荷運転1.5のシステム負荷、また、全負荷要求待ちの50%に相当します

 

負荷平均の臨界値については、に基づいて、2つの判決は、業界があります

負荷平均<= CPU核数* 0.7

負荷平均<= CPU核数 - 1

 

なぜ高いケースの負荷、低CPU使用率?

  それでもエレベーターを説明するために例を取ります。エレベーターを取るために20人の合計を仮定します。エレベーターは5分間実行します。二つの実験の間に、ダウン10人の最初のバッチ、10人、エレベーターや他の人の第二のバッチは入って来、プラスの期間を閉じると、3分でなければなりません。この場合、エレベーターの利用率は約50%です。負荷のジェットコースターは2です。私たちのCPU(スレッド)過度の実行中のプロセスに対応し、頻繁にコンテキストスイッチが少なくCPUのタイムスライス(低CPU使用率)と実際の操作で、その結果、多くのCPU時間を消費し、多くのプロセスがあります実行されるように(高負荷)を待っています。 

 

CPU使用率と負荷値レベルは必ずしも直接関係ありません

  我々一般的に圧力がCPU使用率とロード値を測定したときと考えられますが、より高い比例関係、両方の荷重値、高いCPU使用率です。

しかし、実際には、時にはよりも低い、高い、CPU使用率をロードします(マルチコアより偏在状況が発生する可能性があります)。

  タスクキューは、アプリケーションが戻り同期メッセージの処理、CPUのタイムスライスまたはこれらのスレッドに割り当てられるのを待っている間時に、処理されるのを待っているので、負荷があります。

そして、実際にCPUのスレッドが必要ですが、一時的に後の時間スロットで仕事を放棄しなければならなかった人たちが中断されていません。

  CPU利用率高也并不意味着负载就一定大,可能这个任务是一个CPU密集型的。CPU低利用率的情况下也会有高Load Average的情况。当CPU分配时间

片以后,是否使用完全取决于使用者,因此完全可能出现低利用率高Load Average的情况。

  因此在程序设计的时候要考虑如何利用好CPU的这个资源,如何均匀的将压力分摊到各个CPU 上(有时候一个线程在不断循环,导致单个CPU负荷很高)

 

再举例

  公共电话亭里有一个人在打电话,后面有四个人在等待,每人限定使用电话一分钟。若有人一分钟之内没有打完电话,只能挂掉电话去排队,等待下一

轮。公共电话在就相当于CPU,而正在打电话或等待打电话的人就相当于任务数。

  在电话亭使用过程中,肯定会有人打完电话走掉,有人没有打完电话而选择重新排队,更会有新增的人在这儿排队。人数的变化就相当于任务数的增减。

为了统计平均负载情况,我们5秒钟统计一次人数,并在第1、5、15分钟的时候对统计情况取平均值,从而形成第1、5、15分钟的平均负载。

  有的人拿起电话就打,打满1分钟,有的人可能前三十秒在找号码,或者犹豫要不要打,后三十秒才真正开始打。如果把电话看作CPU,人数看作任务,

我们可以说前一个人(任务)的CPU利用率高,后一个人(任务)的CPU利用率低。当然, CPU并不会在前三十秒工作,后三十秒歇着,它一直在处于load

状态。

  有的程序涉及到大量的计算,所以CPU利用率就高,而有的程序牵涉到计算的部分很少,CPU利用率自然就低。但无论CPU的利用率是高是低,跟后面有多少任务在排队没有必然关系(cpu利用率和load没有必然关系)。

 

  在Linux系统中,可以通过命令看到系统平均负载load-average的输出


  uptime

 

 

 

  top

 

 

  saq -q

runq-sz:运行队列的长度(等待运行的进程数)

plist-sz:进程列表中进程(processes)和线程(threads)的数量

ldavg-1:最后1分钟的系统平均负载(Systemload average)

ldavg-5:过去5分钟的系统平均负载

ldavg-15:过去15分钟的系统平均负载

 

おすすめ

転載: www.cnblogs.com/Zfc-Cjk/p/11528936.html