萌新筆記——linux下查看記憶體的使用情況

来源:http://www.cnblogs.com/chinxi/archive/2016/12/20/6200902.html
-Advertisement-
Play Games

windows上有各種軟體可以進行“一鍵加速”之類的操作,釋放掉一些記憶體(雖然我暫時不知道是怎麼辦到的,有待後續學習)。而任務管理器也可以很方便地查看各進程使用的記憶體情況,如下圖: 同樣地,linux下也有一些方法來查看記憶體的使用情況。 一、free 對於free命令,可以加上-m參數,使其顯示單位 ...


  windows上有各種軟體可以進行“一鍵加速”之類的操作,釋放掉一些記憶體(雖然我暫時不知道是怎麼辦到的,有待後續學習)。而任務管理器也可以很方便地查看各進程使用的記憶體情況,如下圖:

 

  同樣地,linux下也有一些方法來查看記憶體的使用情況。

 

 

一、free

  對於free命令,可以加上-m參數,使其顯示單位為Mb。如下:

[ccx@ubuntu ~]$>free
             total       used       free     shared    buffers     cached
Mem:       1008504     547364     461140      12836      53984     254508
-/+ buffers/cache:     238872     769632
Swap:      1046524          0    1046524

 

[ccx@ubuntu ~]$>free -m
             total       used       free     shared    buffers     cached
Mem:           984        534        450         12         52        248
-/+ buffers/cache:        233        751
Swap:         1021          0       1021

 

  這裡出現了一些名詞,有些是我不知道的,我專門去查了一下它們所代表的含義。

 

  total used free shared buffers cached
Mem 表示物理 記憶體總量

表示總計分配給緩存(包含buffers 與cache )使用的數量,但其中可能部分緩存並未實際使用

未被分配的記憶體 共用記憶體 系統分配但未被使用的buffers 數量 系統分配但未被使用的cache 數量
    實際使用的buffers 與cache 總量,也是實際使用的記憶體總量 未被使用的buffers 與cache 和未被分配的記憶體之和,這就是系統當前實際可用記憶體      
Swap            

 

  同樣是做為緩存,buffers和cache又有啥區別呢?

  於是又查了些資料,發現buffers實際應該是叫“緩衝”,其英文解釋是:A buffer is something that has yet to be "written" to disk.

  就是說,buffers是將要寫入硬碟中的數據緩存。

  而cache的英文解釋:A cache is something that has been "read" from the disk and stored for later use.

  就是說,cache是從硬碟或者存儲設備讀進電腦後緩存在記憶體中的數據。

  想起看《電腦組成原理》的時候,有看到因特爾的cpu與記憶體之間有cache,這之間好像有什麼區別的樣子。

  繼續查資料,發現了page cache 和 buffer cache。簡單說來,page cache用來緩存文件數據,buffer cache用來緩存磁碟數據。在有文件系統的情況下,對文件操作,那麼數據會緩存到page cache,如果直接採用dd等工具對磁碟進行讀寫,那麼數據會緩存到buffer cache。 

  對於cache和buffer,cached是cpu與記憶體間的,buffer是記憶體與磁碟間的,都是為瞭解決速度不對等的問題。

  在free中,buffer 是buffer cache的記憶體,是塊設備的讀寫緩衝區;cache是page cache的記憶體, 文件系統的cache。

  關於buffer與chche,這裡就不多說了,最後的鏈接5里講得挺清楚了。

 

  這裡還有一個名詞,Swap,即虛擬記憶體。當物理記憶體不夠用的時候,就要釋放掉一部分空間,以供當前運行程式使用。這些被釋放掉的記憶體的數據就被臨時保存在虛擬記憶體中。但是,並非所有的數據都全被保存,只有那些使用malloc或new生成的對象,他們在文件中並沒有相應的“儲備”文件,被稱為匿名記憶體數據,需要臨時地存進Swap。故Swap又稱匿名數據交換空間。在鏈接3中有其說明。

  至於shared,暫時沒查到與之相關的資料,只是在某鏈接里提了一下其不常用。

 

學習時參考的鏈接:

  1、http://www.splaybow.com/post/linuxmemusage.html

  2、http://ludihua.blog.51cto.com/4601284/1569816

  3、http://www.cnblogs.com/my_life/articles/4629555.html

  4、http://www.jb51.net/LINUXjishu/10945.html

  5、http://www.cnblogs.com/chenpingzhao/p/5161844.html  

 

 

二、top命令

  top命令就好像是“linux下的任務管理器”:

 

 

  其中,第一行的內容與uptime命令的結果是一樣的

[ccx@ubuntu ~]$>uptime
 10:05:01 up 34 min,  1 user,  load average: 0.00, 0.11, 0.16

 

  第二行的名詞也比較好理解,就是進程總數與處於R、S、T、Z狀態下的進程數:

Tasks total running sleeping stopped zombie
  總數 執行 等待(睡眠) 暫停 僵屍
  181 2 179 0 0

 

  第三行就是CPU的使用情況了,如下:


 

