導航:首頁 > 操作系統 > linux查看cache

linux查看cache

發布時間:2022-09-04 12:52:48

linux查看系統內存大小

在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

Ⅱ Linux內存 Buffer和Cache的區別及Linux中查看內存的命令free

Linux中內存查看命令free詳解
2011-08-18 11:24:34| 分類: linux相關|舉報|字型大小 訂閱

下載LOFTER我的照片書 |
free命令用來查看內存的使用情況,與Top命令相比,開銷較小。
$free –m
total used free shared buffers cached
mem: 1002 769 232 0 62 421
-/+ buffers/cache 286 715
swap 1153 0 1 153

說明:在理解free命令的輸出項的時候,要區分兩個概念:第一行(mem),是針對操作系統來說的,而對操作系統來說buffer和cache都是屬於被使用了的內存。第二行(-/+ buffers/cache)是針對應用程序來說的,而對應用程序來說,buffer和cache都屬於可以使用的內存。
所以:
第一行(mem):
total:表示系統可使用的物理內存的總量為1002;
used表示已經被分配的內存為769,具體包括真正已經被使用掉的buffer和cache內存286,未使用的buffer內存62,未使用的cache內存421,即769 = 62 + 421 + 286;
free:表示為分配的物理內存為232;
buffers:已經被系統分配而未使用的buffer內存62;
cached:已經被分配而未使用的cache內存421;

第二行(-/+ buffers/cache);
used:已經被應用程序真正使用掉的buffer和cache內存為286;
free:可以被應用程序使用的內存為715,其中包括:已經分配而未使用的buffer內存62,已經分配而未使用的cache內存421,還沒有被分配的內存232,即: 715 = 62 + 421 + 232;

另:Linux中buffer與cache的區別:
buffer:要寫到硬碟上去的數據內存;
cache:讀取到內存中的數據內存;

Ⅲ 如何控制Linux清理cache機制

Linux下的緩存機制及清理buffer/cache/swap的方法梳理

(1)緩存機制
為了提高文件系統性能,內核利用一部分物理內存分配出緩沖區,用於緩存系統操作和數據文件,當內核收到讀寫的請求時,內核先去緩存區找是否有請求的數據,有就直接返回,如果沒有則通過驅動程序直接操作磁碟。
緩存機制優點:減少系統調用次數,降低CPU上下文切換和磁碟訪問頻率。
CPU上下文切換:CPU給每個進程一定的服務時間,當時間片用完後,內核從正在運行的進程中收回處理器,同時把進程當前運行狀態保存下來,然後載入下一個任務,這個過程叫做上下文切換。實質上就是被終止運行進程與待運行進程的進程切換。
(2)查看緩存區及內存使用情況
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 7866 7725 141 19 74 6897
-/+ buffers/cache: 752 7113
Swap: 16382 32 16350
可以看到內存總共8G,已使用7725M,剩餘141M,不少的人都是這么看的,這樣並不能作為實際的使用率。因為有了緩存機制,具體該怎麼算呢?
空閑內存=free(141)+buffers(74)+cached(6897)
已用內存=total(7866)-空閑內存
由此算出空閑內存是7112M,已用內存754M,這才是真正的使用率,也可參考-/+ buffers/cache這行信息也是內存正確使用率。
(3)可見緩存區分為buffers和cached,他們有什麼區別呢?
內核在保證系統能正常使用物理內存和數據量讀寫情況下來分配緩沖區大小。buffers用來緩存metadata及pages,可以理解為系統緩存,例如,vi打開一個文件。cached是用來給文件做緩存,可以理解為數據塊緩存,例如,dd if=/dev/zero of=/tmp/test count=1 bs=1G 測試寫入一個文件,就會被緩存到緩沖區中,當下一次再執行這個測試命令時,寫入速度會明顯很快。
(4)隨便說下Swap做什麼用的呢?
Swap意思是交換分區,通常我們說的虛擬內存,是從硬碟中劃分出的一個分區。當物理內存不夠用的時候,內核就會釋放緩存區(buffers/cache)里一些長時間不用的程序,然後將這些程序臨時放到Swap中,也就是說如果物理內存和緩存區內存不夠用的時候,才會用到Swap。
swap清理:
swapoff -a && swapon -a
注意:這樣清理有個前提條件,空閑的內存必須比已經使用的swap空間大
(5)怎樣釋放緩存區內存呢?
a)直接改變內核運行參數
#釋放pagecache
echo 1 >/proc/sys/vm/drop_caches
#釋放dentries和inodes
echo 2 >/proc/sys/vm/drop_caches
#釋放pagecache、dentries和inodes
echo 3 >/proc/sys/vm/drop_caches
b)也可以使用sysctl重置內核運行參數
sysctl -w vm.drop_caches=3
注意:這兩個方式都是臨時生效,永久生效需添加sysctl.conf文件中,一般寫成腳本手動清理,建議不要清理。
修改/etc/sysctl.conf 添加如下選項後就不會內存持續增加
vm.dirty_ratio = 1
vm.dirty_background_ratio=1
vm.dirty_writeback_centisecs=2
vm.dirty_expire_centisecs=3
vm.drop_caches=3
vm.swappiness =100
vm.vfs_cache_pressure=163
vm.overcommit_memory=2
vm.lowmem_reserve_ratio=32 32 8
kern.maxvnodes=3
上面的設置比較粗暴,使cache的作用基本無法發揮。需要根據機器的狀況進行適當的調節尋找最佳的折衷。

