Cleanup the pretty-print of odls cmds as some were missing. Add a new cmd to terminate the DVM, which the HNP will use to trun around and issue an xcast to the DVM.
Этот коммит содержится в:
родитель
3ae3b96c17
Коммит
063e4c9989
@ -58,6 +58,7 @@ typedef uint8_t orte_daemon_cmd_flag_t;
|
|||||||
#define ORTE_DAEMON_SPAWN_JOB_CMD (orte_daemon_cmd_flag_t) 17
|
#define ORTE_DAEMON_SPAWN_JOB_CMD (orte_daemon_cmd_flag_t) 17
|
||||||
#define ORTE_DAEMON_TERMINATE_JOB_CMD (orte_daemon_cmd_flag_t) 18
|
#define ORTE_DAEMON_TERMINATE_JOB_CMD (orte_daemon_cmd_flag_t) 18
|
||||||
#define ORTE_DAEMON_HALT_VM_CMD (orte_daemon_cmd_flag_t) 19
|
#define ORTE_DAEMON_HALT_VM_CMD (orte_daemon_cmd_flag_t) 19
|
||||||
|
#define ORTE_DAEMON_HALT_DVM_CMD (orte_daemon_cmd_flag_t) 20
|
||||||
|
|
||||||
/* request proc resource usage */
|
/* request proc resource usage */
|
||||||
#define ORTE_DAEMON_TOP_CMD (orte_daemon_cmd_flag_t) 22
|
#define ORTE_DAEMON_TOP_CMD (orte_daemon_cmd_flag_t) 22
|
||||||
|
@ -114,6 +114,7 @@ void orte_daemon_recv(int status, orte_process_name_t* sender,
|
|||||||
orte_proc_t *cur_proc = NULL, *prev_proc = NULL;
|
orte_proc_t *cur_proc = NULL, *prev_proc = NULL;
|
||||||
bool found = false;
|
bool found = false;
|
||||||
orte_node_t *node;
|
orte_node_t *node;
|
||||||
|
orte_grpcomm_signature_t *sig;
|
||||||
|
|
||||||
/* unpack the command */
|
/* unpack the command */
|
||||||
n = 1;
|
n = 1;
|
||||||
@ -459,6 +460,7 @@ void orte_daemon_recv(int status, orte_process_name_t* sender,
|
|||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/**** HALT VM COMMAND ****/
|
||||||
case ORTE_DAEMON_HALT_VM_CMD:
|
case ORTE_DAEMON_HALT_VM_CMD:
|
||||||
if (orte_debug_daemons_flag) {
|
if (orte_debug_daemons_flag) {
|
||||||
opal_output(0, "%s orted_cmd: received halt_vm cmd",
|
opal_output(0, "%s orted_cmd: received halt_vm cmd",
|
||||||
@ -491,6 +493,27 @@ void orte_daemon_recv(int status, orte_process_name_t* sender,
|
|||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/**** HALT DVM COMMAND ****/
|
||||||
|
case ORTE_DAEMON_HALT_DVM_CMD:
|
||||||
|
if (orte_debug_daemons_flag) {
|
||||||
|
opal_output(0, "%s orted_cmd: received halt_dvm cmd",
|
||||||
|
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME));
|
||||||
|
}
|
||||||
|
/* we just need to xcast the HALT_VM cmd out, which will send
|
||||||
|
* it back into us */
|
||||||
|
answer = OBJ_NEW(opal_buffer_t);
|
||||||
|
command = ORTE_DAEMON_HALT_VM_CMD;
|
||||||
|
opal_dss.pack(answer, &command, 1, ORTE_DAEMON_CMD);
|
||||||
|
sig = OBJ_NEW(orte_grpcomm_signature_t);
|
||||||
|
sig->signature = (orte_process_name_t*)malloc(sizeof(orte_process_name_t));
|
||||||
|
sig->signature[0].jobid = ORTE_PROC_MY_NAME->jobid;
|
||||||
|
sig->signature[0].vpid = ORTE_VPID_WILDCARD;
|
||||||
|
orte_grpcomm.xcast(sig, ORTE_RML_TAG_DAEMON, answer);
|
||||||
|
OBJ_RELEASE(answer);
|
||||||
|
OBJ_RELEASE(sig);
|
||||||
|
return;
|
||||||
|
break;
|
||||||
|
|
||||||
/**** SPAWN JOB COMMAND ****/
|
/**** SPAWN JOB COMMAND ****/
|
||||||
case ORTE_DAEMON_SPAWN_JOB_CMD:
|
case ORTE_DAEMON_SPAWN_JOB_CMD:
|
||||||
if (orte_debug_daemons_flag) {
|
if (orte_debug_daemons_flag) {
|
||||||
@ -1127,8 +1150,8 @@ void orte_daemon_recv(int status, orte_process_name_t* sender,
|
|||||||
static char *get_orted_comm_cmd_str(int command)
|
static char *get_orted_comm_cmd_str(int command)
|
||||||
{
|
{
|
||||||
switch(command) {
|
switch(command) {
|
||||||
case ORTE_DAEMON_NULL_CMD:
|
case ORTE_DAEMON_CONTACT_QUERY_CMD:
|
||||||
return strdup("NULL");
|
return strdup("ORTE_DAEMON_CONTACT_QUERY_CMD");
|
||||||
case ORTE_DAEMON_KILL_LOCAL_PROCS:
|
case ORTE_DAEMON_KILL_LOCAL_PROCS:
|
||||||
return strdup("ORTE_DAEMON_KILL_LOCAL_PROCS");
|
return strdup("ORTE_DAEMON_KILL_LOCAL_PROCS");
|
||||||
case ORTE_DAEMON_SIGNAL_LOCAL_PROCS:
|
case ORTE_DAEMON_SIGNAL_LOCAL_PROCS:
|
||||||
@ -1137,26 +1160,49 @@ static char *get_orted_comm_cmd_str(int command)
|
|||||||
return strdup("ORTE_DAEMON_ADD_LOCAL_PROCS");
|
return strdup("ORTE_DAEMON_ADD_LOCAL_PROCS");
|
||||||
case ORTE_DAEMON_TREE_SPAWN:
|
case ORTE_DAEMON_TREE_SPAWN:
|
||||||
return strdup("ORTE_DAEMON_TREE_SPAWN");
|
return strdup("ORTE_DAEMON_TREE_SPAWN");
|
||||||
|
|
||||||
|
case ORTE_DAEMON_HEARTBEAT_CMD:
|
||||||
|
return strdup("ORTE_DAEMON_HEARTBEAT_CMD");
|
||||||
|
case ORTE_DAEMON_EXIT_CMD:
|
||||||
|
return strdup("ORTE_DAEMON_EXIT_CMD");
|
||||||
|
case ORTE_DAEMON_PROCESS_AND_RELAY_CMD:
|
||||||
|
return strdup("ORTE_DAEMON_PROCESS_AND_RELAY_CMD");
|
||||||
case ORTE_DAEMON_MESSAGE_LOCAL_PROCS:
|
case ORTE_DAEMON_MESSAGE_LOCAL_PROCS:
|
||||||
return strdup("ORTE_DAEMON_MESSAGE_LOCAL_PROCS");
|
return strdup("ORTE_DAEMON_MESSAGE_LOCAL_PROCS");
|
||||||
case ORTE_DAEMON_EXIT_CMD:
|
case ORTE_DAEMON_NULL_CMD:
|
||||||
return strdup("ORTE_DAEMON_EXIT_CMD");
|
return strdup("NULL");
|
||||||
case ORTE_DAEMON_SPAWN_JOB_CMD:
|
|
||||||
return strdup("ORTE_DAEMON_SPAWN_JOB_CMD");
|
|
||||||
case ORTE_DAEMON_CONTACT_QUERY_CMD:
|
|
||||||
return strdup("ORTE_DAEMON_CONTACT_QUERY_CMD");
|
|
||||||
case ORTE_DAEMON_REPORT_JOB_INFO_CMD:
|
case ORTE_DAEMON_REPORT_JOB_INFO_CMD:
|
||||||
return strdup("ORTE_DAEMON_REPORT_JOB_INFO_CMD");
|
return strdup("ORTE_DAEMON_REPORT_JOB_INFO_CMD");
|
||||||
case ORTE_DAEMON_REPORT_NODE_INFO_CMD:
|
case ORTE_DAEMON_REPORT_NODE_INFO_CMD:
|
||||||
return strdup("ORTE_DAEMON_REPORT_NODE_INFO_CMD");
|
return strdup("ORTE_DAEMON_REPORT_NODE_INFO_CMD");
|
||||||
case ORTE_DAEMON_REPORT_PROC_INFO_CMD:
|
case ORTE_DAEMON_REPORT_PROC_INFO_CMD:
|
||||||
return strdup("ORTE_DAEMON_REPORT_PROC_INFO_CMD");
|
return strdup("ORTE_DAEMON_REPORT_PROC_INFO_CMD");
|
||||||
case ORTE_DAEMON_HEARTBEAT_CMD:
|
case ORTE_DAEMON_SPAWN_JOB_CMD:
|
||||||
return strdup("ORTE_DAEMON_HEARTBEAT_CMD");
|
return strdup("ORTE_DAEMON_SPAWN_JOB_CMD");
|
||||||
|
case ORTE_DAEMON_TERMINATE_JOB_CMD:
|
||||||
|
return strdup("ORTE_DAEMON_TERMINATE_JOB_CMD");
|
||||||
|
|
||||||
|
case ORTE_DAEMON_HALT_VM_CMD:
|
||||||
|
return strdup("ORTE_DAEMON_HALT_VM_CMD");
|
||||||
|
case ORTE_DAEMON_HALT_DVM_CMD:
|
||||||
|
return strdup("ORTE_DAEMON_HALT_DVM_CMD");
|
||||||
case ORTE_DAEMON_TOP_CMD:
|
case ORTE_DAEMON_TOP_CMD:
|
||||||
return strdup("ORTE_DAEMON_TOP_CMD");
|
return strdup("ORTE_DAEMON_TOP_CMD");
|
||||||
|
case ORTE_DAEMON_NAME_REQ_CMD:
|
||||||
|
return strdup("ORTE_DAEMON_NAME_REQ_CMD");
|
||||||
|
case ORTE_DAEMON_CHECKIN_CMD:
|
||||||
|
return strdup("ORTE_DAEMON_CHECKIN_CMD");
|
||||||
|
|
||||||
|
case ORTE_TOOL_CHECKIN_CMD:
|
||||||
|
return strdup("ORTE_TOOL_CHECKIN_CMD");
|
||||||
|
case ORTE_DAEMON_PROCESS_CMD:
|
||||||
|
return strdup("ORTE_DAEMON_PROCESS_CMD");
|
||||||
case ORTE_DAEMON_ABORT_PROCS_CALLED:
|
case ORTE_DAEMON_ABORT_PROCS_CALLED:
|
||||||
return strdup("ORTE_DAEMON_ABORT_PROCS_CALLED");
|
return strdup("ORTE_DAEMON_ABORT_PROCS_CALLED");
|
||||||
|
case ORTE_DAEMON_NEW_COLL_ID:
|
||||||
|
return strdup("ORTE_DAEMON_NEW_COLL_ID");
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return strdup("Unknown Command!");
|
return strdup("Unknown Command!");
|
||||||
}
|
}
|
||||||
|
@ -138,7 +138,7 @@ int main(int argc, char *argv[])
|
|||||||
char *param, *value;
|
char *param, *value;
|
||||||
orte_job_t *jdata=NULL;
|
orte_job_t *jdata=NULL;
|
||||||
orte_app_context_t *app;
|
orte_app_context_t *app;
|
||||||
char *uri;
|
char *uri, *ptr;
|
||||||
|
|
||||||
/* Setup and parse the command line */
|
/* Setup and parse the command line */
|
||||||
memset(&myglobals, 0, sizeof(myglobals));
|
memset(&myglobals, 0, sizeof(myglobals));
|
||||||
@ -250,6 +250,17 @@ int main(int argc, char *argv[])
|
|||||||
} else if (0 == strcmp(myglobals.report_uri, "+")) {
|
} else if (0 == strcmp(myglobals.report_uri, "+")) {
|
||||||
/* if '+', output to stderr */
|
/* if '+', output to stderr */
|
||||||
fprintf(stderr, "VMURI: %s\n", uri);
|
fprintf(stderr, "VMURI: %s\n", uri);
|
||||||
|
} else if (0 == strncasecmp(myglobals.report_uri, "file:", strlen("file:"))) {
|
||||||
|
ptr = strchr(myglobals.report_uri, ':');
|
||||||
|
++ptr;
|
||||||
|
fp = fopen(ptr, "w");
|
||||||
|
if (NULL == fp) {
|
||||||
|
orte_show_help("help-orterun.txt", "orterun:write_file", false,
|
||||||
|
myglobals.basename, "pid", ptr);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
fprintf(fp, "%s\n", uri);
|
||||||
|
fclose(fp);
|
||||||
} else {
|
} else {
|
||||||
fp = fopen(myglobals.report_uri, "w");
|
fp = fopen(myglobals.report_uri, "w");
|
||||||
if (NULL == fp) {
|
if (NULL == fp) {
|
||||||
|
@ -487,7 +487,7 @@ int main(int argc, char *argv[])
|
|||||||
/* if this is the terminate command, just send it */
|
/* if this is the terminate command, just send it */
|
||||||
if (myglobals.terminate) {
|
if (myglobals.terminate) {
|
||||||
opal_buffer_t *buf;
|
opal_buffer_t *buf;
|
||||||
orte_daemon_cmd_flag_t cmd = ORTE_DAEMON_HALT_VM_CMD;
|
orte_daemon_cmd_flag_t cmd = ORTE_DAEMON_HALT_DVM_CMD;
|
||||||
buf = OBJ_NEW(opal_buffer_t);
|
buf = OBJ_NEW(opal_buffer_t);
|
||||||
opal_dss.pack(buf, &cmd, 1, ORTE_DAEMON_CMD);
|
opal_dss.pack(buf, &cmd, 1, ORTE_DAEMON_CMD);
|
||||||
orte_rml.send_buffer_nb(ORTE_PROC_MY_HNP, buf,
|
orte_rml.send_buffer_nb(ORTE_PROC_MY_HNP, buf,
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user