From e12acfe6dd58deb28b8aa7eacaa0fb1a1e9a4c35 Mon Sep 17 00:00:00 2001 From: Morris Jette <jette@schedmd.com> Date: Wed, 5 Feb 2014 15:08:59 -0800 Subject: [PATCH] core_spec plugin changes change the core_spec_g_set and clear functions to take container ID as an argument --- src/plugins/core_spec/cray/core_spec_cray.c | 8 ++++---- src/plugins/core_spec/none/core_spec_none.c | 8 ++++---- src/slurmd/common/core_spec_plugin.c | 12 ++++++------ src/slurmd/common/core_spec_plugin.h | 4 ++-- src/slurmd/slurmd/req.c | 4 ++-- src/slurmd/slurmstepd/mgr.c | 4 +++- src/slurmd/slurmstepd/slurmstepd.c | 1 - 7 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/plugins/core_spec/cray/core_spec_cray.c b/src/plugins/core_spec/cray/core_spec_cray.c index 9208563943e..628ea65453d 100644 --- a/src/plugins/core_spec/cray/core_spec_cray.c +++ b/src/plugins/core_spec/cray/core_spec_cray.c @@ -114,10 +114,10 @@ extern int fini(void) * * Return SLURM_SUCCESS on success */ -extern int core_spec_p_set(int core_count) +extern int core_spec_p_set(uint64_t cont_id, uint16_t core_count) { #if _DEBUG - info("core_spec_p_set(%d)", core_count); + info("core_spec_p_set(%"PRIu64") to %u", cont_id, core_count); #endif return SLURM_SUCCESS; } @@ -127,10 +127,10 @@ extern int core_spec_p_set(int core_count) * * Return SLURM_SUCCESS on success */ -extern int core_spec_p_clear(int core_count) +extern int core_spec_p_clear(uint64_t cont_id) { #if _DEBUG - info("core_spec_p_clear(%d)", core_count); + info("core_spec_p_clear(%"PRIu64")", cont_id); #endif return SLURM_SUCCESS; } diff --git a/src/plugins/core_spec/none/core_spec_none.c b/src/plugins/core_spec/none/core_spec_none.c index 9f07b379535..4878c727d29 100644 --- a/src/plugins/core_spec/none/core_spec_none.c +++ b/src/plugins/core_spec/none/core_spec_none.c @@ -112,10 +112,10 @@ extern int fini(void) * * Return SLURM_SUCCESS on success */ -extern int core_spec_p_set(int core_count) +extern int core_spec_p_set(uint64_t cont_id, uint16_t core_count) { #if _DEBUG - info("core_spec_p_set(%d)", core_count); + info("core_spec_p_set(%"PRIu64") to %u", cont_id, core_count); #endif return SLURM_SUCCESS; } @@ -125,10 +125,10 @@ extern int core_spec_p_set(int core_count) * * Return SLURM_SUCCESS on success */ -extern int core_spec_p_clear(int core_count) +extern int core_spec_p_clear(uint64_t cont_id) { #if _DEBUG - info("core_spec_p_clear(%d)", core_count); + info("core_spec_p_clear(%"PRIu64")", cont_id); #endif return SLURM_SUCCESS; } diff --git a/src/slurmd/common/core_spec_plugin.c b/src/slurmd/common/core_spec_plugin.c index 19d620dfcfe..bac0384bd2b 100644 --- a/src/slurmd/common/core_spec_plugin.c +++ b/src/slurmd/common/core_spec_plugin.c @@ -46,8 +46,8 @@ typedef struct core_spec_ops { - int (*core_spec_p_set) (uint16_t count); - int (*core_spec_p_clear) (uint16_t count); + int (*core_spec_p_set) (uint64_t cont_id, uint16_t count); + int (*core_spec_p_clear) (uint64_t cont_id); int (*core_spec_p_suspend) (uint64_t cont_id); int (*core_spec_p_resume) (uint64_t cont_id); } core_spec_ops_t; @@ -173,7 +173,7 @@ done: * * Return SLURM_SUCCESS on success */ -extern int core_spec_g_set(uint16_t count) +extern int core_spec_g_set(uint64_t cont_id, uint16_t core_count) { int i, rc = SLURM_SUCCESS; @@ -182,7 +182,7 @@ extern int core_spec_g_set(uint16_t count) for (i = 0; ((i < g_core_spec_context_num) && (rc == SLURM_SUCCESS)); i++) { - rc = (*(ops[i].core_spec_p_set))(count); + rc = (*(ops[i].core_spec_p_set))(cont_id, core_count); } return rc; @@ -193,7 +193,7 @@ extern int core_spec_g_set(uint16_t count) * * Return SLURM_SUCCESS on success */ -extern int core_spec_g_clear(uint16_t count) +extern int core_spec_g_clear(uint64_t cont_id) { int i, rc = SLURM_SUCCESS; @@ -202,7 +202,7 @@ extern int core_spec_g_clear(uint16_t count) for (i = 0; ((i < g_core_spec_context_num) && (rc == SLURM_SUCCESS)); i++) { - rc = (*(ops[i].core_spec_p_clear))(count); + rc = (*(ops[i].core_spec_p_clear))(cont_id); } return rc; diff --git a/src/slurmd/common/core_spec_plugin.h b/src/slurmd/common/core_spec_plugin.h index 3dfd05819ef..2bf2dbdf4a5 100644 --- a/src/slurmd/common/core_spec_plugin.h +++ b/src/slurmd/common/core_spec_plugin.h @@ -62,13 +62,13 @@ extern int core_spec_g_fini(void); * * Return SLURM_SUCCESS on success */ -extern int core_spec_g_set(uint16_t count); +extern int core_spec_g_set(uint64_t cont_id, uint16_t core_count); /* * Clear specialized cores at job termination * * Return SLURM_SUCCESS on success */ -extern int core_spec_g_clear(uint16_t count); +extern int core_spec_g_clear(uint64_t cont_id); /* * Reset specialized cores at job suspend diff --git a/src/slurmd/slurmd/req.c b/src/slurmd/slurmd/req.c index 38ecce735ef..25001aea4a6 100644 --- a/src/slurmd/slurmd/req.c +++ b/src/slurmd/slurmd/req.c @@ -1124,7 +1124,7 @@ _rpc_launch_tasks(slurm_msg_t *msg) if (container_g_create(req->job_id)) error("container_g_create(%u): %m", req->job_id); - if (core_spec_g_set(req->job_core_spec)) + if (core_spec_g_set(0, req->job_core_spec)) error("core_spec_g_set(%u): %m", req->job_id); memset(&job_env, 0, sizeof(job_env_t)); @@ -1584,7 +1584,7 @@ _rpc_batch_job(slurm_msg_t *msg, bool new_msg) req->job_id, req->step_id, req->uid); debug3("_rpc_batch_job: call to _forkexec_slurmstepd"); - if (core_spec_g_set(req->job_core_spec)) + if (core_spec_g_set(0, req->job_core_spec)) error("core_spec_g_set(%u): %m", req->job_id); rc = _forkexec_slurmstepd(LAUNCH_BATCH_JOB, (void *)req, cli, NULL, (hostset_t)NULL); diff --git a/src/slurmd/slurmstepd/mgr.c b/src/slurmd/slurmstepd/mgr.c index 12522f2ff62..bfae2426ff1 100644 --- a/src/slurmd/slurmstepd/mgr.c +++ b/src/slurmd/slurmstepd/mgr.c @@ -106,6 +106,7 @@ #include "src/slurmd/slurmd/slurmd.h" +#include "src/slurmd/common/core_spec_plugin.h" #include "src/slurmd/common/job_container_plugin.h" #include "src/slurmd/common/setproctitle.h" #include "src/slurmd/common/proctrack.h" @@ -966,7 +967,8 @@ job_manager(stepd_step_rec_t *job) /* * Preload plugins. */ - if ((switch_init() != SLURM_SUCCESS) || + if ((core_spec_g_init()!= SLURM_SUCCESS) || + (switch_init() != SLURM_SUCCESS) || (slurmd_task_init() != SLURM_SUCCESS) || (slurm_proctrack_init() != SLURM_SUCCESS) || (checkpoint_init(ckpt_type) != SLURM_SUCCESS) || diff --git a/src/slurmd/slurmstepd/slurmstepd.c b/src/slurmd/slurmstepd/slurmstepd.c index f2faee57d91..b6d34711837 100644 --- a/src/slurmd/slurmstepd/slurmstepd.c +++ b/src/slurmd/slurmstepd/slurmstepd.c @@ -145,7 +145,6 @@ main (int argc, char *argv[]) } _send_ok_to_slurmd(STDOUT_FILENO); - (void) core_spec_g_init(); /* Fancy way of closing stdout that keeps STDOUT_FILENO from being * allocated to any random file. The slurmd already opened /dev/null -- GitLab