負載的定義:
Tim O'Reilly and Crew, p.726
平均負載試圖度量任何時間的活動進程數量。作為cpu利用率的度量,平均負載是很簡單的,沒有精確的定義,但很有用。
Adrian Cockcroft, p.229
平均負載是當前cpu上的運行隊列長度和正在運行的任務數之和。在Solaris 2.0 and 2.2平均負載不包括正在運行的任務數,這個bug在Solaris 2.3已經修正。
定義3
平均負載是變成有效狀態的進程(原先等待資源排隊)數加上當前運行的進程數。
定義4
Linux遵循了傳統Unix的標準,它統計的load average是在一個時間段中處於可運行或處於運行狀態的進程平均數量加上處於D狀態的進程
(R = 運行 S = 休眠 D = 等待 )。
Linux上的load average表明的是系統的要完成的"工作", "工作"既有CPU密集的程序,也有I/O密集的程序。或者是CPU和I/O並重的程序。
定義5
通過統計運行在cpu上運行的和可運行的進程,unix統計平均負載。linux和unix一樣,但是也統計在不可中斷睡眠狀態的進程。不可中斷睡眠狀態的進程通常意味著一個進程阻塞在I/o,例如等待磁碟。
平均的定義
平均負載是負載的移動平均,top顯示的3個數字是1分鐘,5分鐘,15分鐘的移動平均
linux查看平均負載
apple@ubuntu:~$ procinfo
Memory: Total Used Free Buffers
RAM: 1018580 995712 22868 66244
Swap: 522072 157592 364480
Bootup: Wed Jun 3 07:50:11 2009 Load average: 3.75 3.16 3.47 6/264 11601
user : 00:40:03.05 19.5% page in : 16083696
nice : 00:02:09.05 1.0% page out: 15227028
system: 01:35:21.93 46.4% page act: 2246522
IOwait: 00:40:05.57 19.5% page dea: 2297177
hw irq: 00:01:01.68 0.5% page flt: 6246530
sw irq: 00:01:39.03 0.8% swap in : 19640
idle : 00:25:03.91 12.2% swap out: 43581
uptime: 03:25:23.79 context : 26731214
irq 0: 193 timer irq 12: 479257 i8042
irq 1: 5460 i8042 irq 14: 1552361 ata_piix
irq 3: 6 irq 15: 0 ata_piix
irq 4: 6 irq 16: 1384413 uhci_hcd:usb5, i9
irq 6: 2 floppy irq 17: 74792 Intel ICH6
irq 7: 0 parport0 irq 18: 0 uhci_hcd:usb4
irq 8: 20419 rtc0 irq 19: 36623 uhci_hcd:usb3, et
irq 9: 0 acpi irq 23: 0 ehci_hcd:usb1, uh
sda 744351r 808004w sda6 220811r 25714w
sda1 35r 0w sda7 36342r 11954w
sda2 4r 0w sda8 4549r 2245w
sda5 839r 4w sda9 481744r 768087w
lo TX 364.71KiB RX 364.71KiB vmnet1 TX 0.00B RX 0.00B
eth0 TX 1.72MiB RX 9.80MiB vmnet8 TX 0.00B RX 0.00B
apple@ubuntu:~$ uptime
11:17:47 up 3:27, 2 users, load average: 3.81, 3.30, 3.47
apple@ubuntu:~$
平均負載的引申含義
假如系統有M個核心或者處理器而且平均負載是M,說明系統充分利用。如果平均負載大於M,說明多餘的進程在被執行前必須在可運行隊列中等待。
當平均負載小於M,說明系統性能不是被cpu能力限制的。
你不必擔心平均負載,除非平均負載持續的高於系統核心數或者處理器數。
部分內容參考於網路資源