diff --git a/src/common/jobacct_common.c b/src/common/jobacct_common.c index 74f555bf17fa7c26f2feafab58f7137a63044458..1eafc3290acf6d3603f5217fa7e57f5653550b61 100644 --- a/src/common/jobacct_common.c +++ b/src/common/jobacct_common.c @@ -48,6 +48,7 @@ uint32_t cont_id = (uint32_t)NO_VAL; uint32_t acct_job_id = 0; uint32_t job_mem_limit = 0; bool pgid_plugin = false; +uint32_t mult = 1000; static void _pack_jobacct_id(jobacct_id_t *jobacct_id, Buf buffer) { @@ -67,6 +68,7 @@ unpack_error: static void _pack_sacct(sacct_t *sacct, Buf buffer) { int i=0; + uint32_t temp; if(!sacct) { for(i=0; i<8; i++) @@ -79,14 +81,19 @@ static void _pack_sacct(sacct_t *sacct, Buf buffer) return; } - pack32((uint32_t)sacct->max_vsize, buffer); - pack32((uint32_t)sacct->ave_vsize, buffer); - pack32((uint32_t)sacct->max_rss, buffer); - pack32((uint32_t)sacct->ave_rss, buffer); - pack32((uint32_t)sacct->max_pages, buffer); - pack32((uint32_t)sacct->ave_pages, buffer); - pack32((uint32_t)sacct->min_cpu, buffer); - pack32((uint32_t)sacct->ave_cpu, buffer); + pack32(sacct->max_vsize, buffer); + temp = sacct->ave_vsize * mult; + pack32(temp, buffer); + pack32(sacct->max_rss, buffer); + temp = (uint32_t)sacct->ave_rss * mult; + pack32(temp, buffer); + pack32(sacct->max_pages, buffer); + temp = (uint32_t)sacct->ave_pages * mult; + pack32(temp, buffer); + temp = (uint32_t)sacct->min_cpu * mult; + pack32(temp, buffer); + temp = (uint32_t)sacct->ave_cpu * mult; + pack32(temp, buffer); _pack_jobacct_id(&sacct->max_vsize_id, buffer); _pack_jobacct_id(&sacct->max_rss_id, buffer); @@ -104,17 +111,17 @@ static int _unpack_sacct(sacct_t *sacct, Buf buffer) safe_unpack32(&sacct->max_vsize, buffer); safe_unpack32(&temp, buffer); - sacct->ave_vsize = temp; + sacct->ave_vsize = temp / mult; safe_unpack32(&sacct->max_rss, buffer); safe_unpack32(&temp, buffer); - sacct->ave_rss = temp; + sacct->ave_rss = temp / mult; safe_unpack32(&sacct->max_pages, buffer); safe_unpack32(&temp, buffer); - sacct->ave_pages = temp; + sacct->ave_pages = temp / mult; safe_unpack32(&temp, buffer); - sacct->min_cpu = temp; + sacct->min_cpu = temp / mult; safe_unpack32(&temp, buffer); - sacct->ave_cpu = temp; + sacct->ave_cpu = temp / mult; if(_unpack_jobacct_id(&sacct->max_vsize_id, buffer) != SLURM_SUCCESS) goto unpack_error; if(_unpack_jobacct_id(&sacct->max_rss_id, buffer) != SLURM_SUCCESS) diff --git a/src/plugins/accounting_storage/mysql/mysql_jobacct_process.c b/src/plugins/accounting_storage/mysql/mysql_jobacct_process.c index d084d00f7f06b60cfd19d0670f05ea1510dd6ee2..426c30ef1807290173970b5c6160878def4bc856 100644 --- a/src/plugins/accounting_storage/mysql/mysql_jobacct_process.c +++ b/src/plugins/accounting_storage/mysql/mysql_jobacct_process.c @@ -405,17 +405,17 @@ extern List mysql_jobacct_process_get_jobs(mysql_conn_t *mysql_conn, step->tot_cpu_usec += step->user_cpu_usec + step->sys_cpu_usec; step->sacct.max_vsize = - atoi(step_row[STEP_REQ_MAX_VSIZE]) * 1024; + atoi(step_row[STEP_REQ_MAX_VSIZE]); step->sacct.max_vsize_id.taskid = atoi(step_row[STEP_REQ_MAX_VSIZE_TASK]); step->sacct.ave_vsize = - atof(step_row[STEP_REQ_AVE_VSIZE]) * 1024; + atof(step_row[STEP_REQ_AVE_VSIZE]); step->sacct.max_rss = - atoi(step_row[STEP_REQ_MAX_RSS]) * 1024; + atoi(step_row[STEP_REQ_MAX_RSS]); step->sacct.max_rss_id.taskid = atoi(step_row[STEP_REQ_MAX_RSS_TASK]); step->sacct.ave_rss = - atof(step_row[STEP_REQ_AVE_RSS]) * 1024; + atof(step_row[STEP_REQ_AVE_RSS]); step->sacct.max_pages = atoi(step_row[STEP_REQ_MAX_PAGES]); step->sacct.max_pages_id.taskid = diff --git a/src/sacct/options.c b/src/sacct/options.c index c1f56487f46afc58c73cc12ee01096433b83945c..76d8f8c60a3438337ac5a939cfc5dbcc25ada915 100644 --- a/src/sacct/options.c +++ b/src/sacct/options.c @@ -307,6 +307,11 @@ int get_data(void) /* now aggregate the aggregatable */ job->alloc_cpus = MAX(job->alloc_cpus, step->ncpus); + step->sacct.ave_rss *= 1024; + step->sacct.max_rss *= 1024; + step->sacct.ave_vsize *= 1024; + step->sacct.max_vsize *= 1024; + if(step->state < JOB_COMPLETE) continue; job->tot_cpu_sec += step->tot_cpu_sec;