On 27/11/2018 12.18, Kevin Buckley wrote:
Here are our usual Slurm log-related config settings
(where we've increased the default "Syslog" level as we're trying
to get the Crays to funnel the slurmd log messages all the way up
to the machine that syslog messages go to on Crays)
SlurmctldDebug=info
SlurmctldLogFile=/var/spool/slurm/slurmctld.log
SlurmctldSyslogDebug=info
SlurmdDebug=info
SlurmdLogFile=/var/spool/slurmd/%h.log
SlurmdSyslogDebug=info
and here are the "logged" outputs to both, the systemd journal,
and slurmd's dedicated log file, channels, for a particular job:
SYSTEMD JOURNAL
Nov 27 16:57:32 nid00024 slurmd[18994]: task_p_slurmd_batch_request: 796
Nov 27 16:57:32 nid00024 slurmd[18994]: task/affinity: job 796 CPU input
mask for node: 0x00FF
Nov 27 16:57:32 nid00024 slurmd[18994]: task/affinity: job 796 CPU final
HW mask for node: 0x0F0F
Nov 27 16:57:32 nid00024 slurmd[18994]: _run_prolog: run job script took
usec=10517
Nov 27 16:57:32 nid00024 slurmd[18994]: _run_prolog: prolog with lock
for job 796 ran for 0 seconds
Nov 27 16:57:33 nid00024 slurmd[18994]: Launching batch job 796 for UID
20480
Nov 27 16:57:33 nid00024 slurmd[18994]: launch task 796.0 request from
20480.20480@10.128.0.25 (port 25773)
Nov 27 16:57:33 nid00024 slurmd[18994]: lllp_distribution jobid [796]
auto binding off: mask_cpu,one_thread
Nov 27 16:57:34 nid00024 slurmd[18994]: launch task 796.1 request from
20480.20480@10.128.0.25 (port 30381)
Nov 27 16:57:34 nid00024 slurmd[18994]: lllp_distribution jobid [796]
auto binding off: mask_cpu,one_thread
SLURMD LOG FILE
[2018-11-27T16:57:32.850] task_p_slurmd_batch_request: 796
[2018-11-27T16:57:32.850] task/affinity: job 796 CPU input mask for
node: 0x00FF
[2018-11-27T16:57:32.850] task/affinity: job 796 CPU final HW mask for
node: 0x0F0F
[2018-11-27T16:57:32.862] _run_prolog: run job script took usec=10517
[2018-11-27T16:57:32.862] _run_prolog: prolog with lock for job 796 ran
for 0 seconds
[2018-11-27T16:57:32.874] [796.extern] core_spec/cray: init
[2018-11-27T16:57:32.898] [796.extern] task/cgroup:
/slurm/uid_20480/job_796: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
[2018-11-27T16:57:32.898] [796.extern] task/cgroup:
/slurm/uid_20480/job_796/step_extern: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
[2018-11-27T16:57:33.666] Launching batch job 796 for UID 20480
[2018-11-27T16:57:33.680] [796.batch] core_spec/cray: init
[2018-11-27T16:57:33.690] [796.batch] task/cgroup:
/slurm/uid_20480/job_796: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
[2018-11-27T16:57:33.690] [796.batch] task/cgroup:
/slurm/uid_20480/job_796/step_batch: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
[2018-11-27T16:57:33.696] [796.batch] task_p_pre_launch: Using
sched_affinity for tasks
[2018-11-27T16:57:33.871] launch task 796.0 request from
20480.20480@10.128.0.25 (port 25773)
[2018-11-27T16:57:33.871] lllp_distribution jobid [796] auto binding
off: mask_cpu,one_thread
[2018-11-27T16:57:33.882] [796.0] core_spec/cray: init
[2018-11-27T16:57:33.918] [796.0] (switch_cray.c: 654:
switch_p_job_init) gres_cnt: 0 1
[2018-11-27T16:57:33.934] [796.0] task/cgroup: /slurm/uid_20480/job_796:
alloc=28000MB mem.limit=26600MB memsw.limit=26600MB
[2018-11-27T16:57:33.934] [796.0] task/cgroup:
/slurm/uid_20480/job_796/step_0: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
[2018-11-27T16:57:33.940] [796.0] task_p_pre_launch: Using
sched_affinity for tasks
[2018-11-27T16:57:33.940] [796.0] task_p_pre_launch: Using
sched_affinity for tasks
[2018-11-27T16:57:33.940] [796.0] task_p_pre_launch: Using
sched_affinity for tasks
[2018-11-27T16:57:33.940] [796.0] task_p_pre_launch: Using
sched_affinity for tasks
[2018-11-27T16:57:34.580] [796.0] done with job
[2018-11-27T16:57:34.940] launch task 796.1 request from
20480.20480@10.128.0.25 (port 30381)
[2018-11-27T16:57:34.941] lllp_distribution jobid [796] auto binding
off: mask_cpu,one_thread
[2018-11-27T16:57:34.951] [796.1] core_spec/cray: init
[2018-11-27T16:57:34.994] [796.1] (switch_cray.c: 654:
switch_p_job_init) gres_cnt: 0 1
[2018-11-27T16:57:35.006] [796.1] task/cgroup: /slurm/uid_20480/job_796:
alloc=28000MB mem.limit=26600MB memsw.limit=26600MB
[2018-11-27T16:57:35.006] [796.1] task/cgroup:
/slurm/uid_20480/job_796/step_1: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
[2018-11-27T16:57:35.012] [796.1] task_p_pre_launch: Using
sched_affinity for tasks
[2018-11-27T16:57:35.012] [796.1] task_p_pre_launch: Using
sched_affinity for tasks
[2018-11-27T16:57:35.012] [796.1] task_p_pre_launch: Using
sched_affinity for tasks
[2018-11-27T16:57:35.013] [796.1] task_p_pre_launch: Using
sched_affinity for tasks
[2018-11-27T16:57:46.460] [796.1] done with job
[2018-11-27T16:57:46.602] [796.batch] sending
REQUEST_COMPLETE_BATCH_SCRIPT, error:0 status 0
[2018-11-27T16:57:46.608] [796.batch] done with job
[2018-11-27T16:57:46.760] [796.extern] done with job
where we see that SOME, but not ALL, of the log messages appear on both
of the channels.
Now let's comment out the use of a dedicated slurmd log file and run
exactly
the same job,
FWIW:
SlurmctldDebug=info
SlurmctldLogFile=/var/spool/slurm/slurmctld.log
SlurmctldSyslogDebug=info
SlurmdDebug=info
#lurmdLogFile=/var/spool/slurmd/%h.log
SlurmdSyslogDebug=info
SYSTEMD JOURNAL
Nov 27 16:51:51 nid00024 slurmd[16415]: task_p_slurmd_batch_request: 794
Nov 27 16:51:51 nid00024 slurmd[16415]: task/affinity: job 794 CPU input
mask for node: 0x00FF
Nov 27 16:51:51 nid00024 slurmd[16415]: task/affinity: job 794 CPU final
HW mask for node: 0x0F0F
Nov 27 16:51:51 nid00024 slurmd[16415]: _run_prolog: run job script took
usec=10472
Nov 27 16:51:51 nid00024 slurmd[16415]: _run_prolog: prolog with lock
for job 794 ran for 0 seconds
Nov 27 16:51:51 nid00024 slurmstepd[18143]: core_spec/cray: init
Nov 27 16:51:51 nid00024 slurmstepd[18143]: task/cgroup:
/slurm/uid_20480/job_794: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
Nov 27 16:51:51 nid00024 slurmstepd[18143]: task/cgroup:
/slurm/uid_20480/job_794/step_extern: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
Nov 27 16:51:52 nid00024 slurmd[16415]: Launching batch job 794 for UID
20480
Nov 27 16:51:52 nid00024 slurmstepd[18411]: core_spec/cray: init
Nov 27 16:51:52 nid00024 slurmstepd[18411]: task/cgroup:
/slurm/uid_20480/job_794: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
Nov 27 16:51:52 nid00024 slurmstepd[18411]: task/cgroup:
/slurm/uid_20480/job_794/step_batch: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
Nov 27 16:51:52 nid00024 slurmstepd[18419]: task_p_pre_launch: Using
sched_affinity for tasks
Nov 27 16:51:52 nid00024 slurmd[16415]: launch task 794.0 request from
20480.20480@10.128.0.25 (port 13485)
Nov 27 16:51:52 nid00024 slurmd[16415]: lllp_distribution jobid [794]
auto binding off: mask_cpu,one_thread
Nov 27 16:51:52 nid00024 slurmstepd[18520]: core_spec/cray: init
Nov 27 16:51:52 nid00024 slurmstepd[18520]: (switch_cray.c: 654:
switch_p_job_init) gres_cnt: 0 1
Nov 27 16:51:52 nid00024 slurmstepd[18520]: task/cgroup:
/slurm/uid_20480/job_794: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
Nov 27 16:51:52 nid00024 slurmstepd[18520]: task/cgroup:
/slurm/uid_20480/job_794/step_0: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
Nov 27 16:51:52 nid00024 slurmstepd[18527]: task_p_pre_launch: Using
sched_affinity for tasks
Nov 27 16:51:52 nid00024 slurmstepd[18529]: task_p_pre_launch: Using
sched_affinity for tasks
Nov 27 16:51:52 nid00024 slurmstepd[18528]: task_p_pre_launch: Using
sched_affinity for tasks
Nov 27 16:51:52 nid00024 slurmstepd[18530]: task_p_pre_launch: Using
sched_affinity for tasks
Nov 27 16:51:53 nid00024 slurmstepd[18520]: done with job
Nov 27 16:51:53 nid00024 slurmd[16415]: launch task 794.1 request from
20480.20480@10.128.0.25 (port 18093)
Nov 27 16:51:53 nid00024 slurmd[16415]: lllp_distribution jobid [794]
auto binding off: mask_cpu,one_thread
Nov 27 16:51:53 nid00024 slurmstepd[18551]: core_spec/cray: init
Nov 27 16:51:53 nid00024 slurmstepd[18551]: (switch_cray.c: 654:
switch_p_job_init) gres_cnt: 0 1
Nov 27 16:51:53 nid00024 slurmstepd[18551]: task/cgroup:
/slurm/uid_20480/job_794: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
Nov 27 16:51:53 nid00024 slurmstepd[18551]: task/cgroup:
/slurm/uid_20480/job_794/step_1: alloc=28000MB mem.limit=26600MB
memsw.limit=26600MB
Nov 27 16:51:53 nid00024 slurmstepd[18558]: task_p_pre_launch: Using
sched_affinity for tasks
Nov 27 16:51:53 nid00024 slurmstepd[18559]: task_p_pre_launch: Using
sched_affinity for tasks
Nov 27 16:51:53 nid00024 slurmstepd[18560]: task_p_pre_launch: Using
sched_affinity for tasks
Nov 27 16:51:53 nid00024 slurmstepd[18561]: task_p_pre_launch: Using
sched_affinity for tasks
Nov 27 16:52:04 nid00024 slurmstepd[18551]: done with job
Nov 27 16:52:05 nid00024 slurmstepd[18411]: sending
REQUEST_COMPLETE_BATCH_SCRIPT, error:0 status 0
Nov 27 16:52:05 nid00024 slurmstepd[18411]: done with job
Nov 27 16:52:05 nid00024 slurmstepd[18143]: done with job
SLURMD LOG FILE
Well, nothing: obviously.
The thing to note here is that log messages that ONLY appeared in the
dedicated log file, when there was one, now show up in the systemd
journal (and of course, have that nice "slurmstepd" tag that makes
identifying them much easier) along with the log messages that ALWAYS
appear on BOTH channels.
So, whilst it seems to be the case that,
you will get SOME of the messages on ALL of the channels, ALL of the
time
and even though it seems that,
you can get ALL of the messages on SOME of the channels, SOME of the
time
sadly it would appear that,
you can't get ALL of the messages on ALL of the channels, ALL of the
time
Am I a fool for thinking that you should be able to ?
We do a variation of your second approach, that is, leave the *LogFile
config file options unset, and then we configure rsyslog to log slurm
stuff to both the local /var/log as well as forward it to the central
syslog server.
To some extent I think what you're seeing is the result of the slurm
logging system being a bit ad hoc, with various options heaped upon each
other with little concern for how they should interact. And in
particular, logging to a file is just reinventing the syslog wheel
badly. IMHO, daemons, in general, should offer logging
1) to stderr, for debugging purposes when running in the foreground.
2) to syslog when running daemonized.
PS.: And if one doesn't care about non-systemd users, one can drop
option #2 and let systemd forward stderr to syslog.
PS2.: If one needs some kind of more structured and/or binary logging,
then yes, syslog doesn't cut it.
--
Janne Blomqvist, D.Sc. (Tech.), Scientific Computing Specialist
Aalto University School of Science, PHYS & NBE
+358503841576 || janne.blomqv...@aalto.fi