From 4f2859e17aeee74e878133f4ccece884431c142c Mon Sep 17 00:00:00 2001 From: Marius Tolzmann Date: Thu, 24 Sep 2015 10:40:06 +0200 Subject: [PATCH] mxqd: Set MXQ_HOSTID to bootid-hex(starttime)-pid --- mxqd.c | 21 ++++++++++++++++++++- mxqd.h | 3 +++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/mxqd.c b/mxqd.c index 552af71f..d69017b8 100644 --- a/mxqd.c +++ b/mxqd.c @@ -203,11 +203,13 @@ int server_init(struct mxq_server *server, int argc, char *argv[]) char *arg_initial_tmpdir; char arg_daemonize = 0; char arg_nolog = 0; + char *str_bootid; int opt; unsigned long threads_total = 1; unsigned long memory_total = 2048; unsigned long memory_max = 0; int i; + struct proc_pid_stat pps = {0}; struct mx_getopt_ctl optctl; struct mx_option opts[] = { @@ -409,6 +411,20 @@ int server_init(struct mxq_server *server, int argc, char *argv[]) } } + res = mx_read_first_line_from_file("/proc/sys/kernel/random/boot_id", &str_bootid); + assert(res == 36); + assert(str_bootid); + + server->boot_id = str_bootid; + + res = mx_proc_pid_stat(&pps, getpid()); + assert(res == 0); + + server->starttime = pps.starttime; + mx_proc_pid_stat_free(&pps); + + mx_asprintf_forever(&server->host_id, "%s-%llx-%x", server->boot_id, server->starttime, getpid()); + server->slots = threads_total;; server->memory_total = memory_total; server->memory_max_per_slot = memory_max; @@ -807,7 +823,7 @@ static int init_child_process(struct mxq_group_list *group, struct mxq_job *j) mx_setenvf_forever("MXQ_SLOTS", "%lu", group->slots_per_job); mx_setenvf_forever("MXQ_MEMORY", "%lu", g->job_memory); mx_setenvf_forever("MXQ_TIME", "%d", g->job_time); - mx_setenvf_forever("MXQ_HOSTID", "%s::%s", s->hostname, s->server_id); + mx_setenv_forever("MXQ_HOSTID", s->host_id); mx_setenv_forever("MXQ_HOSTNAME", s->hostname); mx_setenv_forever("MXQ_SERVERID", s->server_id); @@ -1351,6 +1367,8 @@ void server_close(struct mxq_server *server) unlink(server->pidfilename); mx_funlock(server->flock); + + mx_free_null(server->boot_id); } int killall(struct mxq_server *server, int sig, unsigned int pgrp) @@ -1693,6 +1711,7 @@ int main(int argc, char *argv[]) mx_log_info(" by Marius Tolzmann " MXQ_VERSIONDATE); mx_log_info(" Max Planck Institute for Molecular Genetics - Berlin Dahlem"); mx_log_info("hostname=%s server_id=%s :: MXQ server started.", server.hostname, server.server_id); + mx_log_info(" host_id=%s", server.host_id); mx_log_info("slots=%lu memory_total=%lu memory_avg_per_slot=%.0Lf memory_max_per_slot=%ld :: server initialized.", server.slots, server.memory_total, server.memory_avg_per_slot, server.memory_max_per_slot); diff --git a/mxqd.h b/mxqd.h index 57c9b4f7..c4db22d3 100644 --- a/mxqd.h +++ b/mxqd.h @@ -70,6 +70,9 @@ struct mxq_server { struct mx_mysql *mysql; + char *boot_id; + unsigned long long int starttime; + char *host_id; char *hostname; char *server_id; char *lockfilename;