From 0a10685239dba14e69d381618675a46021ad8225 Mon Sep 17 00:00:00 2001
From: Danny Auble <da@llnl.gov>
Date: Thu, 27 Apr 2006 21:05:21 +0000
Subject: [PATCH] cleaned up some stuff, got things looking good hopefully for
 both linux and AIX

---
 src/plugins/jobacct/aix/jobacct_aix.c         |  1 +
 .../jobacct/common/common_slurmstepd.c        |  1 +
 src/plugins/jobacct/common/jobacct_common.c   |  8 ++++---
 src/sacct/process.c                           |  4 ++--
 src/sacct/sacct_stat.c                        | 21 +++++++------------
 5 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/src/plugins/jobacct/aix/jobacct_aix.c b/src/plugins/jobacct/aix/jobacct_aix.c
index 20640ea2ba1..ebabd49855c 100644
--- a/src/plugins/jobacct/aix/jobacct_aix.c
+++ b/src/plugins/jobacct/aix/jobacct_aix.c
@@ -246,6 +246,7 @@ int jobacct_p_add_task(pid_t pid, uint16_t tid)
 
 struct jobacctinfo *jobacct_p_stat_task(pid_t pid)
 {
+	_get_process_data();
 	return common_stat_task(pid);
 }
 
diff --git a/src/plugins/jobacct/common/common_slurmstepd.c b/src/plugins/jobacct/common/common_slurmstepd.c
index e83f603de96..372e37567ec 100644
--- a/src/plugins/jobacct/common/common_slurmstepd.c
+++ b/src/plugins/jobacct/common/common_slurmstepd.c
@@ -54,6 +54,7 @@ extern int common_add_task(pid_t pid, uint16_t tid)
 	}
 
 	jobacct->pid = pid;
+	jobacct->min_cpu = 0;
 	debug2("adding task %u pid %d to jobacct", tid, pid);
 	list_push(task_list, jobacct);
 	slurm_mutex_unlock(&jobacct_lock);
diff --git a/src/plugins/jobacct/common/jobacct_common.c b/src/plugins/jobacct/common/jobacct_common.c
index 440db011af6..e1336976279 100644
--- a/src/plugins/jobacct/common/jobacct_common.c
+++ b/src/plugins/jobacct/common/jobacct_common.c
@@ -59,7 +59,7 @@ extern int common_init_struct(struct jobacctinfo *jobacct, uint16_t tid)
 	jobacct->max_pages = 0;
 	jobacct->max_pages_task = tid;
 	jobacct->tot_pages = 0;
-	jobacct->min_cpu = 0;
+	jobacct->min_cpu = (uint32_t)NO_VAL;
 	jobacct->min_cpu_task = tid;
 	jobacct->tot_cpu = 0;
 	
@@ -241,8 +241,10 @@ extern void common_aggregate(struct jobacctinfo *dest,
 		dest->max_pages_task = from->max_pages_task;
 	}
 	dest->tot_pages += from->tot_pages;
-	
-	if((dest->min_cpu > from->min_cpu)) {
+	if((dest->min_cpu > from->min_cpu) 
+	   || (dest->min_cpu == (uint32_t)NO_VAL)) {
+		if(from->min_cpu == (uint32_t)NO_VAL)
+			from->min_cpu = 0;
 		dest->min_cpu = from->min_cpu;
 		dest->min_cpu_task = from->min_cpu_task;
 	}
diff --git a/src/sacct/process.c b/src/sacct/process.c
index 7acd3e1c59c..c7d5cd7df7e 100644
--- a/src/sacct/process.c
+++ b/src/sacct/process.c
@@ -466,8 +466,8 @@ void aggregate_sacct(sacct_t *dest, sacct_t *from)
 		dest->max_pages_task = from->max_pages_task;
 	}
 	dest->ave_pages += from->ave_pages;
-
-	if((dest->min_cpu > from->min_cpu)
+	
+	if((dest->min_cpu > from->min_cpu) 
 	   || (dest->min_cpu == (float)NO_VAL)) {
 		dest->min_cpu = from->min_cpu;
 		dest->min_cpu_task = from->min_cpu_task;
diff --git a/src/sacct/sacct_stat.c b/src/sacct/sacct_stat.c
index 59642ad6426..bc0907de3d3 100644
--- a/src/sacct/sacct_stat.c
+++ b/src/sacct/sacct_stat.c
@@ -154,8 +154,7 @@ int _sacct_query(resource_allocation_response_msg_t *job, uint32_t step_id)
 	int *span = set_span(job->node_cnt, 0);
 	forward_t forward;
 	int thr_count = 0;
-	float tempf = 0;
-
+	
 	debug("getting the stat of job %d on %d nodes", 
 	      job->job_id, job->node_cnt);
 
@@ -242,17 +241,13 @@ int _sacct_query(resource_allocation_response_msg_t *job, uint32_t step_id)
 		step.sacct.max_rss *= 1024;
 		step.sacct.ave_vsize *= 1024;
 		step.sacct.max_vsize *= 1024;
-		tempf = step.sacct.ave_cpu/step.ntasks;
-		tempf /= 100;
-		step.sacct.ave_cpu = (uint32_t)tempf;
-		tempf = step.sacct.min_cpu/100;
-		step.sacct.min_cpu = (uint32_t)tempf;
-		tempf = step.sacct.ave_rss/step.ntasks;
-		step.sacct.ave_rss = (uint32_t)tempf;
-		tempf = step.sacct.ave_vsize/step.ntasks;
-		step.sacct.ave_vsize = (uint32_t)tempf;
-		tempf = step.sacct.ave_pages/step.ntasks;
-		step.sacct.ave_pages = (uint32_t)tempf;
+
+		step.sacct.ave_cpu /= step.ntasks;
+		step.sacct.ave_cpu /= 100;
+		step.sacct.min_cpu /= 100;
+		step.sacct.ave_rss /= step.ntasks;
+		step.sacct.ave_vsize /= step.ntasks;
+		step.sacct.ave_pages /= step.ntasks;
 	}
 	xfree(msg_array_ptr);
 	jobacct_g_free(r.jobacct);	
-- 
GitLab