日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 內存問題排查手段及相關文件介紹

內存問題排查手段及相關文件介紹

來源:程序員人生   發布時間:2014-10-04 08:00:01 閱讀次數:3194次

5. 內存問題排查手段及相關文件介紹【重點】

對于內存問題排查,或者OOM問題排查,一般會涉及到如下文件,下面將如下文件的分析和設置介紹一下,這也是本文檔的重點,后面排查內存信息還是要根據這些文件信息來排查。其實未必是有內存泄露,也可能是一些策略有問題,比如線程數目的增加,buffer的申請、釋放時間交集等。

5.1 /proc/sys/vm/min_free_kbytes

min_free_kbytes用來確定系統開始回收內存的閥值,控制系統的空閑內存。值越高,內核越早開始回收內存,空閑內存越高。

可以使用如下方式:echo 65535 > /proc/sys/vm/min_free_kbytes將系統保留內存設置為6M。

5.2 /proc/sys/vm/drop_caches

清系統緩存:

#echo 1 > /proc/sys/vm/drop_caches 清理頁緩存

#echo 2 > /proc/sys/vm/drop_caches 清理文件緩存

#echo 3 > /proc/sys/vm/drop_caches 清理也緩存和文件緩存

5.3 /proc/sysrq-trigger

當一個sysrq命令被觸發,內核將會打印信息到內核的環形緩沖并輸出到系統控制臺。此信息一般也會通過syslog輸出到/var/log/messages.

有時候,可能系統已經無法響應,syslogd可能無法記錄此信息。在這種情況下,建議您配置一個串口終端來收集這個信息。

#echo m > /proc/sysrq-trigger 導出內存分配信息

#echo t > /proc/sysrq-trigger 導出線程狀態信息

#echo  p > /proc/sysrq-trigger 導出當前CPU寄存器信息和標志位的信息

#echo w > /proc/sysrq-trigger將進入uninterrupted狀態的任務的信息dump出來

5.3.1對echo m > /proc/sysrq-trigger輸出的解析

 

root@ubuntu:/home/linux# echo m >/proc/sysrq-trigger

root@ubuntu:/home/linux# dmesg -c

SysRq : Show Memory

Mem-Info:

DMA per-cpu:

CPU   0: hi:    0, btch:   1 usd:  0

CPU   1: hi:    0, btch:   1 usd:  0

Normal per-cpu:

CPU   0: hi:  186, btch:  31 usd: 93

CPU   1: hi:  186, btch:  31 usd: 140

HighMem per-cpu:

CPU   0: hi:  186, btch:  31 usd: 185

CPU   1: hi:  186, btch:  31 usd: 13

active_anon:22129 inactive_anon:645isolated_anon:0

active_file:52387 inactive_file:81072isolated_file:0

unevictable:0 dirty:6 writeback:0unstable:0

free:336695 slab_reclaimable:12052slab_unreclaimable:2825

mapped:11208 shmem:892 pagetables:795bounce:0

free_cma:0

DMA free:15900kB min:788kB low:984kBhigh:1180kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kBunevictable:0kB isolated(anon):0kB isolated(file):0kB present:15992kBmanaged:15916kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kBslab_reclaimable:0kB slab_unreclaimable:16kB kernel_stack:0kB pagetables:0kBunstable:0kB bounce:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:0all_unreclaimable? no

lowmem_reserve[]: 0 843 1999 1999

Normal free:635940kB min:42908kBlow:53632kB high:64360kB active_anon:0kB inactive_anon:0kB active_file:75608kBinactive_file:85104kB unevictable:0kB isolated(anon):0kB isolated(file):0kBpresent:897016kB managed:864652kB mlocked:0kB dirty:24kB writeback:0kBmapped:4kB shmem:0kB slab_reclaimable:48208kB slab_unreclaimable:11284kBkernel_stack:1696kB pagetables:0kB unstable:0kB bounce:0kB free_cma:0kBwriteback_tmp:0kB pages_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 9247 9247

HighMem free:694940kB min:512kBlow:15208kB high:29908kB active_anon:88516kB inactive_anon:2580kBactive_file:133940kB inactive_file:239184kB unevictable:0kB isolated(anon):0kBisolated(file):0kB present:1183624kB managed:1183624kB mlocked:0kB dirty:0kBwriteback:0kB mapped:44828kB shmem:3568kB slab_reclaimable:0kBslab_unreclaimable:0kB kernel_stack:0kB pagetables:3180kB unstable:0kBbounce:0kB free_cma:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no

lowmem_reserve[]: 0 0 0 0

DMA: 1*4kB (U) 1*8kB (U) 1*16kB (U)0*32kB 2*64kB (U) 1*128kB (U) 1*256kB (U) 0*512kB 1*1024kB (U) 1*2048kB (R)3*4096kB (M) = 15900kB

Normal: 1*4kB (M) 6*8kB (UEM)3*16kB (UM) 2*32kB (EM) 2*64kB (UE) 2*128kB (UE) 2*256kB (UM) 2*512kB (UE)1*1024kB (M) 1*2048kB (U) 154*4096kB (MR) = 635940kB

HighMem: 59*4kB (UM) 10*8kB (UM) 2*16kB(M) 58*32kB (UM) 48*64kB (UM) 4*128kB (UM) 2*256kB (UM) 1*512kB (M) 0*1024kB0*2048kB 168*4096kB (UMR) = 694940kB

Node 0 hugepages_total=0hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB

134350 total pagecache pages

0 pages in swap cache

Swap cache stats: add 0, delete 0, find0/0

Free swap  = 1045500kB

Total swap = 1045500kB

524287 pages RAM

295938 pages HighMem

8303 pages reserved

647658 pages shared

93503 pages non-shared

root@ubuntu:/home/linux#

主要關注如下幾個參數:

active_anon:匿名映射的頁,這些映射是與文件無關的

active_file:文件映射的頁,這些映射和文件有關

mapped:設備和文件映射的大小

slab_reclaimable:內核數據結構緩存的大小,可減少申請和釋放內存帶來的消耗

active_anon + active_file + mapped = 應用所使用的大小

active_anon + active_file + mapped +slab_reclaimable = 目前所使用的所有內存大小

另外我們一般還會關注:

Normal: 1*4kB (M) 6*8kB (UEM)3*16kB (UM) 2*32kB (EM) 2*64kB (UE) 2*128kB (UE) 2*256kB (UM) 2*512kB (UE)1*1024kB (M) 1*2048kB (U) 154*4096kB (MR) = 635940kB

這里是buddy system(伙伴系統)的內存信息,如果這里比較大塊的內存不多,也很容易出現內存申請失敗,或者觸發OOM問題

5.4 cat /proc/slabinfo

一般來說內核程序中對小于一頁的小塊內存的請求才通過Slab分配器提供的接口Kmalloc來完成。因為slab分配的緩存都是比較小塊的緩存,所以一般情況下我們分析內存性能時,對這里不會太關注,因為其對系統整體內存性能影響不會太大,并且內核中的kmalloc相對問題較少,應用層的問題較多。

不過可以通過如下信息獲取slab緩存的使用情況:

root@ubuntu:/home/linux# cat/proc/slabinfo

查看slab信息,除了看slabinfo文件外,還可以執行/usr/bin/slabtop命令:

以上是一個/proc/slabinfo文件的信息

root@ubuntu:/home/linux#/usr/bin/slabtop

 Active / Total Objects (% used)    : 311009 / 312759 (99.4%)

 Active / Total Slabs (% used)      : 7308 / 7308 (100.0%)

 Active / Total Caches (% used)     : 66 / 100 (66.0%)

 Active / Total Size (% used)       : 58479.13K / 58915.22K (99.3%)

 Minimum / Average / Maximum Object : 0.01K /0.19K / 8.00K

 

 OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                  

 73949 73949 100%    0.05K   1013      73      4052K buffer_head

 66976 66686  99%    0.12K  2093       32      8372K dentry

 47100 47100 100%    0.63K   1884      25     30144K ext4_inode_cache

該命令的輸出字段的意義:

OBJS ― The total number of objects(memory blocks), including those in use (allocated), and some spares not inuse.

ACTIVE ― The number of objects (memoryblocks) that are in use (allocated).

USE ― Percentage of total objects thatare active. ((ACTIVE/OBJS)(100))

OBJ SIZE ― The size of the objects.

SLABS ― The total number of slabs.

OBJ/SLAB ― The number of objects thatfit into a slab.

CACHE SIZE ― The cache size of theslab.

NAME ― The name of the slab.

5.5 cat /proc/meminfo

5.5.1 重要信息

對于該文件,比較重要的是Active、Active(anon)、Active(file)、Mapped、Slab,類似于sysrq-trigger中所說,存在如下計算關系:

Active = Active(anon) + Active(file)

Active(anon)+Ac tive(file)+Mapped = 應用

Active(anon)+Ac tive(file)+Mapped +Slab= 系統總共使用內存

5.5.2 meminfo文件各字段說明

$cat /proc/meminfo

MemTotal:        2052440 kB //總內存

MemFree:           50004 kB //空閑內存

Buffers:           19976 kB //給文件的緩沖大小

Cached:           436412 kB //高速緩沖存儲器(http://baike.baidu.com/view/496990.htm)使用的大小

SwapCached:        19864 kB //被高速緩沖存儲用的交換空間大小

Active:          1144512 kB //活躍使用中的高速緩沖存儲器頁面文件大小

Inactive:         732788 kB //不經常使用的高速緩沖存儲器頁面文件大小

Active(anon):     987640 kB //anon:不久

Inactive(anon):   572512 kB

Active(file):     156872 kB

Inactive(file):   160276 kB

Unevictable:           8 kB

Mlocked:               8 kB

HighTotal:       1177160 kB //The total and free amountof memory, in kilobytes, that is not directly mapped into kernel space.

HighFree:           7396 kB // The HighTotal value canvary based on the type of kernel used.

LowTotal:         875280 kB // The total and free amountof memory, in kilobytes, that is directly mapped into kernel space.  used.

LowFree:           42608 kB //The LowTotal value canvary based on the type of kernel

SwapTotal:        489940 kB //交換空間總大小

SwapFree:         450328 kB //空閑交換空間

Dirty:               104 kB //等待被寫回到磁盤的大小

Writeback:             0 kB //正在被寫回的大小

AnonPages:       1408256 kB //未映射的頁的大小

Mapped:           131964 kB //設備和文件映射的大小

Slab:              37368 kB //內核數據結構緩存的大小,可減少申請和釋放內存帶來的消耗

SReclaimable:      14164 kB //可收回slab的大小

SUnreclaim:        23204 kB //不可收回的slab的大小23204+14164=37368

PageTables:        13308 kB //管理內存分頁的索引表的大小

NFS_Unstable:          0 kB //不穩定頁表的大小

Bounce:                0 kB //bounce:退回

WritebackTmp:          0 kB //

CommitLimit:     1516160 kB

Committed_AS:    2511900 kB

VmallocTotal:     122880 kB //虛擬內存大小

VmallocUsed:       28688 kB //已經被使用的虛擬內存大小

VmallocChunk:      92204 kB

HugePages_Total:       0//大頁面的分配

HugePages_Free:        0

HugePages_Rsvd:        0

HugePages_Surp:        0

Hugepagesize:       2048 kB

DirectMap4k:       10232 kB

DirectMap2M:      899072 kB

5.6 top信息

VIRT:virtual memory usage 虛擬內存
1、進程“需要的”虛擬內存大小,包括進程使用的庫、代碼、數據等
2、假如進程申請100m的內存,但實際只使用了10m,那么它會增長100m,而不是實際的使用量

RES:resident memory usage常駐內存(物理內存)
1、進程當前使用的內存大小,但不包括swap out
2、包含其他進程的共享
3、如果申請100m的內存,實際使用10m,它只增長10m,與VIRT相反
4、關于庫占用內存的情況,它只統計加載的庫文件所占內存大小

SHR:shared memory 共享內存
1、除了自身進程的共享內存,也包括其他進程的共享內存
2、雖然進程只使用了幾個共享庫的函數,但它包含了整個共享庫的大小
3、計算某個進程所占的物理內存大小公式:RES

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩电影在线视频 | 国产一区二区 | 91精品国产色综合久久不卡98口 | 99久久国产综合精品麻豆 | 精品国产久 | 国产精品国产三级国产aⅴ浪潮 | 成人h动漫精品一区二区 | 国产一区二区三区精品在线观看 | swag国产精品一区二区 | 欧美二区视频 | 爱爱视频在线观看 | 成人精品一区二区三区中文字幕 | 国产精品99一区二区三区 | 99小视频| 欧美激情第1页 | 日韩在线观看一区 | 国产又爽又黄的激情精品视频 | 黄色毛片小视频 | 国产精品久久久久高潮 | 干片网在线 | 亚洲精品视频一区二区三区 | 亚洲精品二区 | 国产精品毛片一区二区三区 | 国产区视频在线观看 | 亚洲综合无码一区二区 | 亚洲精品乱码久久久久久写真 | 99爱在线观看 | 久久久精品电影 | 艹逼网| 亚洲福利在线观看 | 一区二区三区 在线 | 国产精品免费一区二区三区四区 | 高清一区二区三区 | 一级在线 | 国产日韩欧美 | 一区二区免费电影 | 久久精品99国产精品日本 | 亚洲一区二区三区四区五区六 | 国产精品久久久久久久免费软件 | 亚洲成人精品一区二区三区 | 久久av一区二区三区 |