Ⅳ linux里查看虛擬內存的命令是什麼

free -m最後一排的swap就是虛擬內存

Ⅳ 如何查看Linux內存中的程序所有堆的地址

linux 下面查看內存有多種渠道,比如通過命令 ps ,top,free 等,比如通過/proc系統,一般需要比較詳細和精確地知道整機內存/某個進程內存的使用情況,最好通過/proc 系統,下面介紹/proc系統下內存相關的幾個文件

單個進程的內存查看 cat /proc/[pid] 下面有幾個文件: maps , smaps, status

maps 文件可以查看某個進程的代碼段、棧區、堆區、動態庫、內核區對應的虛擬地址,如果你還不了解linux進程的內存空間,可以參考這里。

下圖是maps文件內存示例

Develop>cat /proc/self/maps
00400000-0040b000 r-xp 00000000 fd:00 48 /mnt/cf/orig/root/bin/cat
0060a000-0060b000 r--p 0000a000 fd:00 48 /mnt/cf/orig/root/bin/cat
0060b000-0060c000 rw-p 0000b000 fd:00 48 /mnt/cf/orig/root/bin/cat 代碼段
0060c000-0062d000 rw-p 00000000 00:00 0 [heap] 堆區
7f1fff43b000-7f1fff5d4000 r-xp 00000000 fd:00 861 /mnt/cf/orig/root/lib64/libc-2.15.so
7f1fff5d4000-7f1fff7d3000 ---p 00199000 fd:00 861 /mnt/cf/orig/root/lib64/libc-2.15.so
7f1fff7d3000-7f1fff7d7000 r--p 00198000 fd:00 861 /mnt/cf/orig/root/lib64/libc-2.15.so
7f1fff7d7000-7f1fff7d9000 rw-p 0019c000 fd:00 861 /mnt/cf/orig/root/lib64/libc-2.15.so
7f1fff7d9000-7f1fff7dd000 rw-p 00000000 00:00 0
7f1fff7dd000-7f1fff7fe000 r-xp 00000000 fd:00 2554 /mnt/cf/orig/root/lib64/ld-2.15.so
7f1fff9f9000-7f1fff9fd000 rw-p 00000000 00:00 0
7f1fff9fd000-7f1fff9fe000 r--p 00020000 fd:00 2554 /mnt/cf/orig/root/lib64/ld-2.15.so
7f1fff9fe000-7f1fff9ff000 rw-p 00021000 fd:00 2554 /mnt/cf/orig/root/lib64/ld-2.15.so
7f1fff9ff000-7f1fffa00000 rw-p 00000000 00:00 0
7fff443de000-7fff443ff000 rw-p 00000000 00:00 0 [stack] 用戶態棧區
7fff443ff000-7fff44400000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] 內核區

有時候可以通過不斷查看某個進程的maps文件,通過查看其虛擬內存(堆區)是否不停增長來簡單判斷進程是否發生了內存溢出。

maps文件只能顯示簡單的分區,smap文件可以顯示每個分區的更詳細的內存佔用數據

下圖是smaps文件內存示例, 實際顯示內容會將每一個區都顯示出來,下面我只拷貝了代碼段和堆區,

每一個區顯示的內容項目是一樣的,smaps文件各項含義可以參考這里

Develop>cat /proc/self/smaps
00400000-0040b000 r-xp 00000000 fd:00 48 /mnt/cf/orig/root/bin/cat
Size: 44 kB 虛擬內存大小
Rss: 28 kB 實際使用物理內存大小
Pss: 28 kB
Shared_Clean: 0 kB 頁面被改,則是dirty,否則是clean,頁面引用計數>1,是shared,否則是private
Shared_Dirty: 0 kB
Private_Clean: 28 kB
Private_Dirty: 0 kB
Referenced: 28 kB
Anonymous: 0 kB
AnonHugePages: 0 kB
Swap: 0 kB 處於交換區的頁面大小
KernelPageSize: 4 kB 操作系統一個頁面大小
MMUPageSize: 4 kB 體系結構MMU一個頁面大小
Locked: 0 kB

