From 43f7ed985d0d69374ddfe11d2102d8beb70ef79e Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Fri, 21 Dec 2007 00:50:48 +0000 Subject: [PATCH] Move total_procs from job details structure to job structure in slurmctld --- .../filetxt/jobacct_storage_filetxt.c | 6 ++--- .../mysql/jobacct_storage_mysql.c | 6 ++--- .../pgsql/jobacct_storage_pgsql.c | 6 ++--- src/slurmctld/job_mgr.c | 26 ++++++++----------- src/slurmctld/node_scheduler.c | 5 ++-- src/slurmctld/slurmctld.h | 4 +-- 6 files changed, 24 insertions(+), 29 deletions(-) diff --git a/src/plugins/jobacct_storage/filetxt/jobacct_storage_filetxt.c b/src/plugins/jobacct_storage/filetxt/jobacct_storage_filetxt.c index 7300027d4bc..c2601632a07 100644 --- a/src/plugins/jobacct_storage/filetxt/jobacct_storage_filetxt.c +++ b/src/plugins/jobacct_storage/filetxt/jobacct_storage_filetxt.c @@ -323,7 +323,7 @@ extern int jobacct_storage_p_job_start(struct job_record *job_ptr) tmp = snprintf(buf, BUFFER_SIZE, "%d %s %d %ld %u %s %s", JOB_START, jname, - track_steps, priority, job_ptr->details->total_procs, + track_steps, priority, job_ptr->total_procs, nodes, account); rc = _print_record(job_ptr, job_ptr->start_time, buf); @@ -393,7 +393,7 @@ extern int jobacct_storage_p_step_start(struct step_record *step_ptr) #else if(!step_ptr->step_layout || !step_ptr->step_layout->task_cnt) { - cpus = step_ptr->job_ptr->details->total_procs; + cpus = step_ptr->job_ptr->total_procs; snprintf(node_list, BUFFER_SIZE, "%s", step_ptr->job_ptr->nodes); } else { cpus = step_ptr->step_layout->task_cnt; @@ -509,7 +509,7 @@ extern int jobacct_storage_p_step_complete(struct step_record *step_ptr) #else if(!step_ptr->step_layout || !step_ptr->step_layout->task_cnt) { - cpus = step_ptr->job_ptr->details->total_procs; + cpus = step_ptr->job_ptr->total_procs; snprintf(node_list, BUFFER_SIZE, "%s", step_ptr->job_ptr->nodes); } else { diff --git a/src/plugins/jobacct_storage/mysql/jobacct_storage_mysql.c b/src/plugins/jobacct_storage/mysql/jobacct_storage_mysql.c index 494b57f5a1c..554ec9fb7fb 100644 --- a/src/plugins/jobacct_storage/mysql/jobacct_storage_mysql.c +++ b/src/plugins/jobacct_storage/mysql/jobacct_storage_mysql.c @@ -381,7 +381,7 @@ try_again: (int)job_ptr->start_time, jname, track_steps, job_ptr->job_state & (~JOB_COMPLETING), - priority, job_ptr->details->total_procs, + priority, job_ptr->total_procs, nodes, account); rc = mysql_db_query(jobacct_mysql_db, query); } else if(!reinit) { @@ -494,7 +494,7 @@ extern int jobacct_storage_p_step_start(struct step_record *step_ptr) #else if(!step_ptr->step_layout || !step_ptr->step_layout->task_cnt) { - cpus = step_ptr->job_ptr->details->total_procs; + cpus = step_ptr->job_ptr->total_procs; snprintf(node_list, BUFFER_SIZE, "%s", step_ptr->job_ptr->nodes); } else { cpus = step_ptr->step_layout->task_cnt; @@ -572,7 +572,7 @@ extern int jobacct_storage_p_step_complete(struct step_record *step_ptr) #else if(!step_ptr->step_layout || !step_ptr->step_layout->task_cnt) - cpus = step_ptr->job_ptr->details->total_procs; + cpus = step_ptr->job_ptr->total_procs; else cpus = step_ptr->step_layout->task_cnt; #endif diff --git a/src/plugins/jobacct_storage/pgsql/jobacct_storage_pgsql.c b/src/plugins/jobacct_storage/pgsql/jobacct_storage_pgsql.c index eda7fd8f4c5..47f5bfbac4f 100644 --- a/src/plugins/jobacct_storage/pgsql/jobacct_storage_pgsql.c +++ b/src/plugins/jobacct_storage/pgsql/jobacct_storage_pgsql.c @@ -441,7 +441,7 @@ try_again: (int)job_ptr->start_time, jname, track_steps, job_ptr->job_state & (~JOB_COMPLETING), - priority, job_ptr->details->total_procs, + priority, job_ptr->total_procs, nodes, account); rc = pgsql_db_query(jobacct_pgsql_db, query); } else if(!reinit) { @@ -554,7 +554,7 @@ extern int jobacct_storage_p_step_start(struct step_record *step_ptr) #else if(!step_ptr->step_layout || !step_ptr->step_layout->task_cnt) { - cpus = step_ptr->job_ptr->details->total_procs; + cpus = step_ptr->job_ptr->total_procs; snprintf(node_list, BUFFER_SIZE, "%s", step_ptr->job_ptr->nodes); } else { cpus = step_ptr->step_layout->task_cnt; @@ -632,7 +632,7 @@ extern int jobacct_storage_p_step_complete(struct step_record *step_ptr) #else if(!step_ptr->step_layout || !step_ptr->step_layout->task_cnt) - cpus = step_ptr->job_ptr->details->total_procs; + cpus = step_ptr->job_ptr->total_procs; else cpus = step_ptr->step_layout->task_cnt; #endif diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c index 45e753d590b..89da29930c1 100644 --- a/src/slurmctld/job_mgr.c +++ b/src/slurmctld/job_mgr.c @@ -487,6 +487,7 @@ static void _dump_job_state(struct job_record *dump_job_ptr, Buf buffer) pack32(dump_job_ptr->priority, buffer); pack32(dump_job_ptr->alloc_sid, buffer); pack32(dump_job_ptr->num_procs, buffer); + pack32(dump_job_ptr->total_procs, buffer); pack32(dump_job_ptr->exit_code, buffer); pack32(dump_job_ptr->db_index, buffer); @@ -552,7 +553,7 @@ static void _dump_job_state(struct job_record *dump_job_ptr, Buf buffer) static int _load_job_state(Buf buffer) { uint32_t job_id, user_id, group_id, time_limit, priority, alloc_sid; - uint32_t exit_code, num_procs, db_index, name_len; + uint32_t exit_code, num_procs, db_index, name_len, total_procs; time_t start_time, end_time, suspend_time, pre_sus_time, tot_sus_time; uint16_t job_state, next_step_id, details, batch_flag, step_flag; uint16_t kill_on_node_fail, kill_on_step_done; @@ -572,6 +573,7 @@ static int _load_job_state(Buf buffer) safe_unpack32(&priority, buffer); safe_unpack32(&alloc_sid, buffer); safe_unpack32(&num_procs, buffer); + safe_unpack32(&total_procs, buffer); safe_unpack32(&exit_code, buffer); safe_unpack32(&db_index, buffer); @@ -682,6 +684,7 @@ static int _load_job_state(Buf buffer) job_ptr->exit_code = exit_code; job_ptr->state_reason = state_reason; job_ptr->num_procs = num_procs; + job_ptr->total_procs = total_procs; job_ptr->db_index = db_index; job_ptr->time_last_active = time(NULL); strncpy(job_ptr->name, name, MAX_JOBNAME_LEN); @@ -756,7 +759,6 @@ void _dump_job_details(struct job_details *detail_ptr, Buf buffer) { pack32(detail_ptr->min_nodes, buffer); pack32(detail_ptr->max_nodes, buffer); - pack32(detail_ptr->total_procs, buffer); pack32(detail_ptr->num_tasks, buffer); pack16(detail_ptr->shared, buffer); @@ -798,7 +800,7 @@ static int _load_job_details(struct job_record *job_ptr, Buf buffer) char *err = NULL, *in = NULL, *out = NULL, *work_dir = NULL; char **argv = (char **) NULL; uint32_t min_nodes, max_nodes; - uint32_t job_min_procs, total_procs; + uint32_t job_min_procs; uint32_t job_min_memory, job_max_memory, job_min_tmp_disk; uint32_t num_tasks, name_len, argc = 0; uint16_t shared, contiguous, ntasks_per_node; @@ -811,7 +813,6 @@ static int _load_job_details(struct job_record *job_ptr, Buf buffer) /* unpack the job's details from the buffer */ safe_unpack32(&min_nodes, buffer); safe_unpack32(&max_nodes, buffer); - safe_unpack32(&total_procs, buffer); safe_unpack32(&num_tasks, buffer); safe_unpack16(&shared, buffer); @@ -874,7 +875,6 @@ static int _load_job_details(struct job_record *job_ptr, Buf buffer) /* now put the details into the job record */ job_ptr->details->min_nodes = min_nodes; job_ptr->details->max_nodes = max_nodes; - job_ptr->details->total_procs = total_procs; job_ptr->details->num_tasks = num_tasks; job_ptr->details->shared = shared; job_ptr->details->acctg_freq = acctg_freq; @@ -3028,18 +3028,13 @@ void pack_job(struct job_record *dump_job_ptr, Buf buffer) else pack32(dump_job_ptr->time_limit, buffer); - if (dump_job_ptr->details) { + if (dump_job_ptr->details) pack_time(dump_job_ptr->details->submit_time, buffer); - } else { + else pack_time((time_t) 0, buffer); - } - if (IS_JOB_PENDING(dump_job_ptr)) { - if (dump_job_ptr->details) - pack_time(dump_job_ptr->details->begin_time, - buffer); - else - pack_time((time_t) 0, buffer); - } else + if (IS_JOB_PENDING(dump_job_ptr) && dump_job_ptr->details) + pack_time(dump_job_ptr->details->begin_time, buffer); + else pack_time(dump_job_ptr->start_time, buffer); pack_time(dump_job_ptr->end_time, buffer); pack_time(dump_job_ptr->suspend_time, buffer); @@ -3109,6 +3104,7 @@ static void _pack_default_job_details(struct job_details *detail_ptr, packnull(buffer); packnull(buffer); packnull(buffer); + packnull(buffer); pack32((uint32_t) 0, buffer); pack32((uint32_t) 0, buffer); diff --git a/src/slurmctld/node_scheduler.c b/src/slurmctld/node_scheduler.c index 25d233dc225..5569b70aa88 100644 --- a/src/slurmctld/node_scheduler.c +++ b/src/slurmctld/node_scheduler.c @@ -561,7 +561,7 @@ _get_req_features(struct node_set *node_set_ptr, int node_set_size, } /* - * _pick_best_nodes - from a weigh order list of all nodes satisfying a + * _pick_best_nodes - from a weight order list of all nodes satisfying a * job's specifications, select the "best" for use * IN node_set_ptr - pointer to node specification information * IN node_set_size - number of entries in records pointed to by node_set_ptr @@ -1823,8 +1823,7 @@ extern void build_node_details(struct job_record *job_ptr) job_ptr->job_id, job_ptr->node_cnt, node_inx); } job_ptr->num_cpu_groups = cpu_inx + 1; - if (job_ptr->details) - job_ptr->details->total_procs = total_procs; + job_ptr->total_procs = total_procs; } /* diff --git a/src/slurmctld/slurmctld.h b/src/slurmctld/slurmctld.h index 195b0f26e68..2c5bebb8522 100644 --- a/src/slurmctld/slurmctld.h +++ b/src/slurmctld/slurmctld.h @@ -317,8 +317,6 @@ struct job_details { char *err; /* pathname of job's stderr file */ char *in; /* pathname of job's stdin file */ char *out; /* pathname of job's stdout file */ - uint32_t total_procs; /* number of allocated processors, - for accounting */ time_t submit_time; /* time of submission */ time_t begin_time; /* start at this time (srun --being), * resets to time first eligible @@ -355,6 +353,8 @@ struct job_record { * for this job, used to insure * epilog is not re-run for job */ uint32_t num_procs; /* count of required processors */ + uint32_t total_procs; /* number of allocated processors, + for accounting */ uint32_t time_limit; /* time_limit minutes or INFINITE, * NO_VAL implies partition max_time */ time_t start_time; /* time execution begins, -- GitLab