extern void acct_gather_profile_p_conf_values(List *data) { config_key_pair_t *key_pair; xassert(*data); key_pair = xmalloc(sizeof(config_key_pair_t)); key_pair->name = xstrdup("ProfileHDF5Dir"); key_pair->value = xstrdup(hdf5_conf.dir); list_append(*data, key_pair); key_pair = xmalloc(sizeof(config_key_pair_t)); key_pair->name = xstrdup("ProfileHDF5Default"); key_pair->value = xstrdup(acct_gather_profile_to_string(hdf5_conf.def)); list_append(*data, key_pair); return; }
extern int acct_gather_profile_p_node_step_start(stepd_step_rec_t* job) { int rc = SLURM_SUCCESS; time_t start_time; char *profile_file_name; char *profile_str; xassert(_run_in_daemon()); g_job = job; if (g_job->stepid == NO_VAL) { g_profile_running = ACCT_GATHER_PROFILE_NONE; return rc; } xassert(hdf5_conf.dir); if (debug_flags & DEBUG_FLAG_PROFILE) { profile_str = acct_gather_profile_to_string(g_job->profile); info("PROFILE: option --profile=%s", profile_str); } if (g_profile_running == ACCT_GATHER_PROFILE_NOT_SET) g_profile_running = _determine_profile(); if (g_profile_running <= ACCT_GATHER_PROFILE_NONE) return rc; _create_directories(); profile_file_name = xstrdup_printf( "%s/%s/%u_%u_%s.h5", hdf5_conf.dir, g_job->pwd->pw_name, g_job->jobid, g_job->stepid, g_job->node_name); if (debug_flags & DEBUG_FLAG_PROFILE) { profile_str = acct_gather_profile_to_string(g_profile_running); info("PROFILE: node_step_start, opt=%s file=%s", profile_str, profile_file_name); } // Create a new file using the default properties. profile_init(); file_id = H5Fcreate(profile_file_name, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); if (chown(profile_file_name, (uid_t)g_job->pwd->pw_uid, (gid_t)g_job->pwd->pw_gid) < 0) error("chown(%s): %m", profile_file_name); chmod(profile_file_name, 0600); xfree(profile_file_name); if (file_id < 1) { info("PROFILE: Failed to create Node group"); return SLURM_FAILURE; } sprintf(group_node, "/%s_%s", GRP_NODE, g_job->node_name); gid_node = H5Gcreate(file_id, group_node, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); if (gid_node < 1) { H5Fclose(file_id); file_id = -1; info("PROFILE: Failed to create Node group"); return SLURM_FAILURE; } put_string_attribute(gid_node, ATTR_NODENAME, g_job->node_name); put_int_attribute(gid_node, ATTR_NTASKS, g_job->node_tasks); start_time = time(NULL); put_string_attribute(gid_node, ATTR_STARTTIME, ctime(&start_time)); return rc; }
extern int acct_gather_profile_p_node_step_start(stepd_step_rec_t* job) { int rc = SLURM_SUCCESS; char *profile_file_name; char *profile_str; xassert(_run_in_daemon()); g_job = job; xassert(hdf5_conf.dir); if (debug_flags & DEBUG_FLAG_PROFILE) { profile_str = acct_gather_profile_to_string(g_job->profile); info("PROFILE: option --profile=%s", profile_str); } if (g_profile_running == ACCT_GATHER_PROFILE_NOT_SET) g_profile_running = _determine_profile(); if (g_profile_running <= ACCT_GATHER_PROFILE_NONE) return rc; _create_directories(); /* Use a more user friendly string "batch" rather * then 4294967294. */ if (g_job->stepid == NO_VAL) { profile_file_name = xstrdup_printf("%s/%s/%u_%s_%s.h5", hdf5_conf.dir, g_job->user_name, g_job->jobid, "batch", g_job->node_name); } else { profile_file_name = xstrdup_printf( "%s/%s/%u_%u_%s.h5", hdf5_conf.dir, g_job->user_name, g_job->jobid, g_job->stepid, g_job->node_name); } if (debug_flags & DEBUG_FLAG_PROFILE) { profile_str = acct_gather_profile_to_string(g_profile_running); info("PROFILE: node_step_start, opt=%s file=%s", profile_str, profile_file_name); } // Create a new file using the default properties. file_id = H5Fcreate(profile_file_name, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); if (chown(profile_file_name, (uid_t)g_job->uid, (gid_t)g_job->gid) < 0) error("chown(%s): %m", profile_file_name); chmod(profile_file_name, 0600); xfree(profile_file_name); if (file_id < 1) { info("PROFILE: Failed to create Node group"); return SLURM_FAILURE; } /* fd_set_close_on_exec(file_id); Not supported for HDF5 */ sprintf(group_node, "/%s", g_job->node_name); gid_node = make_group(file_id, group_node); if (gid_node < 0) { H5Fclose(file_id); file_id = -1; info("PROFILE: Failed to create Node group"); return SLURM_FAILURE; } put_int_attribute(gid_node, ATTR_NODEINX, g_job->nodeid); put_string_attribute(gid_node, ATTR_NODENAME, g_job->node_name); put_int_attribute(gid_node, ATTR_NTASKS, g_job->node_tasks); put_int_attribute(gid_node, ATTR_CPUPERTASK, g_job->cpus_per_task); step_start_time = time(NULL); put_string_attribute(gid_node, ATTR_STARTTIME, slurm_ctime2(&step_start_time)); return rc; }