0060c000-0062d000 rw-p 00000000 00:00 0 [heap]
Size: 132 kB
Rss: 8 kB
Pss: 8 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 8 kB
Referenced: 8 kB
Anonymous: 8 kB
AnonHugePages: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB

下圖是status文件內存示例, 加粗部分是內存相關的統計,

Develop>cat /proc/24475/status
Name: netio 可執行程序的名字
State: R (running) 任務狀態,運行/睡眠/僵死
Tgid: 24475 線程組號
Pid: 24475 進程id
PPid: 19635 父進程id
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256 該進程最大文件描述符個數
Groups: 0
VmPeak: 6330708 kB 內存使用峰值
VmSize: 268876 kB 進程虛擬地址空間大小
VmLck: 0 kB 進程鎖住的物理內存大小,鎖住的物理內存無法交換到硬碟

VmHWM: 16656 kB
VmRSS: 11420 kB 進程正在使用的物理內存大小
VmData: 230844 kB 進程數據段大小
VmStk: 136 kB 進程用戶態棧大小
VmExe: 760 kB 進程代碼段大小
VmLib: 7772 kB 進程使用的庫映射到虛擬內存空間的大小
VmPTE: 120 kB 進程頁表大小
VmSwap: 0 kB
Threads: 5
SigQ: 0/63346
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000001000000
SigCgt: 0000000180000000
CapInh: 0000000000000000
CapPrm: ffffffffffffffff
CapEff: ffffffffffffffff
CapBnd: ffffffffffffffff
Cpus_allowed: 01
Cpus_allowed_list: 0
Mems_allowed: 01
Mems_allowed_list: 0
voluntary_ctxt_switches: 201
nonvoluntary_ctxt_switches: 909

可以看到,linux下內存佔用是一個比較復雜的概念,不能

簡單通過一個單一指標就判斷某個程序「內存消耗」大小,原因有下面2點:

進程所申請的內存不一定真正會被用到(malloc或mmap的實現)
真正用到了的內存也不一定是只有該進程自己在用 (比如動態共享庫)

關於內存的使用分析及本文幾個命令的說明也可以參考這里

下面是查看整機內存使用情況的文件 /proc/meminfo

Develop>cat /proc/meminfo
MemTotal: 8112280 kB 所有可用RAM大小 (即物理內存減去一些預留位和內核的二進制代碼大小)
MemFree: 4188636 kB LowFree與HighFree的總和,被系統留著未使用的內存
Buffers: 34728 kB 用來給文件做緩沖大小
Cached: 289740 kB 被高速緩沖存儲器(cache memory)用的內存的大小
(等於 diskcache minus SwapCache )
SwapCached: 0 kB 被高速緩沖存儲器(cache memory)用的交換空間的大小
已經被交換出來的內存,但仍然被存放在swapfile中。
用來在需要的時候很快的被替換而不需要再次打開I/O埠
Active: 435240 kB 在活躍使用中的緩沖或高速緩沖存儲器頁面文件的大小,
除非非常必要否則不會被移作他用
Inactive: 231512 kB 在不經常使用中的緩沖或高速緩沖存儲器頁面文件的大小,可能被用於其他途徑.
Active(anon): 361252 kB
Inactive(anon): 120688 kB
Active(file): 73988 kB
Inactive(file): 110824 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB 交換空間的總大小
SwapFree: 0 kB 未被使用交換空間的大小
Dirty: 0 kB 等待被寫回到磁碟的內存大小
Writeback: 0 kB 正在被寫回到磁碟的內存大小
AnonPages: 348408 kB 未映射頁的內存大小
Mapped: 33600 kB 已經被設備和文件等映射的大小
Shmem: 133536 kB
Slab: 55984 kB 內核數據結構緩存的大小,可以減少申請和釋放內存帶來的消耗
SReclaimable: 25028 kB 可收回Slab的大小
SUnreclaim: 30956 kB 不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)
KernelStack: 1896 kB 內核棧區大小
PageTables: 8156 kB 管理內存分頁頁面的索引表的大小
NFS_Unstable: 0 kB 不穩定頁表的大小
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2483276 kB
Committed_AS: 1804104 kB
VmallocTotal: 34359738367 kB 可以vmalloc虛擬內存大小
VmallocUsed: 565680 kB 已經被使用的虛擬內存大小
VmallocChunk: 34359162876 kB
HardwareCorrupted: 0 kB
HugePages_Total: 1536 大頁面數目
HugePages_Free: 0 空閑大頁面數目
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB 大頁面一頁大小
DirectMap4k: 10240 kB
DirectMap2M: 8302592 kB

Ⅵ 怎麼看linux的memory

linux下查看內存信息,使用free命令,具體操作和展示信息如下:

#free-m

Mem:15918128213097026012542
-/+buffers/cache:76768241
Swap:399983991

其中的相關說明:

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 -mtotal used free shared buffers cached
Mem: 1002 769 232 0 62 421
-/+ buffers/cache: 286 715
Swap: 1153 0 1153
第一部分Mem行:
total 內存總數: 1002M
used 已經使用的內存數: 769M
free 空閑的內存數: 232M
shared 當前已經廢棄不用,總是0
buffers Buffer 緩存內存數: 62M
cached Page 緩存內存數:421M
關系:total(1002M) = used(769M) + free(232M)
第二部分(-/+ buffers/cache):
(-buffers/cache) used內存數:286M (指的第一部分Mem行中的used - buffers - cached)
(+buffers/cache) free內存數: 715M (指的第一部分Mem行中的free + buffers + cached)
可見-buffers/cache反映的是被程序實實在在吃掉的內存,而+buffers/cache反映的是可以挪用的內存總數。
第三部分是指交換分區, 我想不講大家都明白.
其實我們可以從二個方面來解釋.
對操作系統來講是Mem的參數.buffers/cached 都是屬於被使用,所以它認為free只有232.
對應用程序來講是(-/+ buffers/cach).buffers/cached 是等同可用的,因為buffer/cached是為了提高程序執行的性能,
當程序使用內存時,buffer/cached會很快地被使用。所以,以應用來看看,以(-/+ buffers/cache)的free和used為主.
所以我們看這個就好了.另外告訴大家一些常識.Linux為了提高磁碟和內存存取效率, Linux做了很多精心的設計, 除了對
dentry進行緩存(用於VFS,加速文件路 徑名到inode的轉換), 還採取了兩種主要Cache方式:Buffer Cache和Page Cache。
前者針對磁碟塊的讀寫,後者針對文件inode的讀寫。這些Cache能有效縮短了 I/O系統調用(比如read,write,getdents)的時間。

Ⅷ 如何查看Linux磁碟空間大小

可通過系統自帶的命令查看,也可以通過第三方軟體查看,具體如下:
1. 查看文件大小
查看當前文件夾下所有文件大小(包括子文件夾)
-sh
# -h
15M ./package
16K ./.fontconfig
4.0K ./.cache
5.1M ./.rpmdb
20M .

2. df -h
Df命令是linux系統以磁碟分區為單位查看文件系統,可以加上參數查看磁碟剩餘空間信息,命令格式:
df -hl
顯示格式為:
文件系統 容量 已用 可用 已用% 掛載點
Filesystem Size Used Avail Use% Mounted on
/dev/hda2 45G 19G 24G 44% /
/dev/hda1 494M 19M 450M 4% /boot
/dev/hda6 4.9G 2.2G 2.5G 47% /home

3. cfdisk來自於util-linux的軟體包;
cfdisk也是一款不錯的分區工具;在有些發行版中,此工具已經從util-linux包中剔除;cfdisk簡單易用是他的特點;和DOS中的fdisk相似;在本標題中,我們只來解說如何查看機器的中的磁碟分區狀況及所用的文件系統等;
查看磁碟分區的用法cfdisk -Ps磁碟設備名;
比如
[root@localhost beinan]cfdisk -Ps
[root@localhost beinan]cfdisk -Ps /dev/hda
[root@localhost beinan]cfdisk -Ps
Partition Table for /dev/hda

閱讀全文

與linux查看cache相關的資料

熱點內容
微信授權什麼app權重最高 瀏覽:9
php循環數組foreach 瀏覽:76
zip和app有什麼區別 瀏覽:631
乖法快速演算法 瀏覽:869
日本程序員一年工資 瀏覽:199
出國做程序員怎麼樣 瀏覽:735
rar鎖定壓縮文件 瀏覽:871
安卓id號碼怎麼更換 瀏覽:524
db2如何連接伺服器資料庫 瀏覽:630
wordtopdf轉換 瀏覽:840
雲伺服器在哪設置ftp 瀏覽:622
黑客社會工程學攻擊pdf 瀏覽:998
專業中穎單片機程序開發 瀏覽:426
python多進程多線程實例 瀏覽:639
山東濟南生產伺服器雲主機 瀏覽:310
演算法員跳槽四年 瀏覽:730
秦九昭演算法v0怎麼求 瀏覽:384
斗魚java 瀏覽:896
程序員對老師的感謝 瀏覽:30
什麼app能查看銀行卡照片 瀏覽:24