[lkml]   [2004]   [Jun]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH] Performance regression in 2.6.7-rc3
>> > How the hell can that have any effect on non-threaded workloads? Perhaps
>> > some part of kernel compile *is* multi-threaded. It does seem to get
>> make(1) with vfork(2) perhaps?
> Very likely. And in the vfork() case it is definitely WRONG to try to
> reschedule (either threads _or_ processes), since the parent is going to
> go to sleep real soon now.
> I think this code:
> if (clone_flags & CLONE_VM)
> wake_up_forked_thread(p);
> else
> wake_up_forked_process(p);
> is just wrong, and it should be replaced with
> wake_up_new_process(p, clone_flags);
> and then "wake_up_new_process()" can do the right thing, which is
> basically:
> if (clone_flags & CLONE_VFORK)
> synchronous wakeup, same as pipe-will-block case
> else if (clone_flags & CLONE_VM)
> thread-wakeup-case
> else
> process-wakeup-case
> No?

Looks much better ... but I'd still dispute whether we need to throw
non-vfork threads cross node by default. I'd suggest that's disabled
by default, and is either enabled by a global userspace option, or a
per-process one (or the option of both). Most thing (except benchmarks)
simply don't want this in real life ...


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 14:03    [W:0.063 / U:8.228 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site