怎麼看linux的memory
linux下查看內存信息,使用free命令,具體操作和展示信息如下:
#?free?-m
total???????used???????free?????shared????buffers?????cached
Mem:?????????15918??????12821???????3097??????????0???????2601???????2542
-/+?buffers/cache:???????7676???????8241
Swap:?????????3999??????????8???????3991
其中的相關說明:
Mem:表示物理內存統計
-/+ buffers/cached:表示物理內存的緩存統計
Swap:表示硬盤上交換分區的使用情況(這裏我們不去關心)
係統的總物理內存:15918MB(16GB,因為顯存占用部分內存),但係統當前真正可用的內存並不是第一行free?標記的 3039MB,它僅代表未被分配的內存。
我們使用total1、used1、free1、used2、free2?等名稱來代表上麵統計數據的各值,1、2 分別代表第一行和第二行的數據。
total1:????表示物理內存總量。
used1:?????表示總計分配給緩存(包含buffers 與cache )使用的數量,但其中可能部分緩存並未實際使用。
free1:?????未被分配的內存。
shared1:???共享內存,一般係統不會用到,這裏也不討論。
buffers1:?係統分配但未被使用的buffers 數量。
cached1:???係統分配但未被使用的cache 數量。buffer 與cache 的區別見後麵。
used2:?????實際使用的buffers 與cache 總量,也是實際使用的內存總量。
free2:?????未被使用的buffers 與cache 和未被分配的內存之和,這就是係統當前實際可用內存。
可以整理出如下等式:
total1 = used1 + free1
total1 = used2 + free2
used1???= buffers1 + cached1 + used2
free2???= buffers1 + cached1 + free1
buffer 與cache 的區別
A buffer is something that has yet to be "written" to disk.
理解為buffer是準備寫入磁盤。
A cache is something that has been "read" from the disk and stored for later use.
從磁盤讀出來準備給用戶訪問。
Linux操作係統中內存buffer和cache的區別
我們一開始,先從Free命令說起。
Free
free 命令相對於top 提供了更簡潔的查看係統內存使用情況:
$ free
total used free shared buffers cachedMem: 255268 238332 16936 0 85540 126384-/+ buffers/cache: 26408 228860Swap: 265000 0 265000
Mem:表示物理內存統計
-/+ buffers/cached:表示物理內存的緩存統計
Swap:表示硬盤上交換分區的使用情況,這裏我們不去關心。
係統的總物理內存:255268Kb(256M),但係統當前真正可用的內存b並不是第一行free 標記的 16936Kb,它僅代表未被分配的內存。
我們使用total1、used1、free1、used2、free2 等名稱來代表上麵統計數據的各值,1、2 分別代表第一行和第二行的數據。
total1:表示物理內存總量。
used1:表示總計分配給緩存(包含buffers 與cache )使用的數量,但其中可能部分緩存並未實際使用。
free1:未被分配的內存。
shared1:共享內存,一般係統不會用到,這裏也不討論。
buffers1:係統分配但未被使用的buffers 數量。
cached1:係統分配但未被使用的cache 數量。buffer 與cache 的區別見後麵。
used2:實際使用的buffers 與cache 總量,也是實際使用的內存總量。
free2:未被使用的buffers 與cache 和未被分配的內存之和,這就是係統當前實際可用內存。
可以整理出如下等式:
total1 = used1 + free1total1 = used2 + free2used1 = buffers1 + cached1 + used2free2 = buffers1 + cached1 + free1
buffer 與cache 的區別
A buffer is something that has yet to be "written" to disk. A cache is something that has been "read" from the disk and stored for later use.
更詳細的解釋參考:Difference Between Buffer and Cache
對於共享內存(Shared memory),主要用於在UNIX 環境下不同進程之間共享數據,是進程間通信的一種方法,一般的應用程序不會申請使用共享內存,筆者也沒有去驗證共享內存對上麵等式的影響。如果你有興趣,請參考:What is Shared Memory?
cache 和 buffer的區別:
Cache:高速緩存,是位於CPU與主內存間的一種容量較小但速度很高的存儲器。由於CPU的速度遠高於主內存,CPU直接從內存中存取數據要等待一定時間周期,Cache中保存著CPU剛用過或循環使用的一部分數據,當CPU再次使用該部分數據時可從Cache中直接調用,這樣就減少了CPU的等待時間,提高了係統的效率。Cache又分為一級Cache(L1 Cache)和二級Cache(L2 Cache),L1 Cache集成在CPU內部,L2 Cache早期一般是焊在主板上,現在也都集成在CPU內部,常見的容量有256KB或512KB L2 Cache。
Buffer:緩衝區,一個用於存儲速度不同步的設備或優先級不同的設備之間傳輸數據的區域。通過緩衝區,可以使進程之間的相互等待變少,從而使從速度慢的設備讀入數據時,速度快的設備的操作進程不發生間斷。
Free中的buffer和cache:(它們都是占用內存):
buffer : 作為buffer cache的內存,是塊設備的讀寫緩衝區
cache: 作為page cache的內存, 文件係統的cache
如果 cache 的值很大,說明cache住的文件數很多。如果頻繁訪問到的文件都能被cache住,那麼磁盤的讀IO 必會非常小。
如何查詢Suse linux內存真實利用率
命令:
free?-g
參數-g以GB為單位顯示.
輸出:
total???????used???????free?????shared????buffers?????cached
Mem:????????????47?????????33?????????14??????????0??????????1?????????18
-/+?buffers/cache:?????????12?????????34
Swap:????????????2??????????0??????????1
Mem: 開頭的行, 顯示的是計算了緩存/Cache等等的使用率.
第二行顯示的是去除緩存等的使用率, 也就是實際的使用率.
本例中內存實際用量是12G.
linux 怎麼釋放cache
一般情況下不建議這麼做, 如果你確定向的話還是可以的,當然你的linux別太老
首先運行sync把未存盤的cache都寫入磁盤,稍等片刻, 或者是直接運行sync 兩遍
然後 echo 1 > /proc/sys/vm/drop_caches, 就可以釋放大部分的cache了
這裏你可以選擇
1 釋放緩存的文件內容
2 釋放緩存的目錄信息
3 同時釋放緩存的目錄信息和文件內容
linux係統free命令返回如下請問是否正常??
加上cache就對了...
linux 內核內存布局怎麼看
[root@scs-2 tmp]# free
total used free shared buffers cached
Mem: 3266180 3250004 16176 0 110652 2668236
-/+ buffers/cache: 471116 2795064
Swap: 2048276 80160 1968116
下麵是對這些數值的解釋:
total:總計物理內存的大小。
used:已使用多大。
free:可用有多少。
Shared:多個進程共享的內存總額。
Buffers/cached:磁盤緩存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解釋了。
區別:第二行(mem)的used/free與第三行(-/+ buffers/cache) used/free的區別。 這兩個的區別在於使用的角度來看,第一行是從OS的角度來看,因為對於OS,buffers/cached 都是屬於被使用,所以他的可用內存是16176KB,已用內存是3250004KB,其中包括,內核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是從應用程序角度來看,對於應用程序來說,buffers/cached 是等於可用的,因為buffer/cached是為了提高文件讀取的性能,當應用程序需在用到內存的時候,buffer/cached會很快地被回收。
所以從應用程序的角度來說,可用內存=係統free memory+buffers+cached。
如上例:
2795064=16176+110652+2668236
接下來解釋什麼時候內存會被交換,以及按什麼方交換。 當可用內存少於額定值的時候,就會開會進行交換。
如何看額定值:
cat /proc/meminfo
[root@scs-2 tmp]# cat /proc/meminfo
MemTotal: 3266180 kB
MemFree: 17456 kB
Buffers: 111328 kB
Cached: 2664024 kB
SwapCached: 0 kB
Active: 467236 kB
Inactive: 2644928 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 3266180 kB
LowFree: 17456 kB
SwapTotal: 2048276 kB
SwapFree: 1968116 kB
Dirty: 8 kB
Writeback: 0 kB
Mapped: 345360 kB
Slab: 112344 kB
Committed_AS: 535292 kB
PageTables: 2340 kB
VmallocTotal: 536870911 kB
VmallocUsed: 272696 kB
VmallocChunk: 536598175 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 2048 kB
用free -m查看的結果:
[root@scs-2 tmp]# free -m
total used free shared buffers cached
Mem: 3189 3173 16 0 107 2605
-/+ buffers/cache: 460 2729
Swap: 2000 78 1921
查看/proc/kcore文件的大小(內存鏡像):
[root@scs-2 tmp]# ll -h /proc/kcore
-r——– 1 root root 4.1G Jun 12 12:04 /proc/kcore
備注:
占用內存的測量
測量一個進程占用了多少內存,linux為我們提供了一個很方便的方法,/proc目錄為我們提供了所有的信息,實際上top等工具也通過這裏來獲取相應的信息。
/proc/meminfo 機器的內存使用信息
/proc/pid/maps pid為進程號,顯示當前進程所占用的虛擬地址。
/proc/pid/statm 進程所占用的內存
[root@localhost ~]# cat /proc/self/statm
654 57 44 0 0 334 0
輸出解釋
CPU 以及CPU0。。。的每行的每個參數意思(以第一行為例)為:
參數 解釋 /proc//status
Size (pages) 任務虛擬地址空間的大小 VmSize/4
Resident(pages) 應用程序正在使用的物理內存的大小 VmRSS/4
Shared(pages) 共享頁數 0
Trs(pages) 程序所擁有的可執行虛擬內存的大小 VmExe/4
Lrs(pages) 被映像到任務的虛擬內存空間的庫的大小 VmLib/4
Drs(pages) 程序數據段和用戶態的棧的大小 (VmData+ VmStk )4
dt(pages) 04
查看機器可用內存
/proc/28248/>free
total used free shared buffers cached
Mem: 1023788 926400 97388 0 134668 503688
-/+ buffers/cache: 288044 735744
Swap: 1959920 89608 1870312
我們通過free命令查看機器空閑內存時,會發現free的值很小。這主要是因為,在linux中有這麼一種思想,內存不用白不用,因此它盡可能的cache和buffer一些數據,以方便下次使用。但實際上這些內存也是可以立刻拿來使用的。
所以 空閑內存=free+buffers+cached=total-used
如何查看memchaed緩存的信息
Linux下看內存和CPU使用率一般都用top命令,但是實際在用的時候,用top查看出來的內存占用率都非常高,如:
Mem: 4086496k total, 4034428k used, 52068k free, 112620k buffers
Swap: 4192956k total, 799952k used, 3393004k free, 1831700k cached
接近98.7%,而實際上的應用程序占用的內存往往並沒這麼多,
PID
USER PR NI VIRT RES SHR S %CPU %MEM TIME+
COMMAND
25801 sybase 15 0 2648m 806m 805m S 1.0 20.2 27:56.96
dataserver
12084 oracle 16 0 1294m 741m 719m S 0.0 18.6 0:13.50
oracle
27576 xugy 25 0 986m 210m 1040 S 1.0 5.3 28:51.24 cti
25587 yaoyang 17 0 1206m 162m 3792 S 0.0 4.1 9:21.14 java
仔細看top關於內存的顯示輸出,有兩個數據buffers和cached,在Linux係統下的buffer指的是磁盤寫緩存,而cache則指的是磁盤讀緩存。
(A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use.)
而這兩塊是為了提高係統效率而分配的內存,在內存富餘的時候,操作係統將空閑內存利用起來,而有內存需求時,係統會釋放這部分的內存供應用程序使用。
這樣,真正應用程序可用的內存就是free+buffer+cache,上麵的例子就是:
52068k + 112620k + 1831700k = 1996388k
而已用內存則是used-buffer-cache,上麵的例子為:
4034428k - 112620k - 1831700k = 2090108k
Linux下查看內存還有一個更方便的命令,free:
$ free
total used free shared buffers cached
Mem: 4086496 4034044 52452 0 112756 1831564
-/+ buffers/cache: 2089724 1996772
Swap: 4192956 799952 3393004
Mem:這列就是用top命令看到的內存使用情況,而-/+buffers/cache這列就是剛剛做的計算結果,used-buffer-cache/free+buffer+cache
也可以加-m或者-g參數查看按MB或者GB換算的結果。
$ free -m
total used free shared buffers cached
Mem: 3990 3906 83 0 90 1786
-/+ buffers/cache: 2029 1961
Swap: 4094 781 3312
這樣,真正應用程序的內存使用量就可以得出來了,上麵的例子中內存占用率為51.1%
linux的cached memory對於oracle真的是可用的嗎
linux下查看內存信息,使用free命令,具體操作和展示信息如下:# free -m
total used free shared buffers cached
Mem: 15918 12821 3097 0 2601 2542
-/+ buffers/cache: 7676 8241
Swap: 3999 8 3991
其中的相關說明:
Mem:表示物理內存統計
-/+ buffers/cached:表示物理內存的緩存統計
Swap:表示硬盤上交換分區的使用情況(這裏我們不去關心)
係統的總物理內存:15918MB(16GB,因為顯存占用部分內存),但係統當前真正可用的內存並不是第一行free 標記的 3039MB,它僅代表未被分配的內存。
我們使用total1、used1、free1、used2、free2 等名稱來代表上麵統計數據的各值,1、2 分別代表第一行和第二行的數據。
total1: 表示物理內存總量。
used1: 表示總計分配給緩存(包含buffers 與cache )使用的數量,但其中可能部分緩存並未實際使用。
free1: 未被分配的內存。
shared1: 共享內存,一般係統不會用到,這裏也不討論。
buffers1: 係統分配但未被使用的buffers 數量。
cached1: 係統分配但未被使用的cache 數量。buffer 與cache 的區別見後麵。
used2: 實際使用的buffers 與cache 總量,也是實際使用的內存總量。
free2: 未被使用的buffers 與cache 和未被分配的內存之和,這就是係統當前實際可用內存。
可以整理出如下等式:
total1 = used1 + free1
total1 = used2 + free2
used1 = buffers1 + cached1 + used2
free2 = buffers1 + cached1 + free1
buffer 與cache 的區別
A buffer is something that has yet to be "written" to disk.
理解為buffer是準備寫入磁盤。
A cache is something that has been "read" from the disk and stored for later use.
從磁盤讀出來準備給用戶訪問。
linux的cached memory對於oracle真的是可用的嗎
linux下查看內存信息,使用free命令,具體操作和展示信息如下:# free -m
total used free shared buffers cached
Mem: 15918 12821 3097 0 2601 2542
-/+ buffers/cache: 7676 8241
Swap: 3999 8 3991
其中的相關說明:
Mem:表示物理內存統計
-/+ buffers/cached:表示物理內存的緩存統計
Swap:表示硬盤上交換分區的使用情況(這裏我們不去關心)
係統的總物理內存:15918MB(16GB,因為顯存占用部分內存),但係統當前真正可用的內存並不是第一行free 標記的 3039MB,它僅代表未被分配的內存。
我們使用total1、used1、free1、used2、free2 等名稱來代表上麵統計數據的各值,1、2 分別代表第一行和第二行的數據。
total1: 表示物理內存總量。
used1: 表示總計分配給緩存(包含buffers 與cache )使用的數量,但其中可能部分緩存並未實際使用。
free1: 未被分配的內存。
shared1: 共享內存,一般係統不會用到,這裏也不討論。
buffers1: 係統分配但未被使用的buffers 數量。
cached1: 係統分配但未被使用的cache 數量。buffer 與cache 的區別見後麵。
used2: 實際使用的buffers 與cache 總量,也是實際使用的內存總量。
free2: 未被使用的buffers 與cache 和未被分配的內存之和,這就是係統當前實際可用內存。
可以整理出如下等式:
total1 = used1 + free1
total1 = used2 + free2
used1 = buffers1 + cached1 + used2
free2 = buffers1 + cached1 + free1
buffer 與cache 的區別
A buffer is something that has yet to be "written" to disk.
理解為buffer是準備寫入磁盤。
A cache is something that has been "read" from the disk and stored for later use.
從磁盤讀出來準備給用戶訪問。
linux怎麼看內存實際大小
用free -m查看的結果:
# free -m
total used free shared buffers cached
Mem: 504 471 32 0 19 269
-/+ buffers/cache: 183 321
Swap: 996 0 996
查看/proc/kcore文件的大小:
# ll -h /proc/kcore
-r-------- 1 root root 512M 10月 26 20:40 /proc/kcore
在Linux下查看內存我們一般用free命令:
[root@scs-2 tmp]# free
total used free shared buffers cached
Mem: 3266180 3250004 16176 0 110652 2668236
-/+ buffers/cache: 471116 2795064
Swap: 2048276 80160 1968116
下麵是對這些數值的解釋:
total:總計物理內存的大小。
used:已使用多大。
free:可用有多少。
Shared:多個進程共享的內存總額。
Buffers/cached:磁盤緩存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解釋了。
區別:第二行(mem)的used/free與第三行(-/+ buffers/cache) used/free的區別。 這兩個的區別在於使用的角度來看,第一行是從OS的角度來看,因為對於OS,buffers/cached 都是屬於被使用,所以他的可用內存是16176KB,已用內存是3250004KB,其中包括,內核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是從應用程序角度來看,對於應用程序來說,buffers/cached 是等於可用的,因為buffer/cached是為了提高文件讀取的性能,當應用程序需在用到內存的時候,buffer/cached會很快地被回收。
所以從應用程序的角度來說,可用內存=係統free memory+buffers+cached。
如上例:
2795064=16176+110652+2668236
接下來解釋什麼時候內存會被交換,以及按什麼方交換。 當可用內存少於額定值的時候,就會開會進行交換。
如何看額定值:
cat /proc/meminfo
[root@scs-2 tmp]# cat /proc/meminfo
MemTotal: 3266180 kB
MemFree: 17456 kB
Buffers: 111328 kB
Cached: 2664024 kB
SwapCached: 0 kB
Active: 467236 kB
Inactive: 2644928 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 3266180 kB
LowFree: 17456 kB
SwapTotal: 2048276 kB
SwapFree: 1968116 kB
Dirty: 8 kB
Writeback: 0 kB
Mapped: 345360 kB
Slab: 112344 kB
Committed_AS: 535292 kB
PageTables: 2340 kB
VmallocTotal: 536870911 kB
VmallocUsed: 272696 kB
VmallocChunk: 536598175 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 2048 kB
用free -m查看的結果:
[root@scs-2 tmp]# free -m
total used free shared buffers cached
Mem: 3189 3173 16 0 107 2605
-/+ buffers/cache: 460 2729
Swap: 2000 78 1921
查看/proc/kcore文件的大小(內存鏡像):
[root@scs-2 tmp]# ll -h /proc/kcore
-r-------- 1 root root 4.1G Jun 12 12:04 /proc/kcore
備注:
占用內存的測量
測量一個進程占用了多少內存,linux為我們提供了一個很方便的方法,/proc目錄為我們提供了所有的信息,實際上top等工具也通過這裏來獲取相應的信息。
/proc/meminfo 機器的內存使用信息
/proc/pid/maps pid為進程號,顯示當前進程所占用的虛擬地址。
/proc/pid/statm 進程所占用的內存
[root@localhost ~]# cat /proc/self/statm
654 57 44 0 0 334 0
輸出解釋
CPU 以及CPU0。。。的每行的每個參數意思(以第一行為例)為:
參數 解釋 /proc//status
Size (pages) 任務虛擬地址空間的大小 VmSize/4
Resident(pages) 應用程序正在使用的物理內存的大小 VmRSS/4
Shared(pages) 共享頁數 0
Trs(pages) 程序所擁有的可執行虛擬內存的大小 VmExe/4
Lrs(pages) 被映像到任務的虛擬內存空間的庫的大小 VmLib/4
Drs(pages) 程序數據段和用戶態的棧的大小 (VmData+ VmStk )4
dt(pages) 04
查看機器可用內存
/proc/28248/>free
total used free shared buffers cached
Mem: 1023788 926400 97388 0 134668 503688
-/+ buffers/cache: 288044 735744
Swap: 1959920 89608 1870312
我們通過free命令查看機器空閑內存時,會發現free的值很小。這主要是因為,在linux中有這麼一種思想,內存不用白不用,因此它盡可能的cache和buffer一些數據,以方便下次使用。但實際上這些內存也是可以立刻拿來使用的。
所以 空閑內存=free+buffers+cached=total-used
推薦你看一本書《linux就該這麼學》書中內容非常豐富,LINUX基本問題都可以在書中解決。望采納!
轉載請注明出處句子大全網 » 怎麼看linux的memory