Upload Statistics Monitoring in BOINC
Target : To Keep track of the statistics of how long it takes to upload files, and to report results and then to use that info to improve compute deadlines.
The absolute time taken for upload of files is calculated (i.e. from the moment first file upload begins to the point where all uploads have completed). In order to calculate this time, in class ACTIVE_TASK, a variable is added as bool first_upload_started. Initially its value is set to false. Now in the function upload_notify_app(const FILE_INFO* fip, const FILE_REF* frp), after send_upload_file_status = true, if first_upload_started is false, then it is set to true and the current time is recorded. This acts as the start time. Then for the end time, in class RESULT, as the return value of is_upload_done becomes true, that point of time is the end time, and the difference between these times acts as the upload time. With this value of time, an exponential average of times is maintained in order to get a usable value for improving compute deadlines.