<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Linux服務器Cache占用過多內存導致系統內存不足問題的排查解決(續)

      作者: 大圓那些事 | 文章可以轉載,請以超鏈接形式標明文章原始出處和作者信息

      網址: http://www.rzrgm.cn/panfeng412/archive/2013/12/17/drop-caches-under-linux-system-2.html

      前一篇文章里已經描述了具體遇到的問題及一些解決方法。但是還有些疑問點沒有搞清楚,進一步學習了Linux系統下內存的分配使用機制,這里有兩個資料講的比較全面:

      Where is the memory going? Memory waste under Linux

      Where is the memory going?Memory usage in the 2.6 kernel

      以下記錄的是進一步排查的進展情況。

      更深層次的原因

      前一篇文章里排查到Linux系統中有大量的dentry_cache占用內存,為什么會有如此多的dentry_cache呢?

      1. 首先,弄清楚dentry_cache的概念及作用:目錄項高速緩存,是Linux為了提高目錄項對象的處理效率而設計的;它記錄了目錄項到inode的映射關系。因此,當應用程序發起stat系統調用時,就會創建對應的dentry_cache項(更進一步,如果每次stat的文件都是不存在的文件,那么總是會有大量新的dentry_cache項被創建)。

      2. 當前服務器是storm集群的節點,首先想到了storm相關的工作進程,strace一下storm的worker進程發現其中有非常頻繁的stat系統調用發生,而且stat的文件總是新的文件名:

      sudo strace -fp <pid> -e trace=stat

      3. 進一步觀察到storm的worker進程會在本地目錄下頻繁的創建、打開、關閉、刪除心跳文件,每秒鐘一個新的文件名:

      sudo strace -fp <pid> -e trace=open,stat,close,unlink

      以上就是系統中為何有如此多的dentry_cache的原因所在。

      一個奇怪的現象

      通過觀察/proc/meminfo發現,slab內存分為兩部分:

      SReclaimable // 可回收的slab
      SUnreclaim // 不可回收的slab

      當時服務器的現狀是:slab部分占用的內存,大部分顯示的都是SReclaimable,也就是說可以被回收的。

      但是通過slabtop觀察到slab內存中最主要的部分(dentry_cache)的OBJS幾乎都是ACTIVE的,顯示100%處于被使用狀態。

        OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
      13926348 13926348 100%    0.21K 773686       18   3494744K dentry_cache
      334040 262056  78%    0.09K   8351       40     33404K buffer_head
      151040 150537  99%    0.74K  30208        5    120832K ext3_inode_cache

      為什么顯示可回收的,但是又處于ACTIVE狀態呢?求Linux內核達人看到后熱心解釋下:(

      會不會由于是ACTIVE狀態,導致dcache沒有被自動回收釋放掉呢?

      讓系統自動回收dcache

      上一小節,我們已經提到,服務器上大部分的slab內存是SReclaimable可回收狀態的,那么,我們能不能交給操作系統讓他在某個時機自動觸發回收操作呢?答案是肯定的。

      查了一些關于Linux dcache的相關資料,發現操作系統會在到了內存臨界閾值后,觸發kswapd內核進程工作才進行釋放,這個閾值的計算方法如下:

      1. 首先,grep low /proc/zoneinfo,得到如下結果:

              low      1
              low      380
              low      12067

      2. 將以上3列加起來,乘以4KB,就是這個閾值,通過這個方法計算后發現當前服務器的回收閾值只有48MB,因此很難看到這一現象,實際中可能等不到回收,操作系統就會hang住沒響應了。

      3. 可以通過以下方法調大這個閾值:將vm.extra_free_kbytes設置為vm.min_free_kbytes和一樣大,則/proc/zoneinfo中對應的low閾值就會增大一倍,同時high閾值也會隨之增長,以此類推。

      $ sudo sysctl -a | grep free_kbytes       
      vm.min_free_kbytes = 39847
      vm.extra_free_kbytes = 0
      $ sudo sysctl -w vm.extra_free_kbytes=836787 ######1GB

       4. 舉個例子,當low閾值被設置為1GB的時候,當系統free的內存小于1GB時,觀察到kswapd進程開始工作(進程狀態從Sleeping變為Running),同時dcache開始被系統回收,直到系統free的內存介于low閾值和high閾值之間,停止回收。

       

      posted on 2013-12-17 14:46  大圓那些事  閱讀(29719)  評論(1)    收藏  舉報

      導航

      主站蜘蛛池模板: 国产一区二区亚洲一区二区三区| 国语精品国内自产视频| 久久精品国产99久久久古代 | 胶州市| 性色a码一区二区三区天美传媒| 欧美日韩精品一区二区视频| 久久精品国产99国产精品| 人人妻人人澡人人爽人人精品av| 99久久夜色精品国产亚洲| 国产毛片三区二区一区| 欧美日韩亚洲国产| 91九色国产成人久久精品| 国产国产乱老熟女视频网站97| 人妻精品动漫H无码中字| 国产美女免费永久无遮挡| 美女一级毛片无遮挡内谢| 精品无码久久久久久久久久| 国产午夜福利片在线观看| 97人妻免费碰视频碰免| 欧美一本大道香蕉综合视频| 亚洲一区二区av观看| 久久精品蜜芽亚洲国产AV| 日韩丝袜亚洲国产欧美一区| 自拍偷自拍亚洲精品熟妇人 | 国产不卡一区二区在线| 亚洲中文无码av在线| 久久精品国产精品第一区| 日本高清在线观看WWW色| 松潘县| 久久精品国产一区二区三| 国产精品电影久久久久电影网| 久久青草国产精品一区| 蜜臀午夜一区二区在线播放| 性色av一区二区三区精品| 亚洲精品国产字幕久久麻豆| 亚洲全乱码精品一区二区| 亚洲人成网站77777在线观看| 国产精品人妻一码二码尿失禁| 东京热人妻无码人av| 亚洲视频免费一区二区三区| 日韩av中文字幕有码|