History

add additional tracking of max elapsed

Brad Hefta-Gaub committed 10 years ago

Commit deed6431 parent 6eed8fb1 file · +31 −6Browse files

Showing the changes to interface/src/Application.cpp (1 of 1 file). Show all

Unified · Split

interface/src/Application.cpp+31−6
@@ -280,19 +280,42 @@ public: · 279 unmodified lines
280 auto sinceLastReport = now - _lastReport;280 auto sinceLastReport = now - _lastReport;
281 int elapsedMovingAverage = _movingAverage.average;281 int elapsedMovingAverage = _movingAverage.average;
282 282
283 if (elapsedMovingAverage > _maxElapsed) {283 if (elapsedMovingAverage > _maxElapsedAverage) {
284 _maxElapsed = elapsedMovingAverage;284 qDebug() << "DEADLOCK WATCHDOG NEW maxElapsedAverage:"
285 << "lastHeartbeatAge:" << lastHeartbeatAge
286 << "elapsedMovingAverage:" << elapsedMovingAverage
287 << "maxElapsed:" << _maxElapsed
288 << "PREVIOUS maxElapsedAverage:" << _maxElapsedAverage
289 << "NEW maxElapsedAverage:" << elapsedMovingAverage
290 << "numSamples:" << _movingAverage.numSamples;
291 _maxElapsedAverage = elapsedMovingAverage;
292 }
293 if (lastHeartbeatAge > _maxElapsed) {
294 qDebug() << "DEADLOCK WATCHDOG NEW maxElapsed:"
295 << "lastHeartbeatAge:" << lastHeartbeatAge
296 << "elapsedMovingAverage:" << elapsedMovingAverage
297 << "PREVIOUS maxElapsed:" << _maxElapsed
298 << "NEW maxElapsed:" << lastHeartbeatAge
299 << "maxElapsedAverage:" << _maxElapsedAverage
300 << "numSamples:" << _movingAverage.numSamples;
301 _maxElapsed = lastHeartbeatAge;
285 }302 }
286 if ((sinceLastReport > HEARTBEAT_REPORT_INTERVAL_USECS) || (elapsedMovingAverage > WARNING_ELAPSED_HEARTBEAT)) {303 if ((sinceLastReport > HEARTBEAT_REPORT_INTERVAL_USECS) || (elapsedMovingAverage > WARNING_ELAPSED_HEARTBEAT)) {
287 qDebug() << "updateHeartbeat.elapsedMovingAverage:" << elapsedMovingAverage 304 qDebug() << "DEADLOCK WATCHDOG STATUS -- lastHeartbeatAge:" << lastHeartbeatAge
288 << " maxElapsed:" << _maxElapsed << "numSamples:" << _movingAverage.numSamples;305 << "elapsedMovingAverage:" << elapsedMovingAverage
306 << "maxElapsed:" << _maxElapsed
307 << "maxElapsedAverage:" << _maxElapsedAverage
308 << "numSamples:" << _movingAverage.numSamples;
289 _lastReport = now;309 _lastReport = now;
290 }310 }
291 311
292#ifdef NDEBUG312#ifdef NDEBUG
293 if (lastHeartbeatAge > MAX_HEARTBEAT_AGE_USECS) {313 if (lastHeartbeatAge > MAX_HEARTBEAT_AGE_USECS) {
294 qDebug() << "DEADLOCK DETECTED -- updateHeartbeat.elapsedMovingAverage:" << elapsedMovingAverage314 qDebug() << "DEADLOCK DETECTED -- lastHeartbeatAge:" << lastHeartbeatAge
295 << " maxElapsed:" << _maxElapsed << "numSamples:" << _movingAverage.numSamples;315 << "elapsedMovingAverage:" << elapsedMovingAverage
316 << "maxElapsed:" << _maxElapsed
317 << "maxElapsedAverage:" << _maxElapsedAverage
318 << "numSamples:" << _movingAverage.numSamples;
296 deadlockDetectionCrash();319 deadlockDetectionCrash();
297 }320 }
298#endif321#endif
@@ -302,6 +325,7 @@ public: · 3 unmodified lines
302 static std::atomic<uint64_t> _heartbeat;325 static std::atomic<uint64_t> _heartbeat;
303 static std::atomic<uint64_t> _lastReport;326 static std::atomic<uint64_t> _lastReport;
304 static std::atomic<int> _maxElapsed;327 static std::atomic<int> _maxElapsed;
328 static std::atomic<int> _maxElapsedAverage;
305 bool _quit { false };329 bool _quit { false };
306 MovingAverage<int, HEARTBEAT_SAMPLES> _movingAverage;330 MovingAverage<int, HEARTBEAT_SAMPLES> _movingAverage;
307};331};
@@ -309,6 +333,7 @@ public: · 1 unmodified line
309std::atomic<uint64_t> DeadlockWatchdogThread::_heartbeat;333std::atomic<uint64_t> DeadlockWatchdogThread::_heartbeat;
310std::atomic<uint64_t> DeadlockWatchdogThread::_lastReport;334std::atomic<uint64_t> DeadlockWatchdogThread::_lastReport;
311std::atomic<int> DeadlockWatchdogThread::_maxElapsed;335std::atomic<int> DeadlockWatchdogThread::_maxElapsed;
336std::atomic<int> DeadlockWatchdogThread::_maxElapsedAverage;
312 337
313#ifdef Q_OS_WIN338#ifdef Q_OS_WIN
314class MyNativeEventFilter : public QAbstractNativeEventFilter {339class MyNativeEventFilter : public QAbstractNativeEventFilter {