KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

SLURMのX11サポートしたコンパイルを検討

登録日 :2024/11/23 19:58
カテゴリ :SLURM

RockyLinuxのマシンにX11フォワーディングを有効にして機能する形でインストールしたい。
そのためには、まずX11をサポートする状態でのビルドが必要となりそう。

1 ビルド環境の確認

RockyLinuxの場合は、libssh-develをインストールしておく必要がると思われる。

[root@rpmbuild ~]# dnf search libssh-devel
メタデータの期限切れの最終確認: 0:04:49 前の 2024年11月23日 19時51分38秒 に実施しました
================================== 名前 完全一致: libssh-devel ===================================
libssh-devel.i686 : Development files for libssh
libssh-devel.x86_64 : Development files for libssh

ちなみに、libss2-develはRockyLinuxのパッケージに用意されていなかった

[root@rpmbuild ~]# dnf search libssh2-devel
メタデータの期限切れの最終確認: 0:06:16 前の 2024年11月23日 19時51分38秒 に実施しました
一致する項目はありませんでした
[root@rpmbuild ~]#

2. libssh-develのインストール

libssh-develをインストールします。

[root@rpmbuild download]# sudo dnf install libssh-devel | tee libssh-devel-install.20241123.log
メタデータの期限切れの最終確認: 0:13:54 前の 20241123 195138 に実施しました。
依存関係が解決しました。
================================================================================
 パッケージ             Arch         バージョン           リポジトリー    サイズ
================================================================================
インストール:
 libssh-devel           x86_64       0.9.6-14.el8         appstream       440 k
アップグレード:
 libssh                 x86_64       0.9.6-14.el8         baseos          219 k
 libssh-config          noarch       0.9.6-14.el8         baseos           20 k
依存関係のインストール:
 cmake-filesystem       x86_64       3.26.5-2.el8         appstream        44 k

トランザクションの概要
================================================================================
インストール    2 パッケージ
アップグレード  2 パッケージ

ダウンロードサイズの合計: 723 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/4): cmake-filesystem-3.26.5-2.el8.x86_64.rpm  62 kB/s |  44 kB     00:00
(2/4): libssh-config-0.9.6-14.el8.noarch.rpm    157 kB/s |  20 kB     00:00
(3/4): libssh-0.9.6-14.el8.x86_64.rpm           195 kB/s | 219 kB     00:01
(4/4): libssh-devel-0.9.6-14.el8.x86_64.rpm     289 kB/s | 440 kB     00:01
--------------------------------------------------------------------------------
合計                                            253 kB/s | 723 kB     00:02
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
  アップグレード中 : libssh-config-0.9.6-14.el8.noarch                      1/6
  アップグレード中 : libssh-0.9.6-14.el8.x86_64                             2/6
  インストール中   : cmake-filesystem-3.26.5-2.el8.x86_64                   3/6
  インストール中   : libssh-devel-0.9.6-14.el8.x86_64                       4/6
  整理             : libssh-0.9.6-6.el8.x86_64                              5/6
  整理             : libssh-config-0.9.6-6.el8.noarch                       6/6
  scriptletの実行中: libssh-config-0.9.6-6.el8.noarch                       6/6
  検証             : cmake-filesystem-3.26.5-2.el8.x86_64                   1/6
  検証             : libssh-devel-0.9.6-14.el8.x86_64                       2/6
  検証             : libssh-0.9.6-14.el8.x86_64                             3/6
  検証             : libssh-0.9.6-6.el8.x86_64                              4/6
  検証             : libssh-config-0.9.6-14.el8.noarch                      5/6
  検証             : libssh-config-0.9.6-6.el8.noarch                       6/6

アップグレード済み:
  libssh-0.9.6-14.el8.x86_64          libssh-config-0.9.6-14.el8.noarch
インストール済み:
  cmake-filesystem-3.26.5-2.el8.x86_64     libssh-devel-0.9.6-14.el8.x86_64

完了しました!
[root@rpmbuild download]# ls

3. slurmを再ビルドしてみます。

※ビルド手順についての詳細はいかにまとめていま。
 https://nonoco.believeriver.site/detail_mark/206/

rpmbuild -ta slurm-21.08.8-2.tar.bz2 2>&1 | tee rpmbuild-slurm.log

実行中のログの確認

[root@rpmbuild slurm]# cat rpmbuild-slurm.log.20241123_wih_libssh-devel | grep x11_forwa
-rw-r--r-- 1000/1000      8811 2022-05-06 05:07 slurm-21.08.8-2/src/slurmd/slurmstepd/x11_forwarding.c
-rw-r--r-- 1000/1000      2191 2022-05-06 05:07 slurm-21.08.8-2/src/slurmd/slurmstepd/x11_forwarding.h
gcc -DHAVE_CONFIG_H -I. -I../../.. -I../../../slurm  -I../../..    -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -Wl,-z,lazy -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -pthread -ggdb3 -Wall -g -O1 -fno-strict-aliasing -c -o x11_forwarding.o x11_forwarding.c
/bin/sh ../../../libtool  --tag=CC   --mode=link gcc  -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -Wl,-z,lazy -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -pthread -ggdb3 -Wall -g -O1 -fno-strict-aliasing -export-dynamic   -Wl,-z,relro  -Wl,-z,lazy  -o slurmstepd container.o slurmstepd.o mgr.o task.o slurmstepd_job.o io.o ulimits.o pdebug.o pam_ses.o read_oci_conf.o req.o multi_prog.o step_terminate_monitor.o x11_forwarding.o ../common/libslurmd_common.o -Wl,-rpath=/usr/lib64/slurm -L../../../src/api/.libs -lslurmfull -ldl  -lpam -lpam_misc -lutil  -lm -lresolv
libtool: link: gcc -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -Wl,-z -Wl,lazy -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -pthread -ggdb3 -Wall -g -O1 -fno-strict-aliasing -Wl,-z -Wl,relro -Wl,-z -Wl,lazy -o .libs/slurmstepd container.o slurmstepd.o mgr.o task.o slurmstepd_job.o io.o ulimits.o pdebug.o pam_ses.o read_oci_conf.o req.o multi_prog.o step_terminate_monitor.o x11_forwarding.o ../common/libslurmd_common.o -Wl,-rpath=/usr/lib64/slurm -Wl,--export-dynamic  -L../../../src/api/.libs /root/rpmbuild/BUILD/slurm-21.08.8-2/src/api/.libs/libslurmfull.so -ldl -lpam -lpam_misc -lutil -lm -lresolv -pthread -Wl,-rpath -Wl,/usr/lib64/slurm

/root/rpmbuild/BUILD/slurm-21.08.8-2/config.log にてコンパイルオプションでX11を有効にしていることを確認。

[root@rpmbuild slurm-21.08.8-2]# cat config.log | grep X11
configure:22331: checking whether Slurm internal X11 support is enabled
configure:22346: result:

| #define WITH_SLURM_X11 1
| #define WITH_SLURM_X11 1
| #define WITH_SLURM_X11 1
#define WITH_SLURM_X11 1

resultもエラーなし。

X11に関するWarningも出ていないようである。

[root@rpmbuild slurm-21.08.8-2]# cat config.log | grep WARNING
configure:18844: WARNING: unable to locate NUMA memory affinity functions
configure:19521: WARNING: unable to locate json parser library
configure:19625: WARNING: unable to locate jwt library
configure:19718: WARNING: unable to locate HTTP Parser library
configure:19810: WARNING: unable to locate libyaml parser library
configure:20723: WARNING: unable to locate ofed installation
configure:20881: WARNING:
configure:21249: WARNING: unable to locate working lz4 installation
configure:21329: WARNING: unable to locate hwloc installation
configure:21508: WARNING: unable to locate libnvidia-ml.so and/or nvml.h
configure:21665: WARNING: unable to locate librocm_smi64.so and/or rocm_smi.h
configure:21952: WARNING: unable to locate pmix installation
configure:22071: WARNING: unable to locate freeipmi installation (libipmonitoring/libfreeipmi
configure:22166: WARNING: unable to locate rrdtool installation
configure:23432: WARNING: cannot build sview without gtk library
configure:23698: WARNING: unable to locate DataWarp installation
configure:24285: WARNING: unable to locate netloc installation
configure:24518: WARNING: unable to locate lua package
configure:24585: WARNING: unable to build man page html files without man2html
configure:25314: WARNING: unable to locate/link against libcurl-devel installation
[root@rpmbuild slurm-21.08.8-2]#

Appendix 1

X11をサポートしていないとき。

configure: WARNING: unable to locate libssh2 installation
configure: WARNING: Slurm internal X11 support disabled
srun --x11 xterm
"unrecognized option '--x11'" というエラーが表示される場合、X11サポートが無効です

Appendix 2

libssh-develがない状態でコンパイルしたときも、実は問題なかった模様

[root@rpmbuild slurm-21.08.8-2]# pwd
/root/rpmbuild.bak1/BUILD/slurm-21.08.8-2

configure:22331: checking whether Slurm internal X11 support is enabled
configure:22346: result:

X11サポートに関するエラーも出ていない模様

[root@rpmbuild slurm-21.08.8-2]# cat config.log | grep WARNING
configure:18844: WARNING: unable to locate NUMA memory affinity functions
configure:19521: WARNING: unable to locate json parser library
configure:19625: WARNING: unable to locate jwt library
configure:19718: WARNING: unable to locate HTTP Parser library
configure:19810: WARNING: unable to locate libyaml parser library
configure:20723: WARNING: unable to locate ofed installation
configure:20881: WARNING:
configure:21249: WARNING: unable to locate working lz4 installation
configure:21329: WARNING: unable to locate hwloc installation
configure:21508: WARNING: unable to locate libnvidia-ml.so and/or nvml.h
configure:21665: WARNING: unable to locate librocm_smi64.so and/or rocm_smi.h
configure:21952: WARNING: unable to locate pmix installation
configure:22071: WARNING: unable to locate freeipmi installation (libipmonitoring/libfreeipmi
configure:22166: WARNING: unable to locate rrdtool installation
configure:23432: WARNING: cannot build sview without gtk library
configure:23698: WARNING: unable to locate DataWarp installation
configure:24285: WARNING: unable to locate netloc installation
configure:24518: WARNING: unable to locate lua package
configure:24585: WARNING: unable to build man page html files without man2html
configure:25314: WARNING: unable to locate/link against libcurl-devel installation
[root@rpmbuild slurm-21.08.8-2]#

Appendix 3

  • libssh-develがある環境でコンパイルしたときのsrun、salloc挙動
    結局、srun --helpでは、--x11についての説明が出てこない。そういうものなのか。
[root@compute02 slurm]# srun --x11 xclock
srun: error: No DISPLAY variable set, cannot setup x11 forwarding.
[root@compute02 slurm]# salloc --x11
salloc: error: No DISPLAY variable set, cannot setup x11 forwarding.
[root@compute02 slurm]#
  • libssh-develなしでコンパイルしたslurmのsrun, salloc挙動
[root@compute01 ~]# srun --x11 xclock
srun: error: No DISPLAY variable set, cannot setup x11 forwarding.
[root@compute01 ~]# salloc --x11
salloc: error: No DISPLAY variable set, cannot setup x11 forwarding.

変化がなかったので、関係ないのか。
libssh-develがない状態で作成したslurmでも、x11をサポートしているような挙動である。
「"unrecognized option '--x11'" 」というエラーは出ていない。