水线计算函数: page_alloc.c setup_per_zone_wmarks
init_per_zone_wmark_min
setup_per_zone_lowmem_reserve主要用作设置lowmem_reserve值
水线计算方法:
- watermark[min]=min_free_pages(min_free_kbyte换算为page单位的数,每个zone都有一套watermark参数,实际计算结果是根据各个zone的大小所占的总的内存大小的比例来计算的)
- watermark[low]=watermark[min] * 5/4
- watermark[high]=watermark[min] * 3/2
watermark[min]= min_free_kbyte/(除高端外的总内存) * 当前zone 的内存。
zone->watermark[WMARK_LOW] = min_wmark_pages(zone) + (tmp >> 2);
zone->watermark[WMARK_HIGH] = min_wmark_pages(zone) + (tmp >> 1);
http://blog.chinaunix.net/uid-27177626-id-4197018.html
ming_free_bytes
http://blog.youkuaiyun.com/duqi_2009/article/details/11628297