%Cpu(s)  
us 用戶空間占用CPU百分比
sy 內核空間占用CPU百分比
ni 用戶進程空間內改變過優先順序的進程占用CPU百分比
id 空閑CPU百分比
wa 等待輸入輸出的CPU時間百分比
hi CPU服務於硬體中斷所耗費的時間總額
si CPU服務軟中斷所耗費的時間總額
st Steal Time

 

 

 

  第四、五行就是記憶體的使用情況了,和free命令里相似。

 

  然後是列表的含義:

 

PID 進程ID
USER 進程所有者
PR 優先順序
NI nice值,負值表示高優先順序,正值表示低優先順序
VIRT 進程使用的虛擬記憶體總量
RES 進程使用的、未被換出的物理記憶體大小
SHR 共用記憶體大小
S 進程狀態
%CPU 上次更新到現在的CPU時間占用百分比
%MEM 進程使用的物理記憶體百分比
TIME+ 進程使用CPU總時間
COMMAND 命令名、命令行

 

 

 

  預設情況下只顯示這些比較重要的信息。在TOP界面下,按f可以修改顯示的內容。這個界面我並不是很懂,就不敘述了。

 

學習時參考的鏈接:

  http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=1684&fromuid=34304

  http://jingyan.baidu.com/article/4d58d5412917cb9dd4e9c0ed.html

 

 

三、vmstat命令

[ccx@ubuntu ~]$>vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0     76 187932 154112 372228    0    0   143    32   36   90  1  1 94  3  0

 

  具體參數如下表:

r The number of processes waiting for run time.    處於運行隊列中的內核線程數目(進程數)。
b The number of processes in uninterruptible sleep. 置於等待隊列(等待資源、等待輸入/輸出)的內核線程數目。 處於block隊列中不可中斷的進程數
swpd the amount of virtual memory used.  可用的虛擬交換記憶體
free the amount of idle memory. 空閑記憶體
buff the amount of memory used as buffers. 已用緩衝數目
cache the amount of memory used as cache. 已用緩存數目
si Amount of memory swapped in from disk (/s). 從磁碟到記憶體的交換頁數目 (單位/S)
so Amount of memory swapped to disk (/s). 從交換記憶體到磁碟的交換頁數目(單位/S)
bi Blocks received from a block device (blocks/s). 接收到塊設備的塊數(塊/秒)
bo Blocks sent to a block device (blocks/s). 發送到塊設備的塊數(塊/秒)
in The number of interrupts per second, including the clock. 每秒中斷數,包括時鐘中斷
cs The number of context switches per second. 每秒上下文切換數
us Time spent running non-kernel code. (user time, including nice time) 用戶時間,處於用戶模式的時間百分比
sy Time spent running kernel code. (system time) 系統時間,處於內核模式的時間百分比
id Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time. CPU空閑時間,空閑時間百分比
wa Time spent waiting for IO. Prior to Linux 2.5.41, included in idle. CPU 空閑時間,在此期間系統有未完成的磁碟/NFS I/O 請求
wt Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown. 來自於虛擬機偷取的CPU所占的百分比(這個不會翻譯...)

 

 

學習時參考的鏈接:

  http://blog.csdn.net/zhuying_linux/article/details/7336869

  http://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • NULL ...
  • 打開驅動精靈 系統診斷 找一個可修複的驅動點擊 選擇連不上網中的查看更多 有連不上網路,網路連接受限,解決無線間歇性掉網問題 進入電腦管理 設備管理 修改無線網路屬性(名稱含有wireless) 問題可以解決了! ...
  • 什麼是babun babun是windows上的一個第三方shell,在這個shell上面你可以使用幾乎所有linux,unix上面的命令,他幾乎可以取代windows的shell。用官方的題目說就是A Windows shell you will love! babun的幾個特點 使用babun無 ...
  • 關於虛擬化,原理的東西是非常複雜的,要想完全理解,沒有足夠的耐心是不不能完全學透這部分內容的。那下麵我主要以資源彙總的形式把一些資料羅列出來,幫助大家快速理解虛擬化,快速使用和配置。 為什麼要虛擬化: 提高資源的利用率:硬體的資源和使用率提高。【比如阿裡雲的虛擬化vps 虛擬機】 虛擬化分類: 軟體 ...
  • 1》追加CentOS 6.5的epel及remi源。 安裝PHP5.6 ...
  • 使用win10遠程式控制制ubuntu16.04,網上很多需要安裝xfce桌面的。今天介紹一下,不需要安裝其他桌面,使用Ubuntu16.04自帶桌面,漂亮美觀。 Ubuntu16.04端: 1、打開終端,安裝xrdp,vncserver 2、安裝desktop sharing(Ubuntu16.04默 ...
  • 簡介 top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。 top顯示系統當前的進程和其他狀況,是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前臺執行該命令,它將獨占前臺,直到用戶終止該程式為止. 比較準確的說,t ...
  • #ldap 安裝配置 環境Centos7#安裝 yum install -y openldap openldap-clients openldap-servers migrationtools pam_ldap python-ldap# 關閉防火牆 systemctl stop firewalld. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...