int main (int argc, char **argv) { if (argc < 2) { g_printerr ("Usage:i\n"); g_printerr (" %s addr IP:PORT\n", argv[0]); g_printerr (" %s cid OIOURL\n", argv[0]); g_printerr (" %s ping IP:PORT\n", argv[0]); g_printerr (" %s version IP:PORT\n", argv[0]); g_printerr (" %s handlers IP:PORT\n", argv[0]); g_printerr (" %s stats IP:PORT\n", argv[0]); g_printerr (" %s hash [PREFIX]\n", argv[0]); return 2; } oio_ext_set_random_reqid (); if (!strcmp("addr", argv[1])) { for (int i=2; i<argc ;++i) _dump_addr (argv[i]); return 0; } else if (!strcmp("cid", argv[1])) { for (int i=2; i<argc ;++i) _dump_cid (argv[i]); return 0; } else if (!strcmp("version", argv[1])) { for (int i=2; i<argc ;++i) _do_version(argv[i]); return 0; } else if (!strcmp("ping", argv[1])) { for (int i=2; i<argc ;++i) _do_ping (argv[i]); return 0; } else if (!strcmp("handlers", argv[1])) { for (int i=2; i<argc ;++i) _do_handlers (argv[i]); return 0; } else if (!strcmp("stats", argv[1])) { for (int i=2; i<argc ;++i) _do_stat (argv[i]); return 0; } else if (!strcmp("hash", argv[1])) { _same_hash (argc>2 ? argv[2] : ""); return 0; } return 1; }
int main(int argc, char **argv) { ListIterator itr = NULL; uint32_t req_cpufreq = NO_VAL; uint32_t stepid = NO_VAL; slurmdb_selected_step_t *selected_step = NULL; #ifdef HAVE_ALPS_CRAY error("The sstat command is not supported on Cray systems"); return 1; #endif #ifdef HAVE_BG error("The sstat command is not supported on IBM BlueGene systems"); return 1; #endif slurm_conf_init(NULL); print_fields_list = list_create(NULL); print_fields_itr = list_iterator_create(print_fields_list); parse_command_line(argc, argv); if (!params.opt_job_list || !list_count(params.opt_job_list)) { error("You didn't give me any jobs to stat."); return 1; } print_fields_header(print_fields_list); itr = list_iterator_create(params.opt_job_list); while ((selected_step = list_next(itr))) { char *nodelist = NULL; bool free_nodelist = false; if (selected_step->stepid == INFINITE) { /* get the batch step info */ job_info_msg_t *job_ptr = NULL; hostlist_t hl; if (slurm_load_job( &job_ptr, selected_step->jobid, SHOW_ALL)) { error("couldn't get info for job %u", selected_step->jobid); continue; } stepid = NO_VAL; hl = hostlist_create(job_ptr->job_array[0].nodes); nodelist = hostlist_pop(hl); free_nodelist = true; hostlist_destroy(hl); slurm_free_job_info_msg(job_ptr); } else if (selected_step->stepid != NO_VAL) { stepid = selected_step->stepid; } else if (params.opt_all_steps) { job_step_info_response_msg_t *step_ptr = NULL; int i = 0; if (slurm_get_job_steps( 0, selected_step->jobid, NO_VAL, &step_ptr, SHOW_ALL)) { error("couldn't get steps for job %u", selected_step->jobid); continue; } for (i = 0; i < step_ptr->job_step_count; i++) { _do_stat(selected_step->jobid, step_ptr->job_steps[i].step_id, step_ptr->job_steps[i].nodes, step_ptr->job_steps[i].cpu_freq); } slurm_free_job_step_info_response_msg(step_ptr); continue; } else { /* get the first running step to query against. */ job_step_info_response_msg_t *step_ptr = NULL; if (slurm_get_job_steps( 0, selected_step->jobid, NO_VAL, &step_ptr, SHOW_ALL)) { error("couldn't get steps for job %u", selected_step->jobid); continue; } if (!step_ptr->job_step_count) { error("no steps running for job %u", selected_step->jobid); continue; } stepid = step_ptr->job_steps[0].step_id; nodelist = step_ptr->job_steps[0].nodes; req_cpufreq = step_ptr->job_steps[0].cpu_freq; } _do_stat(selected_step->jobid, stepid, nodelist, req_cpufreq); if (free_nodelist && nodelist) free(nodelist); } list_iterator_destroy(itr); xfree(params.opt_field_list); if (params.opt_job_list) list_destroy(params.opt_job_list); if (print_fields_itr) list_iterator_destroy(print_fields_itr); if (print_fields_list) list_destroy(print_fields_list); return 0; }