查找系統平均負載,能夠經過top或者uptime命令查看ui
$ uptime 14:12:35 up 289 days, 18:50, 2 users, load average: 0.12, 0.09, 0.07
最後的三個數字,一次是過去 1 分鐘、5 分鐘、15 分鐘的平均負載(Load Average)。code
咱們常常會看,但你不必定正確的理解了平均負載的真正含義。orm
平均負載是單位時間內CPU的使用率嗎?0.12表明CPU使用率爲12%?有可能不少人是這麼理解的,這麼理解就錯了。three
若是你想看官方的解析,能夠經過命令 man uptime 查看,進程
英文原文以下:
System load averages is the average number of processes that are either in a runnable or uninterruptable state. A process in a runnable state is either using the CPU or waiting to use the CPU. A process in uninterruptable state is waiting for some I/O access, eg waiting for disk. The averages are taken over the three time intervals. Load averages are not normalized for the number of CPUs in a system, so a load average of 1 means a single CPU system is loaded all the time while on a 4 CPU system it means it was idle 75% of the time.
下面詳細的解析下什麼是平均負載,平均負載是指系統處於可運行狀態和不可中斷狀態的平均進程數,也就是平均活躍進程數,它和CPU使用率沒有什麼必然關係的。it
那什麼是可運行狀態進程和不可中斷狀態進程呢?可運行狀態進程是指正在使用CPU或者正在你等待CPU的進程,咱們在ps命令下看到的處於Running和Runnable的進程就是可運行狀態進程。不可中斷狀態進程是指正處於內核態關鍵流程中的進程,而且這些流程是不可中斷的,好比最多見的是等待硬件設備的I/O響應,咱們在ps命令下看到的處於Uninterruptible Sleep的進程就是不可中斷狀態進程。table
平均負載能夠簡單的理解爲單位時間內系統給的活躍進程數。model
怎樣的平均負載時合理的?硬件
最理想的狀況是平均負載等於CPU個數。平均負載高於CPU個數,說明系統已通過載。grep
查詢系統CPU個數:
grep 'model name' /proc/cpuinfo | wc -l
當一段是時間內系統的平均負載高於CPU個數的70%時,就要開始注意排查系統負載高的問題了,系統負載高了,進程的響應速度就會變慢,可能影響到系統提供的服務的正常運行。
平均負載和CPU使用率的區別
不少人在現實工做中,常常把平均負載和CPU使用率混爲一談,平均負載高了,說明活躍進程數多,並不必定CPU使用率高,
下面給你們作下總結:
平均負載是指系統處於可運行狀態和不可中斷狀態的平均進程數,包括正在使用CPU的進程和等待CPU和等待IO的進程。
CPU使用率是指在一段時間內使用CPU狀況的統計,
當系統大部分是CPU密集型進程時,二者基本時一致的;
當系統大部分是IO密集型進程時,平均負載高,但CPU使用率不必定高;
當系統有不少等待CPU進度調度的進程時,平均負載高,CPU使用率也會高。
by kocor