* Reintroduced the SMP_MSG_RESCHEDULE_IF_IDLE ICI message. This time

implemented by means of an additional member in cpu_ent.
* Removed thread::keep_scheduled and the related functions. The feature
  wasn't used yet and wouldn't have worked as implemented anyway.
* Resurrected an older, SMP aware version of our simple scheduler and made it
  the default instead of the affine scheduler. The latter is in no state to
  be used yet. It causes enormous latencies (I've seen up to 0.1s) even when
  six or seven CPUs were idle at the same time, totally killing parallelism.
  That's also the reason why a -j8 build was slower than a -j2. This is no
  longer the case. On my machine the -j2 build takes about 10% less time now
  and the -j8 build saves another 20%. The latter is not particularly
  impressive (compared with Linux), but that seems to be due to lock
  contention.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34615 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2009-12-10 11:54:38 +00:00
parent 10b4833178
commit 3533b6597d
13 changed files with 498 additions and 27 deletions
+1 -15
View File
@@ -197,7 +197,7 @@ thread_unblock_locked(struct thread* thread, status_t status)
// wake up the thread, if it is sleeping
if (thread->state == B_THREAD_WAITING)
return scheduler_enqueue_in_run_queue(thread);
return false;
}
@@ -229,18 +229,4 @@ thread_unpin_from_current_cpu(struct thread* thread)
}
static inline void
thread_disable_scheduling(struct thread* thread)
{
thread->keep_scheduled++;
}
static inline void
thread_enable_scheduling(struct thread* thread)
{
thread->keep_scheduled--;
}
#endif /* _THREAD_H */