Messages in this thread | | | Date | Thu, 31 Oct 2013 01:00:40 -0400 | From | KOSAKI Motohiro <> | Subject | Re: [PATCH] mm: __rmqueue_fallback() should respect pageblock type |
| |
(10/31/13 12:35 AM), Andrew Morton wrote: > On Thu, 31 Oct 2013 00:24:49 -0400 kosaki.motohiro@gmail.com wrote: > >> When __rmqueue_fallback() don't find out a free block with the same size >> of required, it splits a larger page and puts back rest peiece of the page >> to free list. >> >> But it has one serious mistake. When putting back, __rmqueue_fallback() >> always use start_migratetype if type is not CMA. However, __rmqueue_fallback() >> is only called when all of start_migratetype queue are empty. That said, >> __rmqueue_fallback always put back memory to wrong queue except >> try_to_steal_freepages() changed pageblock type (i.e. requested size is >> smaller than half of page block). Finally, antifragmentation framework >> increase fragmenation instead of decrease. >> >> Mel's original anti fragmentation do the right thing. But commit 47118af076 >> (mm: mmzone: MIGRATE_CMA migration type added) broke it. >> >> This patch restores sane and old behavior. > > What are the user-visible runtime effects of this change?
Memory fragmentation may increase compaction rate. (And then system get unnecessary slow down)
| |