diff --git a/slurm/slurm.h.in b/slurm/slurm.h.in index 4b67461ca8db26df590aa4df3da50d2dd6338c0d..16b997bc5239026717fe95cecff1303542817216 100644 --- a/slurm/slurm.h.in +++ b/slurm/slurm.h.in @@ -701,6 +701,7 @@ typedef struct job_info { char *name; /* name of the job */ char *network; /* network specification */ char *nodes; /* list of nodes allocated to job */ + uint16_t nice; /* requested priority change */ int *node_inx; /* list index pairs into node_table for *nodes: * start_range_1, end_range_1, * start_range_2, .., -1 */ @@ -924,6 +925,7 @@ typedef struct { int *node_inx; /* list index pairs into node_table for *nodes: * start_range_1, end_range_1, * start_range_2, .., -1 */ + uint32_t num_cpus; /* how many cpus are being used by step */ uint32_t num_tasks; /* number of tasks */ char *partition; /* name of assigned partition */ char *resv_ports; /* ports allocated for MPI */ diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c index 4b9d2dc6fee2c956c19ac70260d325813986dd69..a43e28a420f71cf946ee540e975024d9e95fc22e 100644 --- a/src/common/slurm_protocol_pack.c +++ b/src/common/slurm_protocol_pack.c @@ -2671,6 +2671,7 @@ _unpack_job_step_info_members(job_step_info_t * step, Buf buffer) safe_unpack32(&step->step_id, buffer); safe_unpack16(&step->ckpt_interval, buffer); safe_unpack32(&step->user_id, buffer); + safe_unpack32(&step->num_cpus, buffer); safe_unpack32(&step->num_tasks, buffer); safe_unpack32(&step->time_limit, buffer); @@ -2792,6 +2793,8 @@ _unpack_job_info_members(job_info_t * job, Buf buffer) safe_unpack32(&job->alloc_sid, buffer); safe_unpack32(&job->time_limit, buffer); + safe_unpack16(&job->nice, buffer); + safe_unpack_time(&job->submit_time, buffer); safe_unpack_time(&job->eligible_time, buffer); safe_unpack_time(&job->start_time, buffer); diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c index 8bb4d6d0d52f36a728e4addda6b0a03b3a335b0e..8f6dab56318d5ba117647748fc91e44dc99d7bbd 100644 --- a/src/slurmctld/job_mgr.c +++ b/src/slurmctld/job_mgr.c @@ -4228,6 +4228,7 @@ extern int pack_one_job(char **buffer_ptr, int *buffer_size, void pack_job(struct job_record *dump_job_ptr, uint16_t show_flags, Buf buffer) { struct job_details *detail_ptr; + time_t begin_time = 0; pack32(dump_job_ptr->assoc_id, buffer); pack32(dump_job_ptr->job_id, buffer); @@ -4246,15 +4247,23 @@ void pack_job(struct job_record *dump_job_ptr, uint16_t show_flags, Buf buffer) pack32(dump_job_ptr->time_limit, buffer); if (dump_job_ptr->details) { + pack16(dump_job_ptr->details->nice, buffer); pack_time(dump_job_ptr->details->submit_time, buffer); /* Earliest possible begin time */ - pack_time(dump_job_ptr->details->begin_time, buffer); + begin_time = dump_job_ptr->details->begin_time; } else { + pack16(0, buffer); pack_time((time_t) 0, buffer); - pack_time((time_t) 0, buffer); } + + pack_time(begin_time, buffer); + /* Actual or expected start time */ - pack_time(dump_job_ptr->start_time, buffer); + if(dump_job_ptr->start_time) + pack_time(dump_job_ptr->start_time, buffer); + else + pack_time(begin_time, buffer); + pack_time(dump_job_ptr->end_time, buffer); pack_time(dump_job_ptr->suspend_time, buffer); pack_time(dump_job_ptr->pre_sus_time, buffer); diff --git a/src/slurmctld/step_mgr.c b/src/slurmctld/step_mgr.c index 7473a1fa90ced04ca5f10e6ae9b2fb8183fb7762..a4b8b56b3556104f65a78f76b0c2a195dd132395 100644 --- a/src/slurmctld/step_mgr.c +++ b/src/slurmctld/step_mgr.c @@ -1535,7 +1535,7 @@ static void _pack_ctld_job_step_info(struct step_record *step_ptr, Buf buffer) if (step_ptr->step_layout) { task_cnt = step_ptr->step_layout->task_cnt; - node_list = step_ptr->step_layout->node_list; + node_list = step_ptr->step_layout->node_list; } else { task_cnt = step_ptr->job_ptr->num_procs; node_list = step_ptr->job_ptr->nodes; @@ -1544,6 +1544,14 @@ static void _pack_ctld_job_step_info(struct step_record *step_ptr, Buf buffer) pack32(step_ptr->step_id, buffer); pack16(step_ptr->ckpt_interval, buffer); pack32(step_ptr->job_ptr->user_id, buffer); +#ifdef HAVE_BG + if (step_ptr->job_ptr->total_procs) + pack32(step_ptr->job_ptr->total_procs, buffer); + else + pack32(step_ptr->job_ptr->num_procs, buffer); +#else + pack32(step_ptr->cpu_count, buffer); +#endif pack32(task_cnt, buffer); pack32(step_ptr->time_limit, buffer); @@ -1552,7 +1560,7 @@ static void _pack_ctld_job_step_info(struct step_record *step_ptr, Buf buffer) run_time = step_ptr->pre_sus_time; } else { begin_time = MAX(step_ptr->start_time, - step_ptr->job_ptr->suspend_time); + step_ptr->job_ptr->suspend_time); run_time = step_ptr->pre_sus_time + difftime(time(NULL), begin_time); }