Hi Max,

Thanks so much for your fast response with a solution! I didn't know that NetworkManager (falsely) claims that the network is online as soon as the first interface comes up :-(

Your solution of a wait-for-interfaces Systemd service makes a lot of sense, and I'm going to try it out.

Best regards,
Ole

On 10/30/23 14:30, Max Rutkowski wrote:
Hi,

we're not using Omni-Path but also had issues with Infiniband taking too long and slurmd failing to start due to that.

Our solution was to implement a little wait-for-interface systemd service which delays the network.target until the ib interface has come up.

Our discovery was that the network-online.target is triggered by the NetworkManager as soon as the first interface is connected.

I've put the solution we use on my GitHub: https://github.com/maxlxl/network.target_wait-for-interfaces

You may need to do small adjustments, but it's pretty straight forward
--
Ole Holm Nielsen
PhD, Senior HPC Officer
Department of Physics, Technical University of Denmark,
Fysikvej Building 309, DK-2800 Kongens Lyngby, Denmark
E-mail: ole.h.niel...@fysik.dtu.dk
Homepage: http://dcwww.fysik.dtu.dk/~ohnielse/
Mobile: (+45) 5180 1620 in
general.


Kind regards
Max

On 30.10.23 13:50, Ole Holm Nielsen wrote:
I'm fighting this strange scenario where slurmd is started before the Infiniband/OPA network is fully up.  The Node Health Check (NHC) executed by slurmd then fails the node (as it should).  This happens only on EL8 Linux (AlmaLinux 8.8) nodes, whereas our CentOS 7.9 nodes with Infiniband/OPA network work without problems.

Question: Does anyone know how to reliably delay the start of the slurmd Systemd service until the Infiniband/OPA network is fully up?

Note: Our Infiniband/OPA network fabric is Omni-Path 100 Gbit/s, not Mellanox IB.  On AlmaLinux 8.8 we use the in-distro OPA drivers since the CornelisNetworks drivers are not available for RHEL 8.8.
--
Ole Holm Nielsen
PhD, Senior HPC Officer
Department of Physics, Technical University of Denmark,
Fysikvej Building 309, DK-2800 Kongens Lyngby, Denmark
E-mail: ole.h.niel...@fysik.dtu.dk
Homepage: http://dcwww.fysik.dtu.dk/~ohnielse/
Mobile: (+45) 5180 1620

The details:

The slurmd service is started by the service file /usr/lib/systemd/system/slurmd.service after the "network-online.target" has been reached.

It seems that NetworkManager reports "network-online.target" BEFORE the Infiniband/OPA device ib0 is actually up, and this seems to be the cause of our problems!

Here are some important sequences of events from the syslog showing that the network goes online before the Infiniband/OPA network (hfi1_0 adapter) is up:

Oct 30 13:01:40 d064 systemd[1]: Reached target Network is Online.
(lines deleted)
Oct 30 13:01:41 d064 slurmd[2333]: slurmd: error: health_check failed: rc:1 output:ERROR:  nhc:  Health check failed: check_hw_ib:  No IB port is ACTIVE (LinkUp 100 Gb/sec).
(lines deleted)
Oct 30 13:01:41 d064 kernel: hfi1 0000:4b:00.0: hfi1_0: 8051: Link up
Oct 30 13:01:41 d064 kernel: hfi1 0000:4b:00.0: hfi1_0: set_link_state: current GOING_UP, new INIT (LINKUP) Oct 30 13:01:41 d064 kernel: hfi1 0000:4b:00.0: hfi1_0: physical state changed to PHYS_LINKUP (0x5), phy 0x50

I tried to delay the NetworkManager "network-online.target" by setting a wait on the ib0 device and reboot, but that seems to be ignored:

$ nmcli -p connection modify "System ib0" connection.connection.wait-device-timeout 20

I'm hoping that other sites using Omni-Path have seen this and maybe can share a fix or workaround?

Of course we could remove the Infiniband check in Node Health Check (NHC), but that would not really be acceptable during operations.

Thanks for sharing any insights,
Ole

--
Max Rutkowski
IT-Services und IT-Betrieb
Tel.: +49 (0)331/6264-2341
E-Mail: max.rutkow...@gfz-potsdam.de
___________________________________

Helmholtz-Zentrum Potsdam
*Deutsches GeoForschungsZentrum GFZ*
Stiftung des öff. Rechts Land Brandenburg
Telegrafenberg, 14473 Potsdam

Reply via email to