Skip to content

Commit f503d3d

Browse files
authored
Fallback resources: allocated to measured (#3998)
* add merge default to rmsummary * fallback to committe resources when monitoring not enabled
1 parent c43120d commit f503d3d

File tree

3 files changed

+28
-5
lines changed

3 files changed

+28
-5
lines changed

dttools/src/rmsummary.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -742,6 +742,21 @@ void rmsummary_merge_override_basic(struct rmsummary *dest, const struct rmsumma
742742
RM_BIN_OP_BASIC(dest, src, override_field);
743743
}
744744

745+
/* Copy the value for all the fields in src to dest when dest < 0 */
746+
static inline double default_field(double d, double s)
747+
{
748+
return (d > -1) ? d : s;
749+
}
750+
751+
void rmsummary_merge_default(struct rmsummary *dest, const struct rmsummary *src)
752+
{
753+
if (!src) {
754+
return;
755+
}
756+
757+
RM_BIN_OP(dest, src, default_field);
758+
}
759+
745760
struct rmsummary *rmsummary_copy(const struct rmsummary *src, int deep_copy)
746761
{
747762
struct rmsummary *dest = rmsummary_create(-1);

dttools/src/rmsummary.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ void rmsummary_merge_max_w_time(struct rmsummary *dest, const struct rmsummary *
111111
struct rmsummary *rmsummary_copy(const struct rmsummary *src, int deep_copy);
112112
void rmsummary_merge_override(struct rmsummary *dest, const struct rmsummary *src);
113113
void rmsummary_merge_override_basic(struct rmsummary *dest, const struct rmsummary *src);
114+
void rmsummary_merge_default(struct rmsummary *dest, const struct rmsummary *src);
114115
void rmsummary_merge_max(struct rmsummary *dest, const struct rmsummary *src);
115116
void rmsummary_merge_min(struct rmsummary *dest, const struct rmsummary *src);
116117
void rmsummary_add(struct rmsummary *dest, const struct rmsummary *src);

taskvine/src/manager/vine_manager.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -566,12 +566,17 @@ static vine_result_code_t get_completion_result(struct vine_manager *q, struct v
566566
t->time_workers_execute_last = observed_execution_time > execution_time ? execution_time : observed_execution_time;
567567
t->time_workers_execute_last_start = start_time;
568568
t->time_workers_execute_last_end = end_time;
569-
t->resources_measured->wall_time = t->time_workers_execute_last_end - t->time_workers_execute_last_start;
570569
t->time_workers_execute_all += t->time_workers_execute_last;
571570
t->output_length = output_length;
572571
t->result = task_status;
573572
t->exit_code = exit_status;
574573

574+
/* fill resources measured with whatever vine reported/committed, as a fallback when task ran without monitoring enabled */
575+
t->resources_measured->start = ((double)start_time) / ONE_SECOND;
576+
t->resources_measured->end = ((double)end_time) / ONE_SECOND;
577+
t->resources_measured->wall_time = ((double)t->time_workers_execute_last) / ONE_SECOND;
578+
rmsummary_merge_override_basic(t->resources_measured, t->resources_allocated);
579+
575580
/* If output is less than 1KB stdout is sent along with completion msg. retrieve it from the link. */
576581
if (bytes_sent) {
577582
get_stdout(q, w, t, bytes_sent);
@@ -1168,12 +1173,14 @@ static void read_measured_resources(struct vine_manager *q, struct vine_task *t)
11681173
{
11691174
char *summary = monitor_file_name(q, t, ".summary", 0);
11701175

1171-
if (t->resources_measured) {
1172-
rmsummary_delete(t->resources_measured);
1173-
}
1174-
1176+
struct rmsummary *tmp = t->resources_measured;
11751177
t->resources_measured = rmsummary_parse_file_single(summary);
11761178

1179+
/* read the fallback values set by get_completion_result, if any */
1180+
/* if tmp is null that's ok, both delete and merge_default check for it */
1181+
rmsummary_merge_default(t->resources_measured, tmp);
1182+
rmsummary_delete(tmp);
1183+
11771184
if (t->resources_measured) {
11781185
t->exit_code = t->resources_measured->exit_status;
11791186

0 commit comments

Comments
 (0)