Messages in this thread | | | Date | Tue, 26 Jan 2010 22:03:06 +0900 | Subject | Re: OOM-Killer kills too much with 2.6.32.2 | From | KOSAKI Motohiro <> |
| |
>> This comment is lie. __GFP_NORETY cause ENOMEM to shmem, not GEM itself. >> GEM can't handle nor recover it. I suspect following commit is wrong. > > Indeed, the NORETRY flag is required for the inode mapping routines to > return ENOMEM instead of triggering the OOM killer themselves. GEM has > code to handle the ENOMEM as returned from shmem (please at least read the > code before commenting, and comments are appreciated), by attempting to > free up some of its own inactive buffers before retrying the allocation > (with NORETRY removed, so the OOM killer will be invoked on the second > instance). The reason for this convoluted approach is that GEM's inactive > list shrinker requires the struct mutex and so cannot be run when GEM > itself is attempting and failing to allocate memory. We could recover from > more situations if we made some more invasive changes to our locking. > > This is without a doubt an area that needs improvement.
Please consider to revert such commit at once. Lots people reported the same issue. I really hope to stop bug report storm.
| |