On 04/02/2012 07:10 PM, KOSAKI Motohiro wrote:2012/3/30 Satoru Moriya<satoru.moriya@xxxxxxx>:Hello Kosaki-san,
On 03/07/2012 01:18 PM, Satoru Moriya wrote:On 03/07/2012 12:19 PM, KOSAKI Motohiro wrote:Thank you. I brought back to memory it. Unfortunately DB folks are
still mainly using RHEL5 generation distros. At that time,
swapiness=0 doesn't mean disabling swap.
They want, "don't swap as far as kernel has any file cache page". but
linux don't have such feature. then they used swappiness for emulate
it. So, I think this patch clearly make userland harm. Because of, we
don't have an alternative way.
As I wrote in the previous mail(see below), with this patch
the kernel begins to swap out when the sum of free pages and
filebacked pages reduces less than watermark_high.
Actually, this is true only for global reclaims. Reclaims in cgroup can fail
in this case.
So the kernel reclaims pages like following.
nr_free + nr_filebacked>= watermark_high: reclaim only filebacked pages
nr_free + nr_filebacked< watermark_high: reclaim only anonymous pages
How?
get_scan_count() checks that case explicitly:
if (global_reclaim(sc)) {
free = zone_page_state(mz->zone, NR_FREE_PAGES);
/* If we have very few page cache pages,
force-scan anon pages. */
if (unlikely(file + free<= high_wmark_pages(mz->zone))) {
fraction[0] = 1;
fraction[1] = 0;
denominator = 1;
goto out;
}
}