Matt Helsley wrote:> On Wed, 2006-11-01 at 15:50 -0800, Paul Menage wrote:>> On 11/1/06, Matt Helsley <matthltc@us.ibm.com> wrote:>>> On Wed, 2006-11-01 at 23:42 +0530, Srivatsa Vaddagiri wrote:>>>> On Wed, Nov 01, 2006 at 12:30:13PM +0300, Pavel Emelianov wrote:>>> <snip>>>>>>>>>> - Support movement of all threads of a process from one group>>>>>> to another atomically?>>>>> I propose such a solution: if a user asks to move /proc/<pid>>>>>> then move the whole task with threads.>>>>> If user asks to move /proc/<pid>/task/<tid> then move just>>>>> a single thread.>>>>>>>>>> What do you think?>>>> Isnt /proc/<pid> listed also in /proc/<pid>/task/<tid>?>>>>>>>> For ex:>>>>>>>> # ls /proc/2906/task>>>> 2906 2907 2908 2909>>>>>>>> 2906 is the main thread which created the remaining threads.>>>>>>>> This would lead to an ambiguity when user does something like below:>>>>>>>> echo 2906 > /some_res_file_system/some_new_group>>>>>>>> Is he intending to move just the main thread, 2906, to the new group or>>>> all the threads? It could be either.>>>>>>>> This needs some more thought ...>>> I thought the idea was to take in a proc path instead of a single>>> number. You could then distinguish between the whole thread group and>>> individual threads by parsing the string. You'd move a single thread if>>> you find both the tgid and the tid. If you only get a tgid you'd move>>> the whole thread group. So:>>>>>> <pid> -> if it's a thread group leader move the whole>>> thread group, otherwise just move the thread>>> /proc/<tgid> -> move the whole thread group>>> /proc/<tgid>/task/<tid> -> move the thread>>>>>>>>> Alternatives that come to mind are:>>>>>> 1. Read a flag with the pid>>> 2. Use a special file which expects only thread groups as input>> I think that having a "tasks" file and a "threads" file in each>> container directory would be a clean way to handle it:>>>> "tasks" : read/write complete process members>> "threads" : read/write individual thread members>>>> Paul> > Seems like a good idea to me -- that certainly avoids complex parsing.> > Cheers,> -Matt Helsley>

Yeah, sounds like a good idea. We need to give the controllers some controlover whether they support task movement, thread movement or both.