Re: kernel 2.6.13 buffer strangeness - FIXED

From: Anthony Wesley
Date: Sat Sep 10 2005 - 00:59:15 EST




Nate Diller wrote:

just found the culprit. guess i should have read the code the first time. get_dirty_limits() in drivers/block/page_writeback.c has a hard-coded upper limit to dirty_ratio. it's capped to half of the unmapped pages, so maybe 30-40% of your system's memory. so if you are brave, just remove the "/ 2" parts from the 'if (dirty_ratio > unmapped_ratio / 2) dirty_ratio = unmapped_ratio / 2;' check, and you can have all the OOM goodness you want.

Well well well.

Thank you Nate!

I changed that bit of code to:

if (dirty_ratio > unmapped_ratio - 10) dirty_ratio = unmapped_ratio - 10;

and added a couple of sanity checks so that it couldn't get below 5 or above 95.

Then set /proc/sys/vm/dirty_ratio to 95 and dirty_background_ratio to 1.

Guess what? Now my video streams for 120 seconds before being throttled. This is *much better*.
It's now quite feasible to reach 30 seconds by finding a faster disk and/or adding another 512M
or RAM.

I guess the hard-coded limit is in there for a reason, but I sure wish it was adjustable without
this sort of hacking.

regards, Anthony

--
Anthony Wesley
Director and IT/Network Consultant
Smart Networks Pty Ltd
Acquerra Pty Ltd

Anthony.Wesley@xxxxxxxxxxxxxxx
Phone: (02) 62595404 or 0419409836
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/