Re: [RFC] on general object IDs again

From: KOSAKI Motohiro
Date: Wed Jan 11 2012 - 14:30:16 EST


>> > Then, you only need to compare. not any other calculation. i.e. only
>> > need id uniqueness.
>> > And any resource are referenced from tasks. so, can you reuse pid for
>> > this? example,
>> > two taska share one mm.
>> >
>> > task-a(pid: 100)
>> >               |-----------------mm
>> > task-b(pid: 200)
>> >
>> >
>> > gen_obj_id(task-b, GEN_OBJ_ID_VM) return 100. (youngest pid of referenced tasks)
>>
>> We can, but determining the youngest pid for an mm struct is O(N) algo.
>> Having N tasks with N mm_structs getting the sharing picture becomes O(N^2).
>
> Yeah, exactly. If not the speed problem we would simply stick
> with Andrew's proposal as two-id-are-the-same(pid1, pid2)
> syscall.

Why O(N^2) is matter? Typical HPC system have mere a few hundred pids.
so, O(N^2)
is not slow. How do you mesure Andrew's proposal?

If you have 1000 pids and each syscall need 10usec,

1000 * 1000 * 10 = 10,000,000usec = 10sec. But, important thing is, almost all
processes don't share fs, mm and other structs. then, if we check
reference count
before task traversal, required time may reduce 1/10x - 1/100x.


> But when we get a number of pids to dump we need the
> resource affinity picture over them all.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/