Changed the way how CPU activity is monitored: instead of taking the active

time of the idle thread as a measure, we now compute the CPU activity on
each thread switch - the time the CPU worked is the total of user and kernel
time a thread spent during its quantum.
Unlike before, this mechanism works correctly on SMP machines. I hope this
works as expected :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16193 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2006-02-01 20:03:55 +00:00
parent a5fa64b505
commit d14aab0dca
7 changed files with 63 additions and 41 deletions
+8 -3
View File
@@ -34,7 +34,6 @@ status_t thread_per_cpu_init(int32 cpuNum);
void thread_yield(void);
void thread_exit(void);
bigtime_t thread_get_active_cpu_time(int32 cpuNum);
int32 thread_max_threads(void);
int32 thread_used_threads(void);
@@ -47,8 +46,14 @@ static thread_id thread_get_current_thread_id(void);
static inline thread_id
thread_get_current_thread_id(void)
{
struct thread *t = thread_get_current_thread();
return t ? t->id : 0;
struct thread *thread = thread_get_current_thread();
return thread ? thread->id : 0;
}
static inline bool
thread_is_idle_thread(struct thread *thread)
{
return thread->entry == NULL;
}
thread_id allocate_thread_id(void);