On 04/08/2013 12:08 PM, KOSAKI Motohiro wrote: > (4/8/13 1:16 PM), Cody P Schafer wrote: >> On 04/07/2013 08:23 AM, KOSAKI Motohiro wrote: >>> (4/5/13 4:33 PM), Cody P Schafer wrote: >>>> In one case while modifying the ->high and ->batch fields of per cpu pagesets >>>> we're unneededly using stop_machine() (patches 1 & 2), and in another we don't have any >>>> syncronization at all (patch 3). >>>> >>>> This patchset fixes both of them. >>>> >>>> Note that it results in a change to the behavior of zone_pcp_update(), which is >>>> used by memory_hotplug. I _think_ that I've diserned (and preserved) the >>>> essential behavior (changing ->high and ->batch), and only eliminated unneeded >>>> actions (draining the per cpu pages), but this may not be the case. >>> >>> at least, memory hotplug need to drain. >> >> Could you explain why the drain is required here? From what I can tell, >> after the stop_machine() completes, the per cpu page sets could be >> repopulated at any point, making the combination of draining and >> modifying ->batch & ->high uneeded. > > Then, memory hotplug again and again try to drain. Moreover hotplug prevent repopulation > by using MIGRATE_ISOLATE. > pcp never be page count == 0 and it prevent memory hot remove. zone_pcp_update() is not part of the drain retry loop, in the offline pages case, it is only called following success in "removal" (online pages also calls zone_pcp_update(), I don't see how it could benifit in any way from draining the per cpu pagesets). So I still don't see where the need for draining pages combined with modifying ->high and ->batch came from. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>