From e7c17c70a899fb98c9054272ee078f67b2f7e4fc Mon Sep 17 00:00:00 2001 From: Morris Jette <jette@schedmd.com> Date: Mon, 21 May 2012 13:29:43 -0700 Subject: [PATCH] Backport some performance enhancement work from serial branch This is a backport of plugin initialization logic made in the select/serial branch that we want to have in SLURM v2.4 and not only in v2.5. Note the plugin logic in v2.5 is different and this changes to not apply --- src/common/gres.c | 3 +++ src/common/mpi.c | 3 +++ src/common/node_select.c | 3 +++ src/common/slurm_accounting_storage.c | 3 +++ src/common/slurm_auth.c | 3 +++ src/common/slurm_jobacct_gather.c | 3 +++ src/common/slurm_priority.c | 3 +++ src/common/slurm_topology.c | 3 +++ src/common/switch.c | 3 +++ src/slurmctld/job_submit.c | 3 +++ src/slurmctld/sched_plugin.c | 3 +++ 11 files changed, 33 insertions(+) diff --git a/src/common/gres.c b/src/common/gres.c index 798ef8c91c6..b47a3bc67a5 100644 --- a/src/common/gres.c +++ b/src/common/gres.c @@ -338,6 +338,9 @@ extern int gres_plugin_init(void) int i, j, rc = SLURM_SUCCESS; char *last = NULL, *names, *one_name, *full_name; + if (gres_context_cnt >= 0) + return rc; + slurm_mutex_lock(&gres_context_lock); if (slurm_get_debug_flags() & DEBUG_FLAG_GRES) gres_debug = true; diff --git a/src/common/mpi.c b/src/common/mpi.c index 9ecdf1da837..d5c2d6054e2 100644 --- a/src/common/mpi.c +++ b/src/common/mpi.c @@ -211,6 +211,9 @@ int _mpi_init (char *mpi_type) char *full_type = NULL; int got_default = 0; + if ( g_context ) + return retval; + slurm_mutex_lock( &context_lock ); if ( g_context ) diff --git a/src/common/node_select.c b/src/common/node_select.c index 10c6c8d2937..d2bbd0c9825 100644 --- a/src/common/node_select.c +++ b/src/common/node_select.c @@ -281,6 +281,9 @@ extern int slurm_select_init(bool only_default) struct dirent *e; char *dir_array = NULL, *head = NULL; + if ( select_context ) + return retval; + slurm_mutex_lock( &select_context_lock ); if ( select_context ) diff --git a/src/common/slurm_accounting_storage.c b/src/common/slurm_accounting_storage.c index eff7577f784..056c185a473 100644 --- a/src/common/slurm_accounting_storage.c +++ b/src/common/slurm_accounting_storage.c @@ -388,6 +388,9 @@ extern int slurm_acct_storage_init(char *loc) int retval = SLURM_SUCCESS; char *acct_storage_type = NULL; + if ( g_acct_storage_context ) + return retval; + slurm_mutex_lock( &g_acct_storage_context_lock ); if ( g_acct_storage_context ) diff --git a/src/common/slurm_auth.c b/src/common/slurm_auth.c index 264c605a712..652127f4430 100644 --- a/src/common/slurm_auth.c +++ b/src/common/slurm_auth.c @@ -315,6 +315,9 @@ extern int slurm_auth_init( char *auth_type ) int retval = SLURM_SUCCESS; char *auth_type_local = NULL; + if ( g_context ) + return retval; + slurm_mutex_lock( &context_lock ); if ( g_context ) diff --git a/src/common/slurm_jobacct_gather.c b/src/common/slurm_jobacct_gather.c index 66a1cef9ac5..3c07c154053 100644 --- a/src/common/slurm_jobacct_gather.c +++ b/src/common/slurm_jobacct_gather.c @@ -258,6 +258,9 @@ static int _slurm_jobacct_gather_init(void) char *jobacct_gather_type = NULL; int retval=SLURM_SUCCESS; + if ( g_jobacct_gather_context ) + return(retval); + slurm_mutex_lock( &g_jobacct_gather_context_lock ); if ( g_jobacct_gather_context ) goto done; diff --git a/src/common/slurm_priority.c b/src/common/slurm_priority.c index ecb56b3b1ac..a86432541f5 100644 --- a/src/common/slurm_priority.c +++ b/src/common/slurm_priority.c @@ -198,6 +198,9 @@ extern int slurm_priority_init(void) int retval = SLURM_SUCCESS; char *priority_type = NULL; + if ( g_priority_context ) + return retval; + slurm_mutex_lock( &g_priority_context_lock ); if ( g_priority_context ) diff --git a/src/common/slurm_topology.c b/src/common/slurm_topology.c index a6ea794f6e5..8d4a265159e 100644 --- a/src/common/slurm_topology.c +++ b/src/common/slurm_topology.c @@ -207,6 +207,9 @@ slurm_topo_init( void ) int retval = SLURM_SUCCESS; char *topo_type = NULL; + if ( g_topo_context ) + return retval; + slurm_mutex_lock( &g_topo_context_lock ); if ( g_topo_context ) diff --git a/src/common/switch.c b/src/common/switch.c index bbfc9c9ae4e..5a8ac8b16e8 100644 --- a/src/common/switch.c +++ b/src/common/switch.c @@ -288,6 +288,9 @@ extern int switch_init( void ) int retval = SLURM_SUCCESS; char *switch_type = NULL; + if ( g_context ) + return retval; + slurm_mutex_lock( &context_lock ); if ( g_context ) diff --git a/src/slurmctld/job_submit.c b/src/slurmctld/job_submit.c index 7ded6170420..56c3e3b1467 100644 --- a/src/slurmctld/job_submit.c +++ b/src/slurmctld/job_submit.c @@ -196,6 +196,9 @@ extern int job_submit_plugin_init(void) int rc = SLURM_SUCCESS; char *last = NULL, *names, *one_name; + if (submit_context_cnt >= 0) + return rc; + slurm_mutex_lock(&submit_context_lock); if (submit_context_cnt >= 0) goto fini; diff --git a/src/slurmctld/sched_plugin.c b/src/slurmctld/sched_plugin.c index 55d8908a973..5b1229109b4 100644 --- a/src/slurmctld/sched_plugin.c +++ b/src/slurmctld/sched_plugin.c @@ -225,6 +225,9 @@ slurm_sched_init( void ) int retval = SLURM_SUCCESS; char *sched_type = NULL; + if ( g_sched_context ) + return retval; + slurm_mutex_lock( &g_sched_context_lock ); if ( g_sched_context ) -- GitLab