自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

系統(tǒng)負(fù)載:如何判斷Linux load的值是否過高

運(yùn)維 系統(tǒng)運(yùn)維
在Linux下,load表示系統(tǒng)的負(fù)載情況。load average 后面三個(gè)值代表系統(tǒng)在1分鐘、5分鐘和15分鐘的負(fù)載情況,數(shù)字越高表示系統(tǒng)負(fù)載越大,0很低,10或以上是很高。但是在非極端的情況下,怎樣的load值對(duì)系統(tǒng)而言是“高”的臨界值?本文從內(nèi)核開始進(jìn)行了分析。

接觸過和使用過unix或linux的朋友,都知道如何查看Unix/Linux load的值,這邊我也重復(fù)一下查看load的方法:

[root@aaronw ~]# uptime
13:33:37 up 7 days, 1:52, 1 user, load average: 4.15, 2.00, 3.14
[root@aaronw ~]# w
13:35:35 up 1 days, 1:54, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/1 192.168.2.2 13:33 0.00s 0.02s 0.00s w

load average 后面三個(gè)值代表系統(tǒng)在1分鐘、5分鐘和15分鐘的負(fù)載情況,都知道數(shù)字越高表示系統(tǒng)負(fù)載越大,第一直覺就是這個(gè)系統(tǒng)不行了。load average 是0的時(shí)候都認(rèn)為他很低,10的時(shí)候就覺得高,20就不用講了!但是除了這兩種極端的情況之外,那什么時(shí)候是這兩個(gè)值的臨界點(diǎn)?當(dāng)別人問起我這個(gè)問題的時(shí)候,我也不知道如何回答,在我大腦里就根本就沒有考慮過。困擾了我很久,我覺得要搞明白他!

先從linux的kernel的源碼開始吧!在linux 2.6.36版本中有這樣一段代碼:

/**
* spu_calc_load – update the avenrun load estimates.
*
* No locking against reading these values from userspace, as for
* the CPU loadavg code.
*/
static void spu_calc_load(void)
{
unsigned long active_tasks; /* fixed-point */
 
active_tasks = count_active_contexts() * FIXED_1;
CALC_LOAD(spu_avenrun[0], EXP_1, active_tasks);
CALC_LOAD(spu_avenrun[1], EXP_5, active_tasks);
CALC_LOAD(spu_avenrun[2], EXP_15, active_tasks);
}

CALC_LOAD是這樣定義:

#define LOAD_FREQ (5*HZ+1) /* 5 sec intervals */
#define EXP_1 1884 /* 1/exp(5sec/1min) as fixed-point */
#define EXP_5 2014 /* 1/exp(5sec/5min) */
#define EXP_15 2037 /* 1/exp(5sec/15min) */#define CALC_LOAD(load,exp,n) \
load *= exp; \
load += n*(FIXED_1-exp); \
load >>= FSHIFT;

從這里我們能看到取負(fù)載值的最小周期5秒,根據(jù)代碼中定義我們知道

什么是load?

load的就是一定時(shí)間內(nèi)計(jì)算機(jī)有多少個(gè)active_tasks,也就是說是計(jì)算機(jī)的任務(wù)執(zhí)行隊(duì)列的長(zhǎng)度,cpu計(jì)算的隊(duì)列。

load多少是正常?

既然load是cpu計(jì)算的隊(duì)列,那就應(yīng)該和cpu個(gè)處理方式和cpu的個(gè)數(shù)有關(guān)系。所以我個(gè)人認(rèn)為應(yīng)該按系統(tǒng)識(shí)別的cpu個(gè)數(shù)來確定load的臨界值,系統(tǒng)識(shí)別為8個(gè)cpu,那么load為8就是臨界點(diǎn),高于8就屬于over load了。

什么叫系統(tǒng)識(shí)別cpu個(gè)數(shù)?

我是這樣認(rèn)為的,這里涉及到cpu物理個(gè)數(shù)和超線程技術(shù)的問題。個(gè)人認(rèn)為4個(gè)物理cpu和2個(gè)雙核是不能夠等同的,當(dāng)然這是物理層面的事了!在系統(tǒng)里識(shí)別的都是4個(gè)CPU.所以應(yīng)該要以系統(tǒng)識(shí)別的為準(zhǔn)。畢竟是系統(tǒng)去支配他的使用。

CPU高不等同于load高

在Unix/Linux可能經(jīng)常會(huì)遇到cpu的使用率為100%,但是load卻不高!這是為什么呢?因?yàn)閹缀跛械娜蝿?wù)和會(huì)和CPU進(jìn)行交互,但是由于各個(gè)設(shè)備的使用頻率不同,造成了不能同步進(jìn)行的問題。比如說,當(dāng)對(duì)硬盤進(jìn)行讀寫的時(shí)候,出現(xiàn)IO的等待時(shí)候,事實(shí)上cpu已經(jīng)被切換到別的進(jìn)程上了。該任務(wù)就處于等待狀態(tài),當(dāng)這樣的任務(wù)過多,導(dǎo)致隊(duì)列長(zhǎng)度過大,這樣就體現(xiàn)到負(fù)載過大了,但實(shí)際是此時(shí)cpu被分配去干執(zhí)行別的任務(wù)或空閑,因此CPU高不等同于load高,load高也不能于cpu高。

原文:判斷Linux load的值是否過高

【編輯推薦】

  1. Linux系統(tǒng)Load average負(fù)載詳細(xì)解釋
  2. 大流量、高負(fù)載LVS系統(tǒng)優(yōu)化注意事項(xiàng)
  3. 查詢系統(tǒng)負(fù)載信息 Linux uptime命令詳解
責(zé)任編輯:yangsai 來源: selboo.com.cn
相關(guān)推薦

2009-12-22 14:54:19

Linux系統(tǒng)Load

2009-11-23 11:53:23

LinuxLoad averag負(fù)載

2009-12-25 15:39:54

Load averag

2019-01-02 16:12:17

Linux系統(tǒng) vmstat

2014-05-13 09:53:24

算法π值

2013-12-06 10:20:21

2017-12-06 19:00:53

2024-01-17 17:36:06

Linuxsystemd

2020-04-28 09:12:55

Linux黑客惡意軟件

2018-01-10 10:45:37

2021-03-22 11:43:07

Linux運(yùn)維Linux系統(tǒng)

2016-05-24 10:30:56

網(wǎng)站設(shè)計(jì)出色

2013-11-08 13:52:56

2018-11-26 08:49:42

CPU排查負(fù)載

2021-08-26 10:24:52

Linux 系統(tǒng)分析高負(fù)載

2014-10-09 14:35:44

HAProxy負(fù)載均衡

2013-01-10 09:47:50

辭職就業(yè)面試

2022-11-02 08:27:30

2009-06-05 11:11:11

2011-05-25 10:46:39

Javascript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)