⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getconfig.c

📁 openPBS的开放源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
    }    if (!strcmp(cfg_option, "SMALL_JOB_MAX")) {	schd_SMALL_JOB_MAX = atoi(cfg_arg);	return (0);    }    if (!strcmp(cfg_option, "WALLT_LIMIT_LARGE_JOB")) {	schd_WALLT_LARGE_LIMIT = schd_val2sec(cfg_arg);	return (0);    }    if (!strcmp(cfg_option, "WALLT_LIMIT_SMALL_JOB")) {	schd_WALLT_SMALL_LIMIT = schd_val2sec(cfg_arg);	return (0);    }    if (!strcmp(cfg_option, "MAX_QUEUED_TIME")) {	schd_MAX_QUEUED_TIME = schd_val2sec(cfg_arg);	return (0);    }        if (!strcmp(cfg_option, "SMALL_QUEUED_TIME")) {	schd_SMALL_QUEUED_TIME = schd_val2sec(cfg_arg);	return (0);    }        if (!strcmp(cfg_option, "INTERACTIVE_LONG_WAIT")) {	schd_INTERACTIVE_LONG_WAIT = schd_val2sec(cfg_arg);	return (0);    }        if (!strcmp(cfg_option, "SUBMIT_QUEUE")) {	arg_to_qlist(cfg_arg, ",", &schd_SubmitQueue);	return (0);    }        if (!strcmp(cfg_option, "BATCH_QUEUES")) {	arg_to_qlist(cfg_arg, ",", &schd_BatchQueues);	return (0);    }        if (!strcmp(cfg_option, "SPECIAL_QUEUE")) {	arg_to_qlist(cfg_arg, ",", &schd_SpecialQueue);	return (0);    }        if (!strcmp(cfg_option, "DEDICATED_QUEUES")) {	arg_to_qlist(cfg_arg, ",", &schd_DedQueues);	return (0);    }    if (!strcmp(cfg_option, "EXTERNAL_QUEUES")) {	arg_to_qlist(cfg_arg, ",", &schd_ExternQueues);	return (0);    }    if (!strcmp(cfg_option, "FAKE_MACHINE_MULT")) {	schd_FAKE_MACH_MULT = atoi(cfg_arg);	return (0);    }        if (!strcmp(cfg_option, "AVOID_FRAGMENTATION")) {	return schd_val2bool(cfg_arg, &schd_AVOID_FRAGS);    }        if (!strcmp(cfg_option, "MANAGE_HPM_COUNTERS")) {	return schd_val2bool(cfg_arg, &schd_MANAGE_HPM);    }        if (!strcmp(cfg_option, "REVOKE_HPM_COUNTERS")) {	return schd_val2bool(cfg_arg, &schd_REVOKE_HPM);    }        /* Unknown option -- return an error. */    return (-1);}static intpost_config(void){    /* char   *id = "post_config"; */    /* Set up per-queue primetime enforcement. */    if (schd_BatchQueues)        schd_reset_observed_pt(schd_BatchQueues);    if (schd_ExternQueues)        schd_reset_observed_pt(schd_ExternQueues);    /* Post processing complete. */    return (1);}static int validate_config(void){    char   *id = "validate_config";    char   *xit = "  Exiting.";    /*     * Some simple tests to make sure the configuration is     * at least minimally rational.     */    if (schd_TEST_ONLY) {	(void)sprintf(log_buffer, "NOTE: Scheduler is in testing-only mode.");	log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	DBPRT(("%s: %s\n", id, log_buffer));    }    DBPRT(("%s: validate submit queues\n", id));    if (schd_SubmitQueue == NULL) {	(void)sprintf(log_buffer, "No SUBMIT_QUEUE specified.%s", xit);	log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	DBPRT(("%s\n", log_buffer));	return (0);    }    if (schd_SubmitQueue->next != NULL) {	(void)sprintf(log_buffer,	    "Only one SUBMIT_QUEUE can be specified.%s", xit);	log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	DBPRT(("%s\n", log_buffer));	return (0);    }    DBPRT(("%s: validate batch queues\n", id));    if (schd_BatchQueues == NULL) {	(void)sprintf(log_buffer, "No BATCH_QUEUES specified.%s", xit);	log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	DBPRT(("%s\n", log_buffer));	return (0);    }    if (!qlist_unique(schd_BatchQueues)) {	(void)sprintf(log_buffer, 	    "Queues listed in BATCH_QUEUES cannot be repeated.%s", xit);	log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	DBPRT(("%s\n", log_buffer));	return (0);    }    if (schd_ExternQueues) {	DBPRT(("%s: validate externally routed queues\n", id));	if (!qlist_unique(schd_ExternQueues)) {	    (void)sprintf(log_buffer, 		"Queues listed in EXTERNAL_QUEUES cannot be repeated.%s", xit);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}    }    if (schd_ENFORCE_PRIME_TIME) {	DBPRT(("%s: validate primetime\n", id));	if (schd_PRIME_TIME_START <= 0 || schd_PRIME_TIME_END <= 0) {	    (void)sprintf(log_buffer, 		"ENFORCE_PRIME_TIME set but PRIME_TIME_START/END is not "		"specified.%s", xit);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}        if (schd_PT_WALLT_LIMIT <= 0) {            (void)sprintf(log_buffer,                 "ENFORCE_PRIME_TIME set but no PRIME_TIME_WALLT_LIMIT given.");            log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);            DBPRT(("%s\n", log_buffer));            return (0);        }        if ((schd_PT_SMALL_NODE_LIMIT > 0) &&             (schd_PT_SMALL_WALLT_LIMIT <= 0))         {            (void)sprintf(log_buffer,                 "PRIMETIME_SMALL_NODE_LIMIT set but no "		"PRIME_TIME_SMALL_WALLT_LIMIT given.");            log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);            DBPRT(("%s\n", log_buffer));            return (0);        }        if ((schd_PT_SMALL_NODE_LIMIT <= 0) &&             (schd_PT_SMALL_WALLT_LIMIT > 0))        {            (void)sprintf(log_buffer,                 "PRIME_TIME_SMALL_WALLT_LIMIT set but no "		"PRIMETIME_SMALL_NODE_LIMIT given.");            log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);            DBPRT(("%s\n", log_buffer));            return (0);        }    }    if (schd_SMALL_JOB_MAX) {	if (schd_WALLT_LARGE_LIMIT <= 0) {	    (void)sprintf(log_buffer, 		"SMALL_JOB_MAX set but no WALLT_LIMIT_LARGE_JOB given.");	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}	if (schd_WALLT_SMALL_LIMIT <= 0) {	    (void)sprintf(log_buffer, 		"SMALL_JOB_MAX set but no WALLT_LIMIT_SMALL_JOB given.");	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}    }    if (schd_ENFORCE_DEDTIME) {	DBPRT(("%s: validate dedicated queue\n", id));	if (schd_DedQueues == NULL) {	    (void)sprintf(log_buffer, 		"ENFORCE_DEDICATED_TIME set but no dedicated queues "		"specified.%s", xit);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}	if (!qlist_one_per_host(schd_DedQueues)) {	    (void)sprintf(log_buffer, 	    "Only one DEDICATED_QUEUES entry per exechost allowed.%s", xit);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}	if (!qlist_disjoint(schd_DedQueues, schd_BatchQueues)) {	    (void)sprintf(log_buffer, 	    "Queues in DEDICATED_QUEUES may not be listed in BATCH_QUEUES.%s",		    xit);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}	DBPRT(("%s: validate dedicated time command\n", id));	if (schd_DEDTIME_COMMAND == NULL) {	    (void)sprintf(log_buffer, 		"ENFORCE_DEDICATED_TIME set but no DEDICATED_TIME_COMMAND "		"specified.%s", xit);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}	if (access(schd_DEDTIME_COMMAND, X_OK)) {	    (void)sprintf(log_buffer, 		"Execution denied for DEDICATED_TIME_COMMAND '%s'.%s", 		schd_DEDTIME_COMMAND, xit);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}    }    if (schd_SpecialQueue != NULL) {	DBPRT(("%s: validate special queue\n", id));	if (schd_SpecialQueue->next != NULL) {	    (void)sprintf(log_buffer,		"Only one SPECIAL_QUEUE can be specified.%s", xit);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}    }    DBPRT(("%s: verify that queue sets are disjoint\n", id));    if (!qlist_disjoint(schd_SubmitQueue, schd_BatchQueues)) {	(void)sprintf(log_buffer, 	    "SUBMIT_QUEUE %s cannot be listed in BATCH_QUEUES.%s",		schd_SubmitQueue->queue->qname, xit);	log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	DBPRT(("%s\n", log_buffer));	return (0);    }    if (schd_SpecialQueue) {	if (!qlist_disjoint(schd_SpecialQueue, schd_BatchQueues)) {	    (void)sprintf(log_buffer, 		"SPECIAL_QUEUE %s cannot be listed in BATCH_QUEUES.%s",		    schd_SpecialQueue->queue->qname, xit);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}	if (!qlist_disjoint(schd_SubmitQueue, schd_SpecialQueue)) {	    (void)sprintf(log_buffer, 		"SUBMIT_QUEUE %s cannot be same as SPECIAL_QUEUE %s.%s",		    schd_SubmitQueue->queue->qname, 		    schd_SpecialQueue->queue->qname, xit);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}	if (schd_DedQueues) {	    if (!qlist_disjoint(schd_DedQueues, schd_SpecialQueue)) {		(void)sprintf(log_buffer, 		    "DEDICATED_QUEUES cannot be same as SPECIAL_QUEUE %s.%s",			schd_SpecialQueue->queue->qname, xit);		log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, 		    log_buffer);		DBPRT(("%s\n", log_buffer));		return (0);	    }	}    }    if (schd_ExternQueues) {	if (!qlist_disjoint(schd_ExternQueues, schd_BatchQueues)) {	    (void)sprintf(log_buffer, 		"Queues in EXTERNAL_QUEUES cannot also be in BATCH_QUEUES.%s", 		    xit);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}	if (!qlist_disjoint(schd_ExternQueues, schd_SpecialQueue)) {	    (void)sprintf(log_buffer, 		"The SPECIAL_QUEUE %s cannot be listed in EXTERNAL_QUEUES.%s",		    schd_SpecialQueue->queue->qname, xit);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);	}	if (schd_DedQueues) {	    if (!qlist_disjoint(schd_DedQueues, schd_ExternQueues)) {		(void)sprintf(log_buffer, 		    "DEDICATED_QUEUES cannot be listed in EXTERNAL_QUEUES.%s",			xit);		log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, 		    log_buffer);		DBPRT(("%s\n", log_buffer));		return (0);	    }	}    }    if (schd_REVOKE_HPM && !schd_MANAGE_HPM) {	    (void)sprintf(log_buffer, 		"MANAGE_HPM_COUNTERS must be set for REVOKE_HPM_COUNTERS");	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);    }    if ((schd_FAKE_MACH_MULT < 1)) {	    (void)sprintf(log_buffer, 		"FAKE_MACHINE_MULT must be integer number > 0.%s", xit);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	    DBPRT(("%s\n", log_buffer));	    return (0);    }    DBPRT(("%s: Scheduler configuration appears valid.\n", id));    return (1);}/* print_config(): Dump the current config to the log */static voidprint_config(void){    char   *id = "print_config";    QueueList *qptr;    if (schd_TEST_ONLY) {	(void)sprintf(log_buffer, "%-24s = %s", "TEST_ONLY", 	    schd_bool2val(schd_TEST_ONLY));	log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);    }    if (schd_SubmitQueue) {	(void)sprintf(log_buffer, "%-24s = %s@%s", "SUBMIT_QUEUE",	    schd_SubmitQueue->queue->qname, schd_SubmitQueue->queue->exechost);	log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);    }    if (schd_BatchQueues) {	for (qptr = schd_BatchQueues; qptr != NULL; qptr = qptr->next) {	    (void)sprintf(log_buffer, "%-24s = %s@%s", 		(qptr == schd_BatchQueues) ? "BATCH_QUEUES" : "",		qptr->queue->qname, qptr->queue->exechost);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	}    }    if (schd_ExternQueues) {	for (qptr = schd_ExternQueues; qptr != NULL; qptr = qptr->next) {	    (void)sprintf(log_buffer, "%-24s = %s@%s", 		(qptr == schd_ExternQueues) ? "EXTERN_QUEUES" : "",		qptr->queue->qname, qptr->queue->exechost);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	}    }    if (schd_SpecialQueue) {	(void)sprintf(log_buffer, "%-24s = %s@%s", "SPECIAL_QUEUE",	  schd_SpecialQueue->queue->qname, schd_SpecialQueue->queue->exechost);	log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);    }    if (schd_DedQueues) {	for (qptr = schd_DedQueues; qptr != NULL; qptr = qptr->next) {	    (void)sprintf(log_buffer, "%-24s = %s@%s", 		(qptr == schd_DedQueues) ? "DEDICATED_QUEUES" : "",		qptr->queue->qname, qptr->queue->exechost);	    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);	}    }    (void)sprintf(log_buffer, "%-24s = %s", "ENFORCE_PRIME_TIME",	schd_booltime2val(schd_ENFORCE_PRIME_TIME));    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);    (void)sprintf(log_buffer, "%-24s = %s", "PRIME_TIME_WALLT_LIMIT",         schd_sec2val(schd_PT_WALLT_LIMIT));    log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);    if (schd_PT_SMALL_NODE_LIMIT) {        (void)sprintf(log_buffer, "%-24s = %d", "PRIME_TIME_SMALL_NODE_LIMIT",             schd_PT_SMALL_NODE_LIMIT);        log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);        (void)sprintf(log_buffer, "%-24s = %s", "PRIME_TIME_SMALL_WALLT_LIMIT",            schd_sec2val(schd_PT_SMALL_WALLT_LIMIT));        log_record(PBSEVENT_SYSTEM, PBS_EVENTCLASS_SERVER, id, log_buffer);    }    (void)sprintf(log_buffer, "%-24s = %s", "NONPRIME_DRAIN_SYS",

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -