Hunting down elusive source of lag.
Change-Id: I9380bc5238202aeac7cbf89c32121b088451e02d
Showing
1 changed file
with
9 additions
and
4 deletions
| ... | @@ -245,10 +245,13 @@ public class FlowObjectiveManager implements FlowObjectiveService { | ... | @@ -245,10 +245,13 @@ public class FlowObjectiveManager implements FlowObjectiveService { |
| 245 | 245 | ||
| 246 | // Attempt to lookup the handler in the cache | 246 | // Attempt to lookup the handler in the cache |
| 247 | DriverHandler handler = driverHandlers.get(deviceId); | 247 | DriverHandler handler = driverHandlers.get(deviceId); |
| 248 | + cTime = now(); | ||
| 249 | + | ||
| 248 | if (handler == null) { | 250 | if (handler == null) { |
| 249 | try { | 251 | try { |
| 250 | // Otherwise create it and if it has pipeline behaviour, cache it | 252 | // Otherwise create it and if it has pipeline behaviour, cache it |
| 251 | handler = driverService.createHandler(deviceId); | 253 | handler = driverService.createHandler(deviceId); |
| 254 | + dTime = now(); | ||
| 252 | if (!handler.driver().hasBehaviour(Pipeliner.class)) { | 255 | if (!handler.driver().hasBehaviour(Pipeliner.class)) { |
| 253 | log.warn("Pipeline behaviour not supported for device {}", | 256 | log.warn("Pipeline behaviour not supported for device {}", |
| 254 | deviceId); | 257 | deviceId); |
| ... | @@ -260,6 +263,7 @@ public class FlowObjectiveManager implements FlowObjectiveService { | ... | @@ -260,6 +263,7 @@ public class FlowObjectiveManager implements FlowObjectiveService { |
| 260 | } | 263 | } |
| 261 | 264 | ||
| 262 | driverHandlers.put(deviceId, handler); | 265 | driverHandlers.put(deviceId, handler); |
| 266 | + eTime = now(); | ||
| 263 | } | 267 | } |
| 264 | 268 | ||
| 265 | // Always (re)initialize the pipeline behaviour | 269 | // Always (re)initialize the pipeline behaviour |
| ... | @@ -330,7 +334,7 @@ public class FlowObjectiveManager implements FlowObjectiveService { | ... | @@ -330,7 +334,7 @@ public class FlowObjectiveManager implements FlowObjectiveService { |
| 330 | // Temporary mechanism to monitor pipeliner setup time-cost; there are | 334 | // Temporary mechanism to monitor pipeliner setup time-cost; there are |
| 331 | // intermittent time where this takes in excess of 2 seconds. Why? | 335 | // intermittent time where this takes in excess of 2 seconds. Why? |
| 332 | private long start = 0, totals = 0, count = 0; | 336 | private long start = 0, totals = 0, count = 0; |
| 333 | - private long hTime, hbTime; | 337 | + private long cTime, dTime, eTime, hTime, hbTime; |
| 334 | private static final long LIMIT = 500; | 338 | private static final long LIMIT = 500; |
| 335 | 339 | ||
| 336 | private long now() { | 340 | private long now() { |
| ... | @@ -342,13 +346,14 @@ public class FlowObjectiveManager implements FlowObjectiveService { | ... | @@ -342,13 +346,14 @@ public class FlowObjectiveManager implements FlowObjectiveService { |
| 342 | totals += duration; | 346 | totals += duration; |
| 343 | count += 1; | 347 | count += 1; |
| 344 | if (duration > LIMIT) { | 348 | if (duration > LIMIT) { |
| 345 | - log.info("Pipeline setup took {} ms; avg {} ms; hTime={}, hbTime={}", | 349 | + log.info("Pipeline setup took {} ms; avg {} ms; cTime={}, dTime={}, eTime={}, hTime={}, hbTime={}", |
| 346 | - duration, totals / count, diff(hTime), diff(hbTime)); | 350 | + duration, totals / count, diff(cTime), diff(dTime), diff(eTime), diff(hTime), diff(hbTime)); |
| 347 | } | 351 | } |
| 348 | } | 352 | } |
| 349 | 353 | ||
| 350 | private long diff(long bTime) { | 354 | private long diff(long bTime) { |
| 351 | - return bTime - start; | 355 | + long diff = bTime - start; |
| 356 | + return diff < 0 ? 0 : diff; | ||
| 352 | } | 357 | } |
| 353 | 358 | ||
| 354 | // Processing context for initializing pipeline driver behaviours. | 359 | // Processing context for initializing pipeline driver behaviours. | ... | ... |
-
Please register or login to post a comment