Linux中查看負載

行車過橋

一只單核的處理器可以形象得比喻成一條單車道。設想下,你現在需要收取這條道路的過橋 費 — 忙于處理那些將要過橋的車輛。你首先當然需要了解些信息,例如車輛的載重、以及 還有多少車輛正在等待過橋。如果前面沒有車輛在等待,那么你可以告訴后面的司機通過。 如果車輛眾多,那么需要告知他們可能需要稍等一會。

因此,需要些特定的代號表示目前的車流情況,例如:

0.00 表示目前橋面上沒有任何的車流。 實際上這種情況與 0.00 和 1.00 之間是相同的,總而言之很通暢,過往的車輛可以絲毫不用等待的通過。

1.00 表示剛好是在這座橋的承受范圍內。 這種情況不算糟糕,只是車流會有些堵,不過這種情況可能會造成交通越來越慢。

超過 1.00,那么說明這座橋已經超出負荷,交通嚴重的擁堵。 那么情況有多糟糕? 例如 2.00 的情況說明車流已經超出了橋所能承受的一倍,那么將有多余過橋一倍的車輛正在焦急的等待。3.00 的話情況就更不妙了,說明這座橋基本上已經快承受不了,還有超出橋負載兩倍多的車輛正在等待。

上面的情況和處理器的負載情況非常相似。一輛汽車的過橋時間就好比是處理器處理某線程 的實際時間。Unix 系統定義的進程運行時長為所有處理器內核的處理時間加上線程 在隊列中等待的時間。

和收過橋費的管理員一樣,你當然希望你的汽車(操作)不會被焦急的等待。所以,理想狀態 下,都希望負載平均值小于 1.00 。當然不排除部分峰值會超過 1.00,但長此以往保持這 個狀態,就說明會有問題,這時候你應該會很焦急。

“所以你說的理想負荷為 1.00 ?”

嗯,這種情況其實并不完全正確。負荷 1.00 說明系統已經沒有剩余的資源了。在實際情況中 ,有經驗的系統管理員都會將這條線劃在 0.70:

“需要進行調查法則”: 如果長期你的系統負載在 0.70 上下,那么你需要在事情變得更糟糕之前,花些時間了解其原因。

“現在就要修復法則”:1.00 。 如果你的服務器系統負載長期徘徊于 1.00,那么就應該馬上解決這個問題。否則,你將半夜接到你上司的電話,這可不是件令人愉快的事情。

“凌晨三點半鍛煉身體法則”:5.00。 如果你的服務器負載超過了 5.00 這個數字,那么你將失去你的睡眠,還得在會議中說明這情況發生的原因,總之千萬不要讓它發生。

那么多個處理器呢?我的均值是 3.00,但是系統運行正常!

哇喔,你有四個處理器的主機?那么它的負載均值在 3.00 是很正常的。

在多處理器系統中,負載均值是基于內核的數量決定的。以 100% 負載計算,1.00 表示單個處理器,而 2.00 則說明有兩個雙處理器,那么 4.00 就說明主機具有四個處理器。

回到我們上面有關車輛過橋的比喻。1.00 我說過是“一條單車道的道路”。那么在單車道 1.00 情況中,說明這橋梁已經被車塞滿了。而在雙處理器系統中,這意味著多出了一倍的 負載,也就是說還有 50% 的剩余系統資源 — 因為還有另外條車道可以通行。

所以,單處理器已經在負載的情況下,雙處理器的負載滿額的情況是 2.00,它還有一倍的資源可以利用。


多核與多處理器

先脫離下主題,我們來討論下多核心處理器與多處理器的區別。從性能的角度上理解,一臺主 機擁有多核心的處理器與另臺擁有同樣數目的處理性能基本上可以認為是相差無幾。當然實際 情況會復雜得多,不同數量的緩存、處理器的頻率等因素都可能造成性能的差異。

但即便這些因素造成的實際性能稍有不同,其實系統還是以處理器的核心數量計算負載均值 。這使我們有了兩個新的法則:

“有多少核心即為有多少負荷”法則: 在多核處理中,你的系統均值不應該高于處理器核心的總數量。

“核心的核心”法則: 核心分布在分別幾個單個物理處理中并不重要,其實兩顆四核的處理器 等于 四個雙核處理器 等于 八個單處理器。所以,它應該有八個處理器內核。


讓我們再來看看 uptime 的輸出

~ $ uptime

23:05 up 14 days, 6:08, 7 users, load averages: 0.65 0.42 0.36

這是個雙核處理器,從結果也說明有很多的空閑資源。實際情況是即便它的峰值會到 1.7,我也從來沒有考慮過它的負載問題。

那么,怎么會有三個數字的確讓人困擾。我們知道,0.65、0.42、0.36 分別說明上一分鐘、最后五分鐘以及最后十五分鐘的系統負載均值。那么這又帶來了一個問題:

我們以哪個數字為準?一分鐘?五分鐘?還是十五分鐘?

其實對于這些數字我們已經談論了很多,我認為你應該著眼于五分鐘或者十五分鐘的平均數 值。坦白講,如果前一分鐘的負載情況是 1.00,那么仍可以說明認定服務器情況還是正常的。 但是如果十五分鐘的數值仍然保持在 1.00,那么就值得注意了(根據我的經驗,這時候你應 該增加的處理器數量了)。

那么我如何得知我的系統裝備了多少核心的處理器?

在 Linux 下,可以使用

cat /proc/cpuinfo

獲取你系統上的每個處理器的信息。如果你只想得到數字,那么就使用下面的命令:

grep 'model name' /proc/cpuinfo | wc -l

Popularity: 11% [?]



1、cat /proc/loadavg

0.27 0.36 0.37 4/83 4828/

參數含義

1.平均負載:0.54, 0.40, 0.20

最近1分鐘、5分鐘、15分鐘系統的負載

2.進程數:4/83

分子是正在運行的進程數,分母是進程總數

3.進程號:4828

最近運行的進程ID號


2、uptime
名稱: uptime
使用權限: 所有使用者
使用方式: uptime [-V]
說明: uptime 提供使用者下面的資訊,不需其他參數:
現在的時間 系統開機運轉到現在經過的時間 連線的使用者數量 最近一分鐘,五分鐘和十五分鐘的系統負載
參數: -V 顯示版本資訊。
范例: uptime
其結果為:
10:41am up 5 days, 10 min, 1 users, load average: 0.00, 0.00, 1.99

參數含義

1.當前時間??04:03:58

2.系統已運行的時間?10 days, 13:19

3.前在線用戶??1 user

4.平均負載:0.54, 0.40, 0.20

最近1分鐘、5分鐘、15分鐘系統的負載


/proc/uptime文件里包含兩個數字,如:

[root@localhost ~]# cat /proc/uptime
1232468.44 1111331.67

第一個數值代表系統總的啟動時間,第二個數值則代表系統空閑的時間,都是用秒來表示的。如果系統里第二個數字比第一個數字還要大,則說明你的cpu是多核的,cpu0上閑了一秒, cpu1上閑了兩秒,加起就是三秒。



3、w
功能說明:顯示目前登入系統的用戶信息。
語  法:w [-fhlsuV][用戶名稱]
補充說明:執行這項指令可得知目前登入系統的用戶有那些人,以及他們正在執行的程序。單獨執行w
指令會顯示所有的用戶,您也可指定用戶名稱,僅顯示某位用戶的相關信息。
參  數:
-f  開啟或關閉顯示用戶從何處登入系統。
-h  不顯示各欄位的標題信息列。
-l  使用詳細格式列表,此為預設值。
-s  使用簡潔格式列表,不顯示用戶登入時間,終端機階段作業和程序所耗費的CPU時間。
-u  忽略執行程序的名稱,以及該程序耗費CPU時間的信息。
-V  顯示版本信息。
4、top
功能說明:顯示,管理執行中的程序。
語  法:top [bciqsS][d <間隔秒數>][n <執行次數>]
補充說明:執行top指令可顯示目前正在系統中執行的程序,并通過它所提供的互動式界面,用熱鍵加以管理。
參  數:
 b  使用批處理模式。
 c  列出程序時,顯示每個程序的完整指令,包括指令名稱,路徑和參數等相關信息。
 d<間隔秒數>  設置top監控程序執行狀況的間隔時間,單位以秒計算。
 i  執行top指令時,忽略閑置或是已成為Zombie的程序。
 n<執行次數>  設置監控信息的更新次數。
 q  持續監控程序執行的狀況。
 s  使用保密模式,消除互動模式下的潛在危機。
 S  使用累計模式,其效果類似ps指令的"-S"參數。

5、tload
功能說明:顯示系統負載狀況。
語  法:tload [-V][-d <間隔秒數>][-s <刻度大小>][終端機編號]
補充說明:tload指令使用ASCII字符簡單地以文字模式顯示系統負載狀態。假設不給予終端機編號,則會在執行tload指令的終端機顯示負載情形。
參  數:
 -d<間隔秒數>  設置tload檢測系統負載的間隔時間,單位以秒計算。
 -s<刻度大小>  設置圖表的垂直刻度大小,單位以列計算。

 -V  顯示版本信息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273347.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273347.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273347.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

flask小demo-數據查詢

mysqlconn-flask.py 1 # -*- coding: utf-8 -*-2 #codingutf-83 4 import os5 import mysql.connector6 from flask import Flask, request, render_template7 8 app Flask(__name__)9 10 def db(): 11 # 注意把password設為你的root口令: 12 conn mysql.connect…

js實現的文件下載

/** * Javascript 多文件下載 * author Barret Lee * email barret.chinagmail.com */var Downer (function(files) { var h5Down !/Trident|MSIE/.test(navigator.userAgent); // try{ // h5Down document.createElement("a").hasOwnProperty("download&quo…

Jersey注解詳解

REST 在 2000 年由 Roy Fielding 在博士論文中提出&#xff0c;他是 HTTP 規范 1.0 和 1.1 版的首席作者之一。 REST 中最重要的概念是資源&#xff08;resources&#xff09;&#xff0c;使用全球 ID&#xff08;通常使用 URI&#xff09;標識。客戶端應用程序使用 HTTP 方法&…

Struts2配置文件詳解

解決在斷網環境下,配置文件無提示的問題我們可以看到Struts.xml在斷網的情況下,前面有一個嘆號,這時,我們按alt/ 沒有提示,這是因為” http://struts.apache.org/dtds/struts-2.0.dtd”是一個網絡地址,如果上網的話,IDE會自動幫我們下載此文件,如果斷網就沒有辦法了,但是我們還…

mysql插入圖片數據

import java.sql.*; import java.util.Scanner; import java.io.*; public class mysql插入圖片 { private static final File File null;private static String String;public static Connection getConn() { Connection conn null; try { Class.forName("com.…

mybatis插入圖片處理--mysql

1. 數據庫Scheme 1.數據庫SchemeDROP TABLE IF EXISTS user_graphic_t; /*!40101 SET saved_cs_client character_set_client */; /*!40101 SET character_set_client utf8 */; CREATE TABLE user_graphic_t ( id int(11) NOT NULL AUTO_INCREMENT, graph…

careercup-高等難度 18.6

18.6 設計一個算法&#xff0c;給定10億個數字&#xff0c;找出最小的100萬個數字。假定計算機內存足以容納全部10億個數字。 解法&#xff1a; 方法1&#xff1a;排序 按升序排序所有的元素&#xff0c;然后取出前100萬個數&#xff0c;時間復雜度為O(nlog(n)) 方法2&#xff…

不浮躁的社會是什么樣的?

不浮躁就是該吃飯吃飯&#xff0c;該睡覺睡覺。該看書看書&#xff0c;該洗澡洗澡。聊事時聊事&#xff0c;陪朋友時陪朋友。萬事各得其所&#xff0c;各安其分&#xff0c;專心在此時此刻&#xff0c;做每一件事。而不是吃飯時想著別人的魚翅海參&#xff0c;睡覺時想著發票報…

java jre 中導入導出證書

導入證書&#xff1a; 將所要導入的證書放到Javahome的jre/lib/security文件夾中 運行命令jre/bin/keytool-import -alias cacerts -keystore cacerts -file 證書名稱 輸入默認密碼&#xff1a;changeit 導入過程中會交互詢問是否信任該證書&#xff0c;輸入 yes 導出證書 …

各種類庫網址學習

http://shouce.jb51.net/net/index.html轉載于:https://www.cnblogs.com/chenls/p/4362730.html

圖片的base64編碼實現以及網頁上顯示

生成、解析base64編碼的圖片 //圖片轉化成base64字符串 public static String GetImageStr(<span style"font-family: Arial, Helvetica, sans-serif;">String imgFile</span><span style"font-family: Arial, Helvetica, sans-serif;">…

nginx windows 下安裝和配置

去nginx官網下載相應的版本 下載地址&#xff1a;http://nginx.org/download/nginx-1.6.2.zip 下載完成解壓放到你喜歡的目錄下&#xff1b;樓主的放到了F:\nginx 進入windows的cmd窗口&#xff0c;輸入如下所示的命令&#xff1a; C:\Users\YiXian>F: F:\>cd nginx s…

c/c++學習書籍

一、c Primer . 目錄內容關鍵字第一章 面向過程編程&#xff0c;面向對象編程&#xff0c;泛型 轉載于:https://www.cnblogs.com/bzsh/p/4362930.html

applicationContext.xml 配置文件的存放位置

web.xml中classpath:和classpath*: 有什么區別? classpath&#xff1a;只會到你的class路徑中查找找文件; classpath*&#xff1a;不僅包含class路徑&#xff0c;還包括jar文件中(class路徑)進行查找. 存放位置&#xff1a; 1&#xff1a;src下面 需要在web.xml中定義如下&…

完美攻略心得之圣魔大戰3(Castle Fantisia)艾倫希亞戰記(艾倫西亞戰記)包含重做版(即新艾倫希亞戰記)...

&#xff08;城堡幻想曲3&#xff0c;糾正大家個錯誤哦&#xff0c;不是圣魔大戰3&#xff0c;圣魔大戰是城堡幻想曲2&#xff0c;圣魔大戰不是個系列,艾倫西亞戰記艾倫希亞戰記,一個游戲日文名&#xff1a;タイトル キャッスルファンタジア &#xff5e;エレンシア戦記&#x…

費波納茨

//非遞歸實現static int[] fun(int num){int result[] new int[num];for (int i 1; i < num; i) {if(i<3){result[i-1]i-1;}else{result[i-1]result[i-2]result[i-3];}}return result;} //遞歸實現static int method(int num){int result 0;if(num < 2){result --n…

Hadoop生態上幾個技術的關系與區別:hive、pig、hbase 關系與區別

初接觸Hadoop技術的朋友肯定會對它體系下寄生的個個開源項目糊涂了&#xff0c;我敢保證Hive,Pig,HBase這些開源技術會把你搞的有些糊涂&#xff0c;不要緊糊涂的不止你一個&#xff0c;如某個菜鳥的帖子的疑問&#xff0c;when to use Hbase and when to use Hive&#xff1f;…

可變形參

public class TestVarargs {/*** param args* YiXian* 2015-3-11*/public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("the program starting>>>>>>>>>>>");test(2,"java權威指…

解決android中Layout文件下的xml文件配好后,R類中不能自動生成相應代碼

不能更新的原因: 1.在xml文件中代碼錯誤或者格式錯誤 2.eclipse 編譯器是老版本 3.布局文件的文件名有大寫字母 4.含有相同文件名、格式的xml文件解決方法: 1.找到出錯的xml文件中的錯誤代碼格式改正&#xff0c;并執行project —clean 操作 2.eclipse 選擇Project--Bu…

邏輯運算與位移運算

異或運算True ⊕ False TrueFalse ⊕ True TrueFalse ⊕ False FalseTrue ⊕ True False同或運算True ⊙ False FalseFalse ⊙ True FalseFalse ⊙ False TureTrue ⊙ True Ture或運算True || False TrueFalse || True TrueFalse || False FalseTrue || True Tru…