From 601057c3a0ef716c5e18ec15bd8ccb444cd17141 Mon Sep 17 00:00:00 2001 From: David Rose Date: Mon, 9 Apr 2007 20:55:25 +0000 Subject: [PATCH] better pstats tracking of loader task --- panda/src/event/Sources.pp | 2 +- panda/src/event/asyncTaskManager.cxx | 15 ++++++++++++++- panda/src/event/asyncTaskManager.h | 4 ++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/panda/src/event/Sources.pp b/panda/src/event/Sources.pp index 5f6555e458..b464e73fae 100644 --- a/panda/src/event/Sources.pp +++ b/panda/src/event/Sources.pp @@ -1,4 +1,4 @@ -#define LOCAL_LIBS putil express pandabase +#define LOCAL_LIBS putil express pandabase pstatclient #define OTHER_LIBS interrogatedb:c dconfig:c dtoolconfig:m \ dtoolutil:c dtoolbase:c dtool:m prc:c diff --git a/panda/src/event/asyncTaskManager.cxx b/panda/src/event/asyncTaskManager.cxx index f6b664e01a..110f6ab63c 100644 --- a/panda/src/event/asyncTaskManager.cxx +++ b/panda/src/event/asyncTaskManager.cxx @@ -23,9 +23,14 @@ #include "eventParameter.h" #include "mutexHolder.h" #include "indent.h" +#include "pStatClient.h" +#include "pStatTimer.h" TypeHandle AsyncTaskManager::_type_handle; +PStatCollector AsyncTaskManager::_task_pcollector("Task"); +PStatCollector AsyncTaskManager::_wait_pcollector("Wait"); + //////////////////////////////////////////////////////////////////// // Function: AsyncTaskManager::Constructor // Access: Published @@ -406,9 +411,17 @@ void AsyncTaskManager::AsyncTaskManagerThread:: thread_main() { MutexHolder holder(_manager->_lock); while (_manager->_state != AsyncTaskManager::S_shutdown) { - _manager->service_one_task(this); + PStatClient::thread_tick(_manager->get_name()); + + { + PStatTimer timer(_task_pcollector); + _manager->service_one_task(this); + } + if (_manager->_active.empty() && _manager->_state != AsyncTaskManager::S_shutdown) { + PStatClient::thread_tick(_manager->get_name()); + PStatTimer timer(_wait_pcollector); _manager->_cvar.wait(); } } diff --git a/panda/src/event/asyncTaskManager.h b/panda/src/event/asyncTaskManager.h index 7274799f87..93c1682be1 100644 --- a/panda/src/event/asyncTaskManager.h +++ b/panda/src/event/asyncTaskManager.h @@ -28,6 +28,7 @@ #include "conditionVarFull.h" #include "pvector.h" #include "pdeque.h" +#include "pStatCollector.h" //////////////////////////////////////////////////////////////////// // Class : AsyncTaskManager @@ -100,6 +101,9 @@ protected: int _num_tasks; State _state; + static PStatCollector _task_pcollector; + static PStatCollector _wait_pcollector; + public: static TypeHandle get_class_type() { return _type_handle;