Skip to contentSkip to conversation

cpuset,mm: fix memory spread bug

RFC PATCH In review Miao Xie 2 participants 3 messages Apr 7, 2009 – Apr 8, 2009 Memory management

lore
Share & tools
lore

Miao Xie

author
#0 lore raw

cover cpuset,mm: fix memory spread bug

The kernel still allocated the page caches on old node after modifying its cpuset's mems when 'memory_spread_page' was set, or it didn't spread the page cache evenly over all the nodes that faulting task is allowed to usr after memory_spread_page was set. it is caused by the old mem_allowed and flags of the task, the current kernel doesn't updates them unless some function invokes cpuset_update_task_memory_state(), it is too late sometimes.We must update the mem_allowed and the flags of the tasks in time.

Slab has the same problem.

The following patches fix this bug by updating tasks' mem_allowed and spread flag after its cpuset's mems or spread flag is changed.

patch 1: restructure the function cpuset_update_task_memory_state() patch 2: update tasks' page/slab spread flags in time patch 3: update tasks' mems_allowed in time

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#1 lore raw

Interesting patch set but I cannot find parts 2 and 3. The locking changes get rid of the generation scheme in cpusets which is a good thing if it works right.

Quoted 18 lines · Miao Xie

The kernel still allocated the page caches on old node after modifying its cpuset's mems when 'memory_spread_page' was set, or it didn't spread the page cache evenly over all the nodes that faulting task is allowed to usr after memory_spread_page was set. it is caused by the old mem_allowed and flags of the task, the current kernel doesn't updates them unless some function invokes cpuset_update_task_memory_state(), it is too late sometimes.We must update the mem_allowed and the flags of the tasks in time.

Slab has the same problem.

The following patches fix this bug by updating tasks' mem_allowed and spread flag after its cpuset's mems or spread flag is changed.

patch 1: restructure the function cpuset_update_task_memory_state() patch 2: update tasks' page/slab spread flags in time patch 3: update tasks' mems_allowed in time

Quoted 6 lines

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

author
#2 lore raw
Quoted 3 lines · on 2009-4-8 5:04 Christoph Lameter wrote:

Interesting patch set but I cannot find parts 2 and 3. The locking changes get rid of the generation scheme in cpusets which is a good thing if it works right.

Sorry for the late reply and my mistake. The following URLs is the patches' address.

patch 1: restructure the function cpuset_update_task_memory_state()
http://marc.info/?l=linux-kernel&m=123910183705576&w=2

patch 2: update tasks' page/slab spread flags in time
http://marc.info/?l=linux-kernel&m=123910199505770&w=2

patch 3: update tasks' mems_allowed in time
http://marc.info/?l=linux-mm&m=123910199605776&w=2

Thanks
Miao

Quoted 21 lines · Miao Xie
Quoted 19 lines

The kernel still allocated the page caches on old node after modifying its cpuset's mems when 'memory_spread_page' was set, or it didn't spread the page cache evenly over all the nodes that faulting task is allowed to usr after memory_spread_page was set. it is caused by the old mem_allowed and flags of the task, the current kernel doesn't updates them unless some function invokes cpuset_update_task_memory_state(), it is too late sometimes.We must update the mem_allowed and the flags of the tasks in time.

Slab has the same problem.

The following patches fix this bug by updating tasks' mem_allowed and spread flag after its cpuset's mems or spread flag is changed.

patch 1: restructure the function cpuset_update_task_memory_state() patch 2: update tasks' page/slab spread flags in time patch 3: update tasks' mems_allowed in time

Quoted 9 lines
Quoted 6 lines

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>