Hi, Paul
I found the pages that task had allocated to it on nodes in its previous cpuset
were not migrated to the tasks' current cpuset after 'memory_migrate' was set
true. It looks strange for users. Why are the pages not migrated to current
cpuset after 'memory_migrate' is set true?
Step I did
1, allocate pages on cpuset (mems is 0, memory_migrate is 0)
2, change cpuset's mems (mems: 0 -> 1)
3, change cpuset's memory_migrate(memory_migrate: 0 -> 1)
Regards
Miao Xie
Hi.
On Tue, 16 Dec 2008 13:11:57 +0800, Miao Xie <[email protected]> wrote:
> Hi, Paul
>
> I found the pages that task had allocated to it on nodes in its previous cpuset
> were not migrated to the tasks' current cpuset after 'memory_migrate' was set
> true. It looks strange for users. Why are the pages not migrated to current
> cpuset after 'memory_migrate' is set true?
>
I don't know the reason of current behavior, but
> Step I did
> 1, allocate pages on cpuset (mems is 0, memory_migrate is 0)
> 2, change cpuset's mems (mems: 0 -> 1)
> 3, change cpuset's memory_migrate(memory_migrate: 0 -> 1)
>
from/to which node kernel should migrate pages in general ?
Should kernel remember previous value of "mems" ? What if we change "mems"
several times before setting memory_migrate ON ?
IMHO, current behavior is not so strange. All users have to do is
set memory_migrate ON *before* changing "mems" or attaching task
if they want to migrate pages.
Thanks,
Daisuke Nishimura.
On Mon, Dec 15, 2008 at 9:11 PM, Miao Xie <[email protected]> wrote:
> I found the pages that task had allocated to it on nodes in its previous cpuset
> were not migrated to the tasks' current cpuset after 'memory_migrate' was set
> true. It looks strange for users. Why are the pages not migrated to current
> cpuset after 'memory_migrate' is set true?
>
> Step I did
> 1, allocate pages on cpuset (mems is 0, memory_migrate is 0)
> 2, change cpuset's mems (mems: 0 -> 1)
> 3, change cpuset's memory_migrate(memory_migrate: 0 -> 1)
As Daisuke says, migration only occurs when the mems file is changed
*after* memory_migrate has been set to 1.
Paul