Linux
何時觸發交換或如何計算交換趨勢?
我正在嘗試將 Redis 用於生產服務並嘗試避免交換,這對性能不利。
我了解到交換是由 swap_tendency 觸發的,這取決於
swap_tendency = mapped_ratio/2 + swappiness + 窘迫
如何從
/proc/meminfo
我的監控腳本中獲取 mapped_ratio/distress?或者任何可以告訴我係統將要交換頁面的參數?
映射比率
mapped_ratio
可以這樣計算:mapped ratio = (nr mapped * 100) / total memory;
資料來源:https ://www.cs.columbia.edu/~smb/classes/s06-4118/l19.pdf
nr_mapped
該值
nr_mapped
可以從以下位置讀取/proc/vmstat
:$ grep nr_mapped /proc/vmstat nr_mapped 47640
苦惱
根據這篇文章,標題為:Linux Memory - Implementation Notes
“這是衡量 VM 回收頁面的難度。每次 VM 嘗試回收記憶體時,它都會掃描每個區域中 1/n 的非活動列表以回收頁面。每次通過列表時,如果該區域中非活動清理 + 空閒頁面的數量未超過低水位標記,則 n 減 1。遇險測量為 100 >> n” 5
在研究許多文件時,聽起來好像“遇險”是核心計數器,但事實並非如此。相反,它是在掃描每個記憶體區域時使用的值,隨著核心掃描記憶體的頁面幀以試圖回收它們,該值逐漸增加。對此的討論超出了本問答的範圍,但如果您對“了解 Linux 核心”一書的第 17 章:頁框回收部分感到好奇。“distress”的值來自掃描區域時的“prev_priority”值。
參考