#
189010cb |
|
19-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added support for I/O scheduling events to the system profiler interface. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34703 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d8d4b902 |
|
07-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* The system profiler scheduling event structures sport nanotime_ts now. * Adjusted the DebugAnalyzer to handle nanosecond times. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34546 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
22a332f0 |
|
29-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added a base struct for the scheduling event structures. To keep the interface C friendly it's not an actual base class, but casting to it is fine. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30503 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
227fe7d3 |
|
23-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Scheduler/wait object listener: - Moved scheduler listening interface to <listeners.h> and added more convenient to use templatized notification functions. - Added a listener mechanism for the wait objects (semaphores, condition variables, mutex, rw_lock). * system profiler: - Hopefully fixed locking issues related to notifying the profiler thread for good. We still had an inconsistent locking order, since the scheduler notification callbacks are invoked with the thread lock held and have to acquire the object lock then, while the other callbacks acquired the object lock first and as a side effect of ConditionVariable::NotifyOne() acquired the thread lock. Now we make sure the object lock is the innermost lock. - Track the number of dropped events due to a full buffer. _user_system_profiler_next_buffer() returns this count now. - When scheduling profiling events are requested also listen to wait objects and generate the respective profiling events. We send those events lazily and cache the infos to avoid resending an event for the same wait object. - When starting profiling we do now generate "thread scheduled" events for the already running threads. - _user_system_profiler_start(): Check whether the parameters pointer is a userland address at all. - The system_profiler_team_added event does now also contain the team's name. * Added a sem_get_name_unsafe() returning a semaphore's name. It is "unsafe", since the caller has to ensure that the semaphore exists and continues to exist as long as the returned name is used. * Adjusted the "profile" and "scheduling_recorder" according to the system profiling changes. The latter prints the number of dropped events, now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30345 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5b2f0f33 |
|
18-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Changed the interface of _kern_system_profiler_start(). The parameters are passed in a structure now, so it is easier to extend it and ignore unused parameters. * One can now select which system profiling events one is interested in. * Added scheduling events to the system profiling interface. Those are pretty much the ones recorded when scheduler tracing is enabled. Still missing are the "wait object" events that allow to interpret what a thread is waiting for. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30243 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1b9d2885 |
|
16-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Also pass the team arguments and thread names with the respective system profiling events. * profile: Avoid using get_{team,thread}_info() in common code paths. The system profiling mode is asynchronous, so the team or thread in question could already be gone. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30193 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e2ae69da |
|
11-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
The kernel side of a new system-wide sampling-based profiling mechanism. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30127 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
189010cbc29bd03a7fa6af44fbe1591774b5080a |
|
19-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added support for I/O scheduling events to the system profiler interface. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34703 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d8d4b902cb1b24645c5a730e3a8b279201b94419 |
|
07-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* The system profiler scheduling event structures sport nanotime_ts now. * Adjusted the DebugAnalyzer to handle nanosecond times. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34546 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
22a332f0b067310105799ea7f4163a9700ce6f2a |
|
29-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Added a base struct for the scheduling event structures. To keep the interface C friendly it's not an actual base class, but casting to it is fine. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30503 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
227fe7d34aeed45d0727a0abde2ea2309352983b |
|
23-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Scheduler/wait object listener: - Moved scheduler listening interface to <listeners.h> and added more convenient to use templatized notification functions. - Added a listener mechanism for the wait objects (semaphores, condition variables, mutex, rw_lock). * system profiler: - Hopefully fixed locking issues related to notifying the profiler thread for good. We still had an inconsistent locking order, since the scheduler notification callbacks are invoked with the thread lock held and have to acquire the object lock then, while the other callbacks acquired the object lock first and as a side effect of ConditionVariable::NotifyOne() acquired the thread lock. Now we make sure the object lock is the innermost lock. - Track the number of dropped events due to a full buffer. _user_system_profiler_next_buffer() returns this count now. - When scheduling profiling events are requested also listen to wait objects and generate the respective profiling events. We send those events lazily and cache the infos to avoid resending an event for the same wait object. - When starting profiling we do now generate "thread scheduled" events for the already running threads. - _user_system_profiler_start(): Check whether the parameters pointer is a userland address at all. - The system_profiler_team_added event does now also contain the team's name. * Added a sem_get_name_unsafe() returning a semaphore's name. It is "unsafe", since the caller has to ensure that the semaphore exists and continues to exist as long as the returned name is used. * Adjusted the "profile" and "scheduling_recorder" according to the system profiling changes. The latter prints the number of dropped events, now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30345 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5b2f0f33f9bcfadc050342f4937b0e4bf31fc6eb |
|
18-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Changed the interface of _kern_system_profiler_start(). The parameters are passed in a structure now, so it is easier to extend it and ignore unused parameters. * One can now select which system profiling events one is interested in. * Added scheduling events to the system profiling interface. Those are pretty much the ones recorded when scheduler tracing is enabled. Still missing are the "wait object" events that allow to interpret what a thread is waiting for. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30243 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1b9d2885d30d9fb9bdd083550d9da97c0e80af6c |
|
16-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Also pass the team arguments and thread names with the respective system profiling events. * profile: Avoid using get_{team,thread}_info() in common code paths. The system profiling mode is asynchronous, so the team or thread in question could already be gone. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30193 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e2ae69da521f652fa907f3119179ea5674f6a1a0 |
|
11-Apr-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
The kernel side of a new system-wide sampling-based profiling mechanism. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30127 a95241bf-73f2-0310-859d-f6bbb57e9c96
|