Re: [BENCHMARK] nproc: netlink access to /proc information

Paul Jackson
2004-08-29T19:08:13Z

> get_tgid_list() is a sad story I don't have time to go into in depth.
> The short version is that larger systems are extremely sensitive to

Thanks, Roger and William, for your good work here. I'm sure that SGI's
big bertha's will benefit.

In glancing at the get_tgid_list() I see it is careful to only pick off
20 (PROC_MAXPIDS) slots at a time. But elsewhere in the kernel, I see
several uses of "do_each_thread()" which rip through the entire task
list in a single shot.

Is there a simple explanation for why it is ok in one place to take on
the entire task list in a single sweep, but in another it is important
to drop the lock every 20 slots?

>From the code and nice comments, I see that:
(1) the work that had to be done by proc_pid_readdir(), the caller of
get_tgid_list(), required dropping the task list lock, and
(2) so the harvested tgid's had to be stashed in a temp buffer.

So perhaps the reason for not doing this in a single pass is:
(3) it was not doable or not desirable (which one?) to size that temp
buffer large enough to hold all the harvested tgid's in one pass.

But my understanding is losing the scent of the trail at this point.

--
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <pj@sgi.com> 1.650.933.1373