Ticket #90 (closed enhancement: fixed)

Opened 6 years ago

Last modified 5 years ago

Generic speed meter

Reported by: Joel Owned by: Joel
Priority: trivial Milestone: Eraser 6.1/6.2
Component: User Interface (UX) Version:
Keywords: Cc:
Processor Architecture: Blocked By:
Blocking: #284 Operating System:

Description

The DirectExecutor? code needs a generic way of measuring speed and amount of time required to complete a task, so that the speed and progress measurements can be used for erasing any kinds of stuff.

Blocking

IdSummaryMilestone
#90Generic speed meterEraser 6.1/6.2
#284Eraser.Util rewriteEraser 6.1/6.2
#275Code ReviewEraser 6.1/6.2
#262Localise the Util.Native and Util librariesEraser 6.1/6.2

Blocked by

IdSummaryMilestone
#90Generic speed meterEraser 6.1/6.2

Change History

comment:1 Changed 6 years ago by Joel

Some progress made in r804

comment:2 Changed 6 years ago by Joel

  • Status changed from new to accepted
  • Owner set to Joel

comment:3 Changed 6 years ago by Joel

  • Priority changed from minor to trivial

comment:4 Changed 5 years ago by Joel

Perhaps even store the previous execution state so that when new event handlers arrive they can get cached information? Perhaps this can help with #173

comment:5 Changed 5 years ago by Joel

Some progress in r896.

comment:6 Changed 5 years ago by Joel

Change the TaskProgressManager? constructor to not depend on the tasks being registered to give the total data size as the data may not be completely present for analysis at the point of construction (e.g. in DirectExecutor?.Main)

comment:7 Changed 5 years ago by Joel

  • Milestone changed from Eraser 6.0.7 to Eraser 6.1/6.2
  • Calculate in terms of work units
  • Start/stop functions to sample work units per sec
  • Calculate end time

comment:8 Changed 5 years ago by Joel

Also, it'll be good to unify how progress feedback is given to interested clients. Perhaps, follow an interface or a particular callback prototype that's defined in the speed meter class?

comment:9 Changed 5 years ago by Joel

The meter will need to take into account weighted progress steps. Also define a standard callback function for progress.

comment:10 Changed 5 years ago by Joel

The speed meter must also be multithreaded!

comment:11 Changed 5 years ago by Joel

  • Blocking 275 added

comment:12 Changed 5 years ago by Joel

comment:13 Changed 5 years ago by Joel

As of now, the summary:

Currently proposed design achieves:

  • storing the previous progress value; the progress is stored together with the Task and Targets; progress information is always available and independent of waiting for a progress event to be fired.
  • task progress is only dependent on Total and Complete values (for ProgressManager class), or chained progress managers (for ChainedProgressManager derivatives SteppedProgressManager and ParallelProgressManager)
  • work units are the only form of progress computation (unit agnostic)
  • estimated completion time possible based on the Speed of the task over the time taken to complete the current amount of work
  • the SteppedProgressManager allows us to compute overall progress based on steps competed

It does not/is not:

  • allow sampling of speed
  • unify the way progress is reported to clients
  • thread-safe

comment:14 Changed 5 years ago by Joel

As of r1510 the Chained progress managers are thread-safe.

The next step in completing this ticket will be to use the ProgressManager? classes across the entire Eraser solution. Current candidates:

  • BlackBox branch: The Uploader
  • Trunk: Updater

comment:15 Changed 5 years ago by Joel

  • Blocking 284 added

comment:16 Changed 5 years ago by Joel

The Updater code now uses the ProgressManager? classes for progress calculations since r1511

comment:17 Changed 5 years ago by Joel

There's a standard method of broadcasting the events to interested listeners since r1512.

comment:18 Changed 5 years ago by Joel

  • Status changed from accepted to closed
  • Resolution set to fixed

Branch merged in r1515. Task has been completed.

comment:19 Changed 5 years ago by Joel

  • Blocking 275 removed
Note: See TracTickets for help on using tickets.