From d17ddf458f878e1ef527efca21cbfe592dfe443c Mon Sep 17 00:00:00 2001 From: cgoveas Date: Fri, 13 Oct 2023 12:28:07 +0530 Subject: [PATCH 1/5] Updating documentation Signed-off-by: cgoveas --- .../Security/Security Configuration Guide.pdf | Bin 618074 -> 618233 bytes .../ProductSubsystemSecurity.rst | 4 ++-- docs/source/bestpractices.rst | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/Security/Security Configuration Guide.pdf b/docs/Security/Security Configuration Guide.pdf index daecc9d1a1c9c1f0a7a51775037d21e7841ae8fd..bae633f4d7ef437befe1291f12b4433674483ab0 100644 GIT binary patch delta 15412 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 delta 15248 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 Date: Fri, 13 Oct 2023 13:47:15 +0530 Subject: [PATCH 2/5] Updating documentation Signed-off-by: cgoveas --- .../InstallationGuides/Benchmarks/OneAPI.rst | 54 ++++++++++++++++- .../Benchmarks/OpenMPI_AOCC.rst | 36 +++++++++++- docs/source/Tables/Metrics.csv | 58 +++++++++++++++++++ 3 files changed, 142 insertions(+), 6 deletions(-) create mode 100644 docs/source/Tables/Metrics.csv diff --git a/docs/source/InstallationGuides/Benchmarks/OneAPI.rst b/docs/source/InstallationGuides/Benchmarks/OneAPI.rst index c3313c20d..e8c1c9cb4 100644 --- a/docs/source/InstallationGuides/Benchmarks/OneAPI.rst +++ b/docs/source/InstallationGuides/Benchmarks/OneAPI.rst @@ -1,6 +1,8 @@ Install oneAPI for MPI jobs on Intel processors ________________________________________________ +This topic explains how to manually install oneAPI for MPI jobs. To install oneAPI automatically, `click here. `_ + **Pre-requisites** * An Omnia **slurm** cluster running with at least 2 nodes: 1 manager and 1 compute. @@ -9,7 +11,7 @@ ________________________________________________ **Download and install Intel oneAPI base toolkit & Intel oneAPI HPC toolkit to control plane** -1. Create the DNF repository file in the ``/temp`` directory as a normal user. :: +1. Create a DNF repository file in the ``/temp`` directory as a normal user. :: tee > /tmp/oneAPI.repo << EOF [oneAPI] @@ -23,7 +25,6 @@ ________________________________________________ 2. Move the newly created ``oneAPI.repo`` file to the YUM configuration directory. :: - /etc/yum.repos.d: sudo mv /tmp/oneAPI.repo /etc/yum.repos.d 3. Switch to the ``/install/post/otherpkgs//x86_64/custom_software/Packages/`` folder and execute: @@ -43,4 +44,51 @@ For example: ``cd /install/post/otherpkgs/rhels8.6.0/x86_64/custom_software/Pack 6. Go to ``utils/os_package_update`` and edit ``package_update_config.yml``. For more information on the input parameters, `click here <../../Roles/Utils/OSPackageUpdate.html>`_. 7. Run ``package_update.yml`` using : ``ansible-playbook package_update.yml`` -8. After execution is completed, verify that ``intelhpckit`` and ``basekit`` packages are on the nodes using: ``rpm -qa | grep intel`` \ No newline at end of file +8. After execution is completed, verify that ``intelhpckit`` and ``basekit`` packages are on the nodes using: ``rpm -qa | grep intel`` + + +**To execute multi-node jobs** + +* Make sure to have NFS shares on each node. +* Copy slurm script to NFS share and execute it from there. +* Load all the necessary modules using module load: :: + + module load mpi + module load pmi/pmix-x86_64 + module load mkl + +* If the commands/batch script are to be run over TCP instead of Infiniband ports, include the below line: :: + + export FI_PROVIDER=tcp + + +Job execution can now be initiated. + +.. note:: Ensure ``runme_intel64_dynamic`` is downloaded before running this command. + +:: + + srun -N 2 /mnt/nfs_shares/appshare/mkl/2023.0.0/benchmarks/mp_linpack/runme_intel64_dynamic + + +For a batch job using the same parameters, the script would be: :: + + + #!/bin/bash + #SBATCH --job-name=testMPI + #SBATCH --output=output.txt + #SBATCH --partition=normal + #SBATCH --nodelist=node00004.omnia.test,node00005.omnia.test + + pwd; hostname; date + export FI_PROVIDER=tcp + module load pmi/pmix-x86_64 + module use /opt/intel/oneapi/modulefiles + module load mkl + module load mpi + + srun /mnt/appshare/benchmarks/mp_linpack/runme_intel64_dynamic + date + + + diff --git a/docs/source/InstallationGuides/Benchmarks/OpenMPI_AOCC.rst b/docs/source/InstallationGuides/Benchmarks/OpenMPI_AOCC.rst index 453ae7ecc..176cf00b7 100644 --- a/docs/source/InstallationGuides/Benchmarks/OpenMPI_AOCC.rst +++ b/docs/source/InstallationGuides/Benchmarks/OpenMPI_AOCC.rst @@ -1,6 +1,8 @@ Open MPI AOCC HPL benchmark for AMD processors ---------------------------------------------- +This topic explains how to manually update servers for MPI jobs. To automatically install pmix and configure slurm, `click here. `_ + **Prerequisites** 1. Provision the cluster and install slurm on all cluster nodes. @@ -26,7 +28,7 @@ Open MPI AOCC HPL benchmark for AMD processors ii. Push the packages to the cluster nodes: - a. Update the ``package_list`` variable in the ``os_package_update/os_package_update.conf`` file and save it. :: + a. Update the ``package_list`` variable in the ``utils/os_package_update/package_update_config.yml`` file and save it. :: package_list: "/install/post/otherpkgs//x86_64/custom_software/openmpi.pkglist" @@ -62,7 +64,7 @@ Open MPI AOCC HPL benchmark for AMD processors systemctl stop slurmctld.service systemctl start slurmctld.service -4. Job execution can now be initiated. To initiate a job use the following sample commands. +4. Job execution can now be initiated. For a job to run on multiple nodes (10.5.0.4 and 10.5.0.5) where OpenMPI is compiled and installed on the NFS share (``/home/omnia-share/openmpi/bin/mpirun``), the job can be initiated as below: .. note:: Ensure ``amd-zen-hpl-2023_07_18`` is downloaded before running this command. @@ -101,6 +103,34 @@ For a batch job using the same parameters, the script would be: :: srun --mpi=pmix_v2 ./amd-zen-hpl-2023_07_18/xhpl -.. note:: If mpirun is used to initiate jobs, a host list is required as illustrated: ``mpirun -np 2 -host 10.5.0.4,10.5.0.5 ./amd-zen-hpl-2023_07_18/xhpl`` +Alternatively, to use ``mpirun``, the script would be: :: + + #!/bin/bash + + #SBATCH --job-name=test + + #SBATCH --output=test.log + + #SBATCH --partition=normal + + #SBATCH -N 3 + + #SBATCH --time=10:00 + + #SBATCH --ntasks=2 + + + + + source /home/omnia-share/setenv_AOCC.sh + + export PATH=$PATH:/home/omnia-share/openmpi/bin + + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/omnia-share/openmpi/lib + + /home/omnia-share/openmpi/bin/mpirun --map-by ppr:1:node -np 2 --display-map --oversubscribe --mca orte_keep_fqdn_hostnames 1 ./xhpl + + +.. note:: The above scripts are samples that can be modified as required. Ensure that ``--mca orte_keep_fqdn_hostnames 1`` is included in the mpirun command in sbatch scripts. Omnia maintains all hostnames in FQDN format. Failing to include ``--mca orte_keep_fqdn_hostnames 1`` may cause job initiation to fail. diff --git a/docs/source/Tables/Metrics.csv b/docs/source/Tables/Metrics.csv new file mode 100644 index 000000000..2a9004fa3 --- /dev/null +++ b/docs/source/Tables/Metrics.csv @@ -0,0 +1,58 @@ +Metric Name,Command,Comments,Aggregation Level +BlockedProcesses,``grep procs_blocked /proc/stat``,,Node Level +CPUSystem,``psutil.cpu_times().system``,,Node Level +CPUWait,``psutil.cpu_times().iowait``,,Node Level +ErrorsRecv,``psutil.net_io_counters(pernic=True).get(interface_name).errin``,Error packets received for individual network interfaces will be populated.,Node Level +ErrorsSent,``psutil.net_io_counters(pernic=True).get(interface_name).errout``,Error packets sent for individual network interfaces will be populated.,Node Level +FailedJobs,``sacct -P --delimiter=\t``,,Cluster Level +HardwareCorruptedMemory,``grep HardwareCorrupted /proc/meminfo``,,Node Level +MemoryActive ,``psutil.virtual_memory().active``,,Node Level +MemoryAvailable ,``psutil.virtual_memory().available``,,Node Level +MemoryCached,``psutil.virtual_memory().cached``,,Node Level +MemoryFree,``psutil.virtual_memory().free``,,Node Level +MemoryInactive ,``psutil.virtual_memory().inactive``,,Node Level +MemoryPercent ,``psutil.virtual_memory().percent``,,Node Level +MemoryShared ,``psutil.virtual_memory().shared``,,Node Level +MemoryTotal ,``psutil.virtual_memory().total``,,Node Level +MemoryUsed ,``psutil.virtual_memory().used``,,Node Level +NodesDown,``sinfo --format=%N\t%P\t%a\t%C\t%t\t%D\t%m``,"Node is considered down if node state is any of the following: +down, drained, draining, fail, failing, future, inval, maint, powered_down, powering_down, unknown, unk. + +.. note:: Node state with * in suffix will be considered as down. Example, idle* will be considered as down.",Cluster Level +NodesTotal,``sinfo --format=%N\t%P\t%a\t%C\t%t\t%D\t%m``,,Cluster Level +NodesUp,``sinfo --format=%N\t%P\t%a\t%C\t%t\t%D\t%m``,"Node is considered up if node state is any of the following: +idle, mixed, completing. + +.. note:: Node state with * in suffix will be considered as down node. Example, idle* will be considered as down node. +",Cluster Level +QueuedJobs,``squeue --format=%i\t%P\t%j\t%u\t%T\t%S\t%N``,,Cluster Level +RunningJobs,``squeue --format=%i\t%P\t%j\t%u\t%T\t%S\t%N``,,Cluster Level +SMARTHDATemp,``smartctl -a ``,,Node Level +UniqueUserLogin,"``who|cut -f 1 -d "" ""|sort -u|wc -l``","* Locally created users via ``useradd`` command are also counted in ``UniqueUserLogin`` count. +* Remote logged in LDAP users are not counted in ``UniqueUserLogin`` on login nodes. +* Remote logged in FreeIPA users are counted in ``UniqueUserLogin`` on login nodes. +","Login Node/ Manager Node (If Login Node is not present) +" +dmesg,``dmesg --level=err``,,Node Level +Beegfs -beegfsstat,"``systemctl is-active beegfs-client`` +``beegfs-ctl --nodetype=client --listnodes``",,Node Level +gpu_driver_health:gpu,"* For NVIDIA GPU: ``nvidia-smi --query-gpu=driver_version --format=csv,nounits`` +* For AMD GPU: ``rocm-smi --showdriverversion --csv``",,Node Level +gpu_health_nvlink:gpu [1]_,NVIDIA: ``nvidia-smi nvlink --status``,,Node Level +gpu_health_pcie:gpu,"* For NVIDIA GPU: ``nvidia-smi --query-gpu=pci.bus_id --format=csv,nounits`` +* For AMD GPU: ``rocm-smi --showbus --csv``",,Node Level +gpu_health_pmu:gpu,"For NVIDIA GPU: ``nvidia-smi --query-gpu=power.management --format=csv,nounits``",PMU - Power management unit,Node Level +gpu_health_power:gpu,"For NVIDIA GPU: ``nvidia-smi --query-gpu=pci.bus_id --format=csv,nounits``",Power consumption,Node Level +gpu_health_thermal:gpu,For AMD GPU: ``rocm-smi --showbus --csv``,GPU temperature health,Node Level +Kubernetespodsstatus,``sudo kubectl get pods -A -o json``,"Value is pass when all pods and containers are in running state, otherwise Fail.",Cluster Level +Kuberneteschildnode,``sudo kubectl get nodes -o json``,"Value is pass when all child nodes are in Ready or Ready,SchedulingDisabled state, otherwise Fail.",Cluster Level +kubernetesnodesstatus,``sudo kubectl get nodes -o json``,"Value is pass when all nodes are in Ready or Ready,SchedulingDisabled state, otherwise Fail.",Cluster Level +kubernetescomponentsstatus,``sudo kubectl get --raw=/livez?verbose``,"Value is Pass when health check is passed in ``kubectl get --raw=/livez?verbose`` command , otherwise fail.",Cluster Level +Smart,``smartctl -a ``,,Node Level +gpu_temperature:gpu,"* For NVIDIA GPU: ``nvidia-smi --query-gpu=temperature.gpu --format=csv,nounits`` +* For AMD GPU: ``rocm-smi -t --csv``",,Node Level +gpu_utilization:,"* For NVIDIA GPU: ``nvidia-smi nvidia-smi --query-gpu=utilization.gpu --format=csv,nounits`` +* For AMD GPU: ``rocm-smi -u --csv``",,Node Level +gpu_utilization:average,"*For NVIDIA GPU: ``nvidia-smi nvidia-smi --query-gpu=utilization.gpu --format=csv,nounits`` + +*For AMD GPU: ``rocm-smi -u --csv``",Value is average of utilization value of all GPUs,Node Level From b815600fb4825ccea50ee88b58830e8b9e37759f Mon Sep 17 00:00:00 2001 From: cgoveas Date: Fri, 13 Oct 2023 13:58:42 +0530 Subject: [PATCH 3/5] Updating documentation Signed-off-by: cgoveas --- docs/source/InstallationGuides/Benchmarks/OneAPI.rst | 2 +- docs/source/InstallationGuides/Benchmarks/OpenMPI_AOCC.rst | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/source/InstallationGuides/Benchmarks/OneAPI.rst b/docs/source/InstallationGuides/Benchmarks/OneAPI.rst index 82419d2c4..e8c1c9cb4 100644 --- a/docs/source/InstallationGuides/Benchmarks/OneAPI.rst +++ b/docs/source/InstallationGuides/Benchmarks/OneAPI.rst @@ -1,7 +1,7 @@ Install oneAPI for MPI jobs on Intel processors ________________________________________________ -This topic explains how to manually install oneAPI for MPI jobs. To automate the procedure, `click here. `_ +This topic explains how to manually install oneAPI for MPI jobs. To install oneAPI automatically, `click here. `_ **Pre-requisites** diff --git a/docs/source/InstallationGuides/Benchmarks/OpenMPI_AOCC.rst b/docs/source/InstallationGuides/Benchmarks/OpenMPI_AOCC.rst index 0f88dfb35..0c2f68ef3 100644 --- a/docs/source/InstallationGuides/Benchmarks/OpenMPI_AOCC.rst +++ b/docs/source/InstallationGuides/Benchmarks/OpenMPI_AOCC.rst @@ -2,8 +2,6 @@ Open MPI AOCC HPL benchmark for AMD processors ---------------------------------------------- This topic explains how to manually update servers for MPI jobs. To automatically install pmix and configure slurm, `click here. `_ -This topic explains how to manually update servers for MPI jobs. To automatically install pmix and configure slurm, `click here. `_ - **Prerequisites** 1. Provision the cluster and install slurm on all cluster nodes. From e9851cc7d30082a83251158013d8f3909f82a6b8 Mon Sep 17 00:00:00 2001 From: cgoveas Date: Fri, 13 Oct 2023 13:59:10 +0530 Subject: [PATCH 4/5] Updating documentation Signed-off-by: cgoveas --- docs/source/Tables/Metrics.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/Tables/Metrics.csv b/docs/source/Tables/Metrics.csv index 0bb0a756b..2a9004fa3 100644 --- a/docs/source/Tables/Metrics.csv +++ b/docs/source/Tables/Metrics.csv @@ -47,7 +47,7 @@ gpu_health_thermal:gpu,For AMD GPU: ``rocm-smi --showbus --csv``,GPU temperature Kubernetespodsstatus,``sudo kubectl get pods -A -o json``,"Value is pass when all pods and containers are in running state, otherwise Fail.",Cluster Level Kuberneteschildnode,``sudo kubectl get nodes -o json``,"Value is pass when all child nodes are in Ready or Ready,SchedulingDisabled state, otherwise Fail.",Cluster Level kubernetesnodesstatus,``sudo kubectl get nodes -o json``,"Value is pass when all nodes are in Ready or Ready,SchedulingDisabled state, otherwise Fail.",Cluster Level -kubernetescomponentsstatus,sudo kubectl get --raw=/livez?verbose,"Value is Pass when health check is passed in ``kubectl get --raw=/livez?verbose`` command , otherwise fail.",Cluster Level +kubernetescomponentsstatus,``sudo kubectl get --raw=/livez?verbose``,"Value is Pass when health check is passed in ``kubectl get --raw=/livez?verbose`` command , otherwise fail.",Cluster Level Smart,``smartctl -a ``,,Node Level gpu_temperature:gpu,"* For NVIDIA GPU: ``nvidia-smi --query-gpu=temperature.gpu --format=csv,nounits`` * For AMD GPU: ``rocm-smi -t --csv``",,Node Level From 3ff52ca46701a88415fbf07b1d25b2ffa9dcb216 Mon Sep 17 00:00:00 2001 From: cgoveas Date: Fri, 13 Oct 2023 15:51:32 +0530 Subject: [PATCH 5/5] Updating documentation Signed-off-by: cgoveas --- .../Security/Security Configuration Guide.pdf | Bin 618233 -> 618179 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/Security/Security Configuration Guide.pdf b/docs/Security/Security Configuration Guide.pdf index bae633f4d7ef437befe1291f12b4433674483ab0..6535db1078d49563e1ddc3c18c84e6636f3e373f 100644 GIT binary patch delta 14054 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 IaU}Tv1xLO!wEzGB delta 14113 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