diff --git a/src/sview/job_info.c b/src/sview/job_info.c index 1dba62e0f13f2b4d771e3c3eed5f3e2db022fce7..07a730426c257f2a62c7ff8fc7de9f12d8191b70 100644 --- a/src/sview/job_info.c +++ b/src/sview/job_info.c @@ -1746,14 +1746,15 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, GtkTreeStore *treestore, GtkTreeIter *iter) { - char *nodes = NULL, *reason = NULL; char tmp_char[50]; char tmp_time_run[40], tmp_time_resize[40], tmp_time_submit[40]; char tmp_time_elig[40], tmp_time_start[40], tmp_time_end[40]; char tmp_time_sus[40], tmp_time_limit[40], tmp_alloc_node[40]; - char tmp_exit[40], tmp_group_id[40]; - char tmp_cpu_cnt[40], tmp_node_cnt[40]; - char *tmp_batch, *tmp_cont, *tmp_shared, *tmp_requeue, *tmp_uname; + char tmp_exit[40], tmp_group_id[40], tmp_derived_ec[40]; + char tmp_cpu_cnt[40], tmp_node_cnt[40], tmp_disk[40]; + char tmp_cpus_max[40], tmp_mem_min[40], tmp_cpu_req[40]; + char *tmp_batch, *tmp_cont, *tmp_shared, *tmp_requeue, *tmp_uname; + char *tmp_reason, *tmp_nodes; time_t now_time = time(NULL); int suspend_secs = 0; GtkTreeIter step_iter; @@ -1783,6 +1784,26 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, job_ptr->num_cpus); } + convert_num_unit((float)job_ptr->pn_min_cpus, + tmp_cpu_req, sizeof(tmp_cpu_req), UNIT_NONE); + + if (cluster_flags & CLUSTER_FLAG_BG) { + convert_num_unit((float)job_ptr->max_cpus, + tmp_cpus_max, sizeof(tmp_cpus_max), + UNIT_NONE); + } else { + snprintf(tmp_cpus_max, sizeof(tmp_cpus_max), "%u", + job_ptr->max_cpus); + } + + convert_num_unit((float)job_ptr->pn_min_tmp_disk, + tmp_disk, sizeof(tmp_disk), UNIT_MEGA); + + if (WIFSIGNALED(job_ptr->derived_ec)) + term_sig = WTERMSIG(job_ptr->derived_ec); + snprintf(tmp_derived_ec, sizeof(tmp_derived_ec), "%u:%u", + WEXITSTATUS(job_ptr->derived_ec), term_sig); + if (WIFSIGNALED(job_ptr->exit_code)) term_sig = WTERMSIG(job_ptr->exit_code); else @@ -1799,12 +1820,20 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, job_ptr->group_id); } + convert_num_unit((float)job_ptr->pn_min_memory, + tmp_mem_min, sizeof(tmp_mem_min), UNIT_MEGA); + if (cluster_flags & CLUSTER_FLAG_BG) convert_num_unit((float)sview_job_info_ptr->node_cnt, tmp_node_cnt, sizeof(tmp_node_cnt), UNIT_NONE); else sprintf(tmp_node_cnt, "%u", sview_job_info_ptr->node_cnt); + if (job_ptr->state_desc) + tmp_reason = job_ptr->state_desc; + else + tmp_reason = job_reason_string(job_ptr->state_reason); + if (job_ptr->requeue) tmp_requeue = "yes"; else @@ -1817,7 +1846,7 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, if (!job_ptr->nodes || !strcasecmp(job_ptr->nodes,"waiting...")) { sprintf(tmp_time_run,"00:00:00"); - nodes = "waiting..."; + tmp_nodes = "waiting..."; } else { if (IS_JOB_SUSPENDED(job_ptr)) now_time = job_ptr->pre_sus_time; @@ -1836,7 +1865,7 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, } suspend_secs = (time(NULL) - job_ptr->start_time) - now_time; secs2time_str(now_time, tmp_time_run, sizeof(tmp_time_run)); - nodes = sview_job_info_ptr->nodes; + tmp_nodes = sview_job_info_ptr->nodes; } slurm_make_time_str((time_t *)&job_ptr->eligible_time, tmp_time_elig, @@ -1886,20 +1915,27 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, SORTID_COMMENT, job_ptr->comment, SORTID_CONTIGUOUS, tmp_cont, SORTID_CPUS, tmp_cpu_cnt, + SORTID_CPU_MAX, tmp_cpus_max, + SORTID_CPU_MIN, tmp_cpu_cnt, + SORTID_CPU_REQ, tmp_cpu_req, SORTID_DEPENDENCY, job_ptr->dependency, + SORTID_DERIVED_EC, tmp_derived_ec, SORTID_EXIT_CODE, tmp_exit, SORTID_FEATURES, job_ptr->features, SORTID_GRES, job_ptr->gres, SORTID_GROUP_ID, tmp_group_id, SORTID_JOBID, job_ptr->job_id, SORTID_LICENSES, job_ptr->licenses, + SORTID_MEM_MIN, tmp_mem_min, SORTID_NAME, job_ptr->name, SORTID_NODE_INX, job_ptr->node_inx, + SORTID_NODELIST, tmp_nodes, SORTID_NODELIST_EXC, job_ptr->exc_nodes, SORTID_NODELIST_REQ, job_ptr->req_nodes, SORTID_NODES, tmp_node_cnt, SORTID_PARTITION, job_ptr->partition, SORTID_QOS, job_ptr->qos, + SORTID_REASON, tmp_reason, SORTID_REQUEUE, tmp_requeue, SORTID_RESTARTS, job_ptr->restart_cnt, SORTID_RESV_NAME, job_ptr->resv_name, @@ -1915,6 +1951,7 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, SORTID_TIME_SUBMIT, tmp_time_submit, SORTID_TIME_SUSPEND, tmp_time_sus, SORTID_TIMELIMIT, tmp_time_limit, + SORTID_TMP_DISK, tmp_disk, SORTID_UPDATED, 1, SORTID_USER_ID, tmp_uname, SORTID_WCKEY, job_ptr->wckey, @@ -1996,77 +2033,27 @@ static void _update_job_record(sview_job_info_t *sview_job_info_ptr, SORTID_ALPS_RESV_ID, tmp_resv_id, -1); } -/********************************************************/ - - - if (cluster_flags & CLUSTER_FLAG_BG) - convert_num_unit((float)job_ptr->num_cpus, - tmp_char, sizeof(tmp_char), - UNIT_NONE); - else - snprintf(tmp_char, sizeof(tmp_char), "%u", job_ptr->num_cpus); - - gtk_tree_store_set(treestore, iter, - SORTID_CPU_MIN, tmp_char, -1); - - if (cluster_flags & CLUSTER_FLAG_BG) - convert_num_unit((float)job_ptr->max_cpus, - tmp_char, sizeof(tmp_char), - UNIT_NONE); - else - snprintf(tmp_char, sizeof(tmp_char), "%u", job_ptr->max_cpus); - - gtk_tree_store_set(treestore, iter, - SORTID_CPU_MAX, tmp_char, -1); - - gtk_tree_store_set(treestore, iter, SORTID_NODELIST, nodes, -1); sprintf(tmp_char, "%u", sview_job_info_ptr->node_cnt); gtk_tree_store_set(treestore, iter, SORTID_NODES_MIN, tmp_char, -1); + if (job_ptr->max_nodes > 0) { sprintf(tmp_char, "%u", sview_job_info_ptr->node_cnt); gtk_tree_store_set(treestore, iter, SORTID_NODES_MAX, tmp_char, -1); } + if (job_ptr->cpus_per_task > 0) { sprintf(tmp_char, "%u", job_ptr->cpus_per_task); gtk_tree_store_set(treestore, iter, SORTID_CPUS_PER_TASK, tmp_char, -1); } - convert_num_unit((float)job_ptr->pn_min_cpus, - tmp_char, sizeof(tmp_char), UNIT_NONE); - gtk_tree_store_set(treestore, iter, - SORTID_CPU_REQ, tmp_char, -1); - - convert_num_unit((float)job_ptr->pn_min_memory, - tmp_char, sizeof(tmp_char), UNIT_MEGA); - gtk_tree_store_set(treestore, iter, - SORTID_MEM_MIN, tmp_char, -1); - - convert_num_unit((float)job_ptr->pn_min_tmp_disk, - tmp_char, sizeof(tmp_char), UNIT_MEGA); - gtk_tree_store_set(treestore, iter, - SORTID_TMP_DISK, tmp_char, -1); sprintf(tmp_char, "%u", job_ptr->priority); gtk_tree_store_set(treestore, iter, SORTID_PRIORITY, tmp_char, -1); - if (WIFSIGNALED(job_ptr->derived_ec)) - term_sig = WTERMSIG(job_ptr->derived_ec); - snprintf(tmp_char, sizeof(tmp_char), "%u:%u", - WEXITSTATUS(job_ptr->derived_ec), term_sig); - gtk_tree_store_set(treestore, iter, - SORTID_DERIVED_EC, tmp_char, -1); - - if (job_ptr->state_desc) - reason = job_ptr->state_desc; - else - reason = job_reason_string(job_ptr->state_reason); - gtk_tree_store_set(treestore, iter, - SORTID_REASON, reason, -1); - sprintf(tmp_char, "%u", job_ptr->nice - NICE_OFFSET); gtk_tree_store_set(treestore, iter, SORTID_NICE, tmp_char, -1); @@ -2197,80 +2184,72 @@ static void _update_step_record(job_step_info_t *step_ptr, GtkTreeStore *treestore, GtkTreeIter *iter) { - char *nodes = NULL, *uname = NULL; - char tmp_char[50]; - char tmp_time[50]; + char *tmp_nodes, *tmp_uname; + char tmp_cpu_min[40], tmp_time_run[40], tmp_time_limit[40]; + char tmp_node_cnt[40], tmp_time_start[40], tmp_task_cnt[40]; time_t now_time = time(NULL); enum job_states state; - if (!step_ptr->nodes - || !strcasecmp(step_ptr->nodes,"waiting...")) { - sprintf(tmp_time,"00:00:00"); - nodes = "waiting..."; + convert_num_unit((float)step_ptr->num_cpus, tmp_cpu_min, + sizeof(tmp_cpu_min), UNIT_NONE); + + if (!step_ptr->nodes || + !strcasecmp(step_ptr->nodes,"waiting...")) { + sprintf(tmp_time_run, "00:00:00"); + tmp_nodes = "waiting..."; + tmp_node_cnt[0] = '\0'; state = JOB_PENDING; } else { now_time -= step_ptr->start_time; - secs2time_str(now_time, tmp_time, sizeof(tmp_time)); - nodes = step_ptr->nodes; - if (cluster_flags & CLUSTER_FLAG_BG) + secs2time_str(now_time, tmp_time_run, sizeof(tmp_time_run)); + tmp_nodes = step_ptr->nodes; + if (cluster_flags & CLUSTER_FLAG_BG) { convert_num_unit( (float)step_ptr->num_tasks / cpus_per_node, - tmp_char, sizeof(tmp_char), UNIT_NONE); - else - convert_num_unit((float)_nodes_in_list(nodes), - tmp_char, sizeof(tmp_char), UNIT_NONE); - - gtk_tree_store_set(treestore, iter, - SORTID_NODES, tmp_char, -1); + tmp_node_cnt, sizeof(tmp_node_cnt), UNIT_NONE); + } else { + convert_num_unit((float)_nodes_in_list(tmp_nodes), + tmp_node_cnt, sizeof(tmp_node_cnt), + UNIT_NONE); + } state = JOB_RUNNING; } - gtk_tree_store_set(treestore, iter, - SORTID_STATE, - job_state_string(state), -1); - - gtk_tree_store_set(treestore, iter, - SORTID_GRES, step_ptr->gres, - SORTID_NAME, step_ptr->name, - SORTID_PARTITION, step_ptr->partition, - SORTID_JOBID, step_ptr->step_id, - SORTID_UPDATED, 1, - -1); -//NODE COUNT? -//TASK COUNT? - gtk_tree_store_set(treestore, iter, - SORTID_TIME_RUNNING, tmp_time, -1); + convert_num_unit((float)step_ptr->num_tasks, tmp_task_cnt, + sizeof(tmp_task_cnt), UNIT_NONE); - gtk_tree_store_set(treestore, iter, SORTID_ALLOC, 0, -1); if ((step_ptr->time_limit == NO_VAL) || (step_ptr->time_limit == INFINITE)) { - sprintf(tmp_char, "Job Limit"); + sprintf(tmp_time_limit, "Job Limit"); } else { secs2time_str((step_ptr->time_limit * 60), - tmp_char, sizeof(tmp_char)); + tmp_time_limit, sizeof(tmp_time_limit)); } - gtk_tree_store_set(treestore, iter, SORTID_TIMELIMIT, tmp_char, -1); - slurm_make_time_str((time_t *)&step_ptr->start_time, tmp_char, - sizeof(tmp_char)); - gtk_tree_store_set(treestore, iter, SORTID_TIME_START, tmp_char, -1); - uname = uid_to_string((uid_t)step_ptr->user_id); - gtk_tree_store_set(treestore, iter, - SORTID_USER_ID, uname, -1); - xfree(uname); + slurm_make_time_str((time_t *)&step_ptr->start_time, tmp_time_start, + sizeof(tmp_time_start)); - convert_num_unit((float)step_ptr->num_tasks, tmp_char, sizeof(tmp_char), - UNIT_NONE); - gtk_tree_store_set(treestore, iter, - SORTID_TASKS, tmp_char, -1); + tmp_uname = uid_to_string((uid_t)step_ptr->user_id); - convert_num_unit((float)step_ptr->num_cpus, tmp_char, sizeof(tmp_char), - UNIT_NONE); gtk_tree_store_set(treestore, iter, - SORTID_CPU_MIN, tmp_char, -1); + SORTID_ALLOC, 0, + SORTID_CPU_MIN, tmp_cpu_min, + SORTID_GRES, step_ptr->gres, + SORTID_JOBID, step_ptr->step_id, + SORTID_NAME, step_ptr->name, + SORTID_NODELIST, tmp_nodes, + SORTID_NODES, tmp_node_cnt, + SORTID_PARTITION, step_ptr->partition, + SORTID_STATE, job_state_string(state), + SORTID_TASKS, tmp_task_cnt, + SORTID_TIME_RUNNING, tmp_time_run, + SORTID_TIME_START, tmp_time_start, + SORTID_TIMELIMIT, tmp_time_limit, + SORTID_UPDATED, 1, + SORTID_USER_ID, tmp_uname, + -1); - gtk_tree_store_set(treestore, iter, - SORTID_NODELIST, nodes, -1); + xfree(tmp_uname); return; }