linux系統性能測試之虛擬內存管理篇

虛擬內存管理是 Linux 內核裏面最複雜的部分,要弄懂這部份內容可能須要一整本書的講解。VPSee 在這裏只介紹和性能監測有關的兩個內核進程:kswapd 和pdflush。 一、kswapd daemon 用來檢查 pages_high 和 pages_low,若是可用內存少於 pages_low,kswapd 就開始掃描並試圖釋放 32個頁面,而且重複掃描釋放的過程直到可用內存大於 pages_high 爲止。掃描的時候檢查3件事:1)若是頁面沒有修改,把頁放到可用內存列表裏;2)若是頁面被文件系統修改,把頁面內容寫到磁盤上;3)若是頁面被修改 了,但不是被文件系統修改的,把頁面寫到交換空間。 二、pdflush daemon 用來同步文件相關的內存頁面,把內存頁面及時同步到硬盤上。好比打開一個文件,文件被導入到內存裏,對文件作了修改後並保存後,內核並不立刻保存文件到硬 盤,由 pdflush 決定何時把相應頁面寫入硬盤,這由一個內核參數 vm.dirty_background_ratio 來控制,好比下面的參數顯示髒頁面(dirty pages)達到全部內存頁面10%的時候開始寫入硬盤。 # /sbin/sysctl -n vm.dirty_background_ratio 10 vmstat 繼續 vmstat 一些參數的介紹,上一篇 Linux 性能監測:CPU 介紹了 vmstat 的部分參數,這裏介紹另一部分。如下數據來自 VPSee 的一個 256MB RAM,512MB SWAP 的 Xen VPS: # vmstat 1 procs ———–memory———- —swap– —–io—- –system– —–cpu—— r b swpd free buff cache si so bi bo in cs us sy id wa st 0 3 252696 2432 268 7148 3604 2368 3608 2372 288 288 0 0 21 78 1 0 2 253484 2216 228 7104 5368 2976 5372 3036 930 519 0 0 0 100 0 0 1 259252 2616 128 6148 19784 18712 19784 18712 3821 1853 0 1 3 95 1 1 2 260008 2188 144 6824 11824 2584 12664 2584 1347 1174 14 0 0 86 0 2 1 262140 2964 128 5852 24912 17304 24952 17304 4737 2341 86 10 0 0 4 swpd,已使用的 SWAP 空間大小,KB 爲單位; free,可用的物理內存大小,KB 爲單位; buff,物理內存用來緩存讀寫操做的 buffer 大小,KB 爲單位; cache,物理內存用來緩存進程地址空間的 cache 大小,KB 爲單位; si,數據從 SWAP 讀取到 RAM(swap in)的大小,KB 爲單位; so,數據從 RAM 寫到 SWAP(swap out)的大小,KB 爲單位; bi,磁盤塊從文件系統或 SWAP 讀取到 RAM(blocks in)的大小,block 爲單位; bo,磁盤塊從 RAM 寫到文件系統或 SWAP(blocks out)的大小,block 爲單位; 上面是一個頻繁讀寫交換區的例子,能夠觀察到如下幾點: 一、物理可用內存 free 基本沒什麼顯著變化,swapd 逐步增長,說明最小可用的內存始終保持在 256MB X 10% =2.56MB 左右,當髒頁達到10%的時候(vm.dirty_background_ratio = 10)就開始大量使用 swap; 二、buff 穩步減小說明系統知道內存不夠了,kwapd 正在從 buff 那裏借用部份內存; 三、kswapd 持續把髒頁面寫到 swap 交換區(so),而且從 swapd 逐漸增長看出確實如此。根據上面講的 。kswapd 掃描時檢查的三件事,若是頁面被修改了,但不是被文件系統修改的,把頁面寫到 swap,因此這裏 swapd 持續增長。 原文地址:user.qzone.qq.com/812120608/blog/1293595397
相關文章
相關標籤/搜索