View | Details | Raw Unified | Return to ticket 150
Collapse All | Expand All

(-)a/NEWS (+2 lines)
Lines 38-43 documents those changes that are of interest to users and admins. Link Here
38
 -- BGQ - Fix for printing realtime server debug correctly.
38
 -- BGQ - Fix for printing realtime server debug correctly.
39
 -- BGQ - Cleaner handling of cnode failures when reported through the runjob
39
 -- BGQ - Cleaner handling of cnode failures when reported through the runjob
40
    interface instead of through the normal method.
40
    interface instead of through the normal method.
41
 -- sacct - On systems that have do not run a jobacct_gather plugin make
42
    relative portions of the output not print perhaps confusing '0's.
41
43
42
* Changes in SLURM 2.4.3
44
* Changes in SLURM 2.4.3
43
========================
45
========================
(-)a/src/common/jobacct_common.c (-4 / +6 lines)
Lines 66-73 static void _pack_jobacct_id(jobacct_id_t *jobacct_id, Link Here
66
		pack32((uint32_t) jobacct_id->nodeid, buffer);
66
		pack32((uint32_t) jobacct_id->nodeid, buffer);
67
		pack16((uint16_t) jobacct_id->taskid, buffer);
67
		pack16((uint16_t) jobacct_id->taskid, buffer);
68
	} else {
68
	} else {
69
		pack32((uint32_t) 0, buffer);
69
		pack32((uint32_t) NO_VAL, buffer);
70
		pack16((uint16_t) 0, buffer);
70
		pack16((uint16_t) NO_VAL, buffer);
71
	}
71
	}
72
}
72
}
73
73
Lines 274-280 extern void jobacct_common_aggregate(struct jobacctinfo *dest, Link Here
274
{
274
{
275
	xassert(dest);
275
	xassert(dest);
276
276
277
	if (!from)
277
	if (!from || (from->min_cpu == (uint32_t)NO_VAL))
278
		return;
278
		return;
279
279
280
	slurm_mutex_lock(&jobacct_lock);
280
	slurm_mutex_lock(&jobacct_lock);
Lines 364-371 extern void jobacct_common_pack(struct jobacctinfo *jobacct, Link Here
364
	int i = 0;
364
	int i = 0;
365
365
366
	if (!jobacct) {
366
	if (!jobacct) {
367
		for (i = 0; i < 12; i++)
367
		for (i = 0; i < 10; i++)
368
			pack32((uint32_t) 0, buffer);
368
			pack32((uint32_t) 0, buffer);
369
		pack32((uint32_t)NO_VAL, buffer); /* min_cpu */
370
		pack32((uint32_t) 0, buffer);
369
		for (i = 0; i < 4; i++)
371
		for (i = 0; i < 4; i++)
370
			_pack_jobacct_id(NULL, rpc_version, buffer);
372
			_pack_jobacct_id(NULL, rpc_version, buffer);
371
		return;
373
		return;
(-)a/src/plugins/accounting_storage/mysql/as_mysql_job.c (-7 / +3 lines)
Lines 922-928 extern int as_mysql_step_complete(mysql_conn_t *mysql_conn, Link Here
922
	struct jobacctinfo *jobacct = (struct jobacctinfo *)step_ptr->jobacct;
922
	struct jobacctinfo *jobacct = (struct jobacctinfo *)step_ptr->jobacct;
923
	struct jobacctinfo dummy_jobacct;
923
	struct jobacctinfo dummy_jobacct;
924
	double ave_vsize = 0, ave_rss = 0, ave_pages = 0;
924
	double ave_vsize = 0, ave_rss = 0, ave_pages = 0;
925
	double ave_cpu = 0, ave_cpu2 = 0;
925
	double ave_cpu = 0;
926
	char *query = NULL;
926
	char *query = NULL;
927
	int rc =SLURM_SUCCESS;
927
	int rc =SLURM_SUCCESS;
928
	uint32_t exit_code = 0;
928
	uint32_t exit_code = 0;
Lines 992-1001 extern int as_mysql_step_complete(mysql_conn_t *mysql_conn, Link Here
992
		ave_cpu /= (double)cpus;
992
		ave_cpu /= (double)cpus;
993
	}
993
	}
994
994
995
	if (jobacct->min_cpu != NO_VAL) {
996
		ave_cpu2 = (double)jobacct->min_cpu;
997
	}
998
999
	if (!step_ptr->job_ptr->db_index) {
995
	if (!step_ptr->job_ptr->db_index) {
1000
		if (!(step_ptr->job_ptr->db_index =
996
		if (!(step_ptr->job_ptr->db_index =
1001
		      _get_db_index(mysql_conn,
997
		      _get_db_index(mysql_conn,
Lines 1027-1033 extern int as_mysql_step_complete(mysql_conn_t *mysql_conn, Link Here
1027
		"max_rss_node=%u, ave_rss=%f, "
1023
		"max_rss_node=%u, ave_rss=%f, "
1028
		"max_pages=%u, max_pages_task=%u, "
1024
		"max_pages=%u, max_pages_task=%u, "
1029
		"max_pages_node=%u, ave_pages=%f, "
1025
		"max_pages_node=%u, ave_pages=%f, "
1030
		"min_cpu=%f, min_cpu_task=%u, "
1026
		"min_cpu=%u, min_cpu_task=%u, "
1031
		"min_cpu_node=%u, ave_cpu=%f "
1027
		"min_cpu_node=%u, ave_cpu=%f "
1032
		"where job_db_inx=%d and id_step=%d",
1028
		"where job_db_inx=%d and id_step=%d",
1033
		mysql_conn->cluster_name, step_table, (int)now,
1029
		mysql_conn->cluster_name, step_table, (int)now,
Lines 1054-1060 extern int as_mysql_step_complete(mysql_conn_t *mysql_conn, Link Here
1054
		jobacct->max_pages_id.taskid,	/* max pages task */
1050
		jobacct->max_pages_id.taskid,	/* max pages task */
1055
		jobacct->max_pages_id.nodeid,	/* max pages node */
1051
		jobacct->max_pages_id.nodeid,	/* max pages node */
1056
		ave_pages,	/* ave pages */
1052
		ave_pages,	/* ave pages */
1057
		ave_cpu2,	/* min cpu */
1053
		jobacct->min_cpu,	/* min cpu */
1058
		jobacct->min_cpu_id.taskid,	/* min cpu task */
1054
		jobacct->min_cpu_id.taskid,	/* min cpu task */
1059
		jobacct->min_cpu_id.nodeid,	/* min cpu node */
1055
		jobacct->min_cpu_id.nodeid,	/* min cpu node */
1060
		ave_cpu,	/* ave cpu */
1056
		ave_cpu,	/* ave cpu */
(-)a/src/sacct/options.c (-5 lines)
Lines 1237-1244 void do_dump(void) Link Here
1237
1237
1238
	itr = list_iterator_create(jobs);
1238
	itr = list_iterator_create(jobs);
1239
	while((job = list_next(itr))) {
1239
	while((job = list_next(itr))) {
1240
		if(job->stats.cpu_min == NO_VAL)
1241
			job->stats.cpu_min = 0;
1242
1240
1243
		if(list_count(job->steps)) {
1241
		if(list_count(job->steps)) {
1244
			job->stats.cpu_ave /= list_count(job->steps);
1242
			job->stats.cpu_ave /= list_count(job->steps);
Lines 1457-1465 void do_list(void) Link Here
1457
1455
1458
	itr = list_iterator_create(jobs);
1456
	itr = list_iterator_create(jobs);
1459
	while((job = list_next(itr))) {
1457
	while((job = list_next(itr))) {
1460
		if(job->stats.cpu_min == NO_VAL)
1461
			job->stats.cpu_min = 0;
1462
1463
		if(list_count(job->steps)) {
1458
		if(list_count(job->steps)) {
1464
			int cnt = list_count(job->steps);
1459
			int cnt = list_count(job->steps);
1465
			job->stats.cpu_ave /= (double)cnt;
1460
			job->stats.cpu_ave /= (double)cnt;
(-)a/src/sacct/process.c (-2 / +5 lines)
Lines 61-66 char *find_hostname(uint32_t pos, char *hosts) Link Here
61
61
62
void aggregate_stats(slurmdb_stats_t *dest, slurmdb_stats_t *from)
62
void aggregate_stats(slurmdb_stats_t *dest, slurmdb_stats_t *from)
63
{
63
{
64
	/* Means it is a blank record */
65
	if (dest->cpu_min == NO_VAL)
66
		return;
67
64
	if(dest->vsize_max < from->vsize_max) {
68
	if(dest->vsize_max < from->vsize_max) {
65
		dest->vsize_max = from->vsize_max;
69
		dest->vsize_max = from->vsize_max;
66
		dest->vsize_max_nodeid = from->vsize_max_nodeid;
70
		dest->vsize_max_nodeid = from->vsize_max_nodeid;
Lines 82-89 void aggregate_stats(slurmdb_stats_t *dest, slurmdb_stats_t *from) Link Here
82
	}
86
	}
83
	dest->pages_ave += from->pages_ave;
87
	dest->pages_ave += from->pages_ave;
84
88
85
	if((dest->cpu_min > from->cpu_min)
89
	if (dest->cpu_min > from->cpu_min) {
86
	   || (dest->cpu_min == NO_VAL)) {
87
		dest->cpu_min = from->cpu_min;
90
		dest->cpu_min = from->cpu_min;
88
		dest->cpu_min_nodeid = from->cpu_min_nodeid;
91
		dest->cpu_min_nodeid = from->cpu_min_nodeid;
89
		dest->cpu_min_taskid = from->cpu_min_taskid;
92
		dest->cpu_min_taskid = from->cpu_min_taskid;

Return to ticket 150