İçerik
|
Nedir
Slurm süper bilgisayar merkezlerinin kullandığı bir kaynak yönetim yazılımıdır. Çalıştırılacak paralel çalışan programların uygun şekilde bilgisayarlar arasında dağımıtımını, kontrolünü ve izlenmesini sağlar.Slurmctld isimli bir adet ControlMachine üzerinde çalışan Slurm Controller, Compute Node'lar üzerinde çalışan Slurmd Daemon'ı ve bunların iletişiminin şifrelenmesini ve yetkilendirilmesini sağlayan munge isimli servisten oluşmaktadır.
İş teslimi için makina üzerinde munge servisi olmalıdır. Srun, sbatch komutları ile iş teslimi yapılır. İş SlurmController'a gider ve burdan Slurm Daemon'lara dağıtılır. Slurm'da iş yönetimi kısaca bu şekilde yapılır. Aşağıdaki şablon Slurm çalışma sistemini kısaca özetler.
Kurulum
Not 1: Kurulum CentOs sistemler için anlatılmıştırNot 2: Kurulum yaparken sabit bir dizin belirlenmiştir
- Munge: Slurm için lazım olan Authentication Plugin'i indirilir ve kaynaktan aşağıdaki şekilde kurulur. Slurm'la iş gönderilecek makinada mutlaka munge aynı anahtara sahip olacak şekilde kurulmalıdır.
- http://munge.googlecode.com/ adresinden indirilir.
- Munge için şu paketlerin sistemde kurulu olması gerekir.
yum install gcc make perl openssl-devel.x86_64
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
make install
- munge.key oluştumak için aşağıdaki komuttan yararlanılır.
echo -n "slurm" | sha1sum | cut -d' ' -f1 > /etc/munge/munge.key
- Ayrıca munge.key için izinler ayarlanır.
chown daemon /etc/munge/munge.key
chmod 700 /etc/munge/munge.key
- Ayrıca munge.key için izinler ayarlanır.
- Son olarak aşağıdaki komutu verip lib dosyalarını cacheliyoruz.
ldconfig
- Slurm https://computing.llnl.gov/linux/slurm/download.html adresinden aşağıdaki şekilde kurulur.
- (Database isteniyorsa)Şu paketler sistemde kurulu olmalı mysql-server ve mysql-devel
- (Sview arayüz isteniyorsa) Şu paket sistemde kurulu olmalı gtk2-devel.x86_64
./configure --prefix=/opt/slurm/ --with-mysql_config=/usr/bin/
make
make install
Konfigürasyon ve Çalıştırma
Slurm Konfigürasyonu için şu adresden otomatik olarak oluşturulup /opt/slurm/etc/slurm.conf içine yazılır ya da aşağıdaki örnekten yararlanılabilir. :http://www.schedmd.com/slurmdocs/configurator.html# slurm.conf file generated by configurator.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
ControlMachine=
BackupController=
#ControlAddr=
#BackupAddr=
#
AuthType=auth/munge
CacheGroups=0
#CheckpointType=checkpoint/none
CryptoType=crypto/munge
#DisableRootJobs=NO
#EnforcePartLimits=NO
#Epilog=
#EpilogSlurmctld=
#FirstJobId=1
#MaxJobId=999999
#GresTypes=
#GroupUpdateForce=0
#GroupUpdateTime=600
#JobCheckpointDir=/var/slurm/checkpoint
#JobCredentialPrivateKey=
#JobCredentialPublicCertificate=
#JobFileAppend=0
#JobRequeue=1
#JobSubmitPlugins=1
#KillOnBadExit=0
#LaunchType=launch/slurm
#Licenses=foo*4,bar
#MailProg=/bin/mail
#MaxJobCount=5000
#MaxStepCount=40000
#MaxTasksPerNode=128
#MpiDefault=none
MpiParams=ports=12000-12999
#PluginDir=
#PlugStackConfig=
#PrivateData=jobs
ProctrackType=proctrack/linuxproc
#Prolog=
#PrologSlurmctld=
#PropagatePrioProcess=0
#PropagateResourceLimits=
#PropagateResourceLimitsExcept=
#RebootProgram=
ReturnToService=2
#SallocDefaultCommand=
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmctldPort=6817
SlurmdPidFile=/var/run/slurmd.pid
SlurmdPort=6818
SlurmdSpoolDir=/var/spool/slurmd
SlurmUser=root
#SlurmdUser=root
#SrunEpilog=
#SrunProlog=
StateSaveLocation=/var/spool
SwitchType=switch/none
#TaskEpilog=
TaskPlugin=task/none
#TaskPluginParam=
#TaskProlog=
TopologyPlugin=topology/tree
#TmpFs=/tmp
#TrackWCKey=no
TreeWidth=250
#UnkillableStepProgram=
#UsePAM=0
#
#
# TIMERS
#BatchStartTimeout=10
#CompleteWait=0
#EpilogMsgTime=2000
#GetEnvTimeout=2
#HealthCheckInterval=0
#HealthCheckProgram=
InactiveLimit=0
KillWait=30
MessageTimeout=10
#ResvOverRun=0
MinJobAge=300
#OverTimeLimit=0
SlurmctldTimeout=120
SlurmdTimeout=300
UnkillableStepTimeout=60
#VSizeFactor=0
Waittime=0
#
#
# SCHEDULING
#DefMemPerCPU=0
FastSchedule=0
#MaxMemPerCPU=0
#SchedulerRootFilter=1
#SchedulerTimeSlice=30
SchedulerType=sched/builtin
SchedulerPort=7321
SelectType=select/cons_res
#SelectTypeParameters=CR_CPU
#
#
# JOB PRIORITY
#PriorityType=priority/basic
#PriorityDecayHalfLife=
#PriorityCalcPeriod=
#PriorityFavorSmall=
#PriorityMaxAge=
#PriorityUsageResetPeriod=
#PriorityWeightAge=
#PriorityWeightFairshare=
#PriorityWeightJobSize=
#PriorityWeightPartition=
#PriorityWeightQOS=
#
#
# LOGGING AND ACCOUNTING
#AccountingStorageEnforce=0
AccountingStorageHost=
AccountingStorageLoc=slurmAcctDb
AccountingStorageUser=root
AccountingStoragePass=/var/run/munge/munge.socket.2
AccountingStorageType=accounting_storage/slurmdbd
AccountingStoreJobComment=YES
#
JobCompHost=
JobCompLoc=slurmAcctDb
JobCompUser=root
JobCompPass=/var/run/munge/munge.socket.2
JobCompType=jobcomp/filetxt
#
JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/linux
#
#
SlurmctldDebug=3
SlurmctldLogFile=/var/log/slurmctld
SlurmdDebug=3
SlurmdLogFile=/var/log/slurmd
#SlurmSchedLogFile=
#SlurmSchedLogLevel=
#
#
# POWER SAVE SUPPORT FOR IDLE NODES (optional)
#SuspendProgram=
#ResumeProgram=
#SuspendTimeout=
#ResumeTimeout=
#ResumeRate=
#SuspendExcNodes=
#SuspendExcParts=
#SuspendRate=
#SuspendTime=
#
ClusterName=orion
#
# COMPUTE NODES
NodeName=a1-a10 CPUs=2 State=UNKNOWN
NodeName=a11-a20 CPUs=4 State=UNKNOWN
#shortMaxTime 3 saat, longMaxTime 1 hafta
PartitionName=short Nodes=a[1-10] MaxTime=180 State=UP Default=Yes AllowGroups=slurm
PartitionName=mid Nodes=a[11-20] MaxTime=3-0:0:0 State=UP AllowGroups=slurm
Slurm database için /opt/slurm/etc/slurmdbd.conf içine şu dosyadaki konfigürasyon yazılır.
# Sample /etc/slurmdbd.conf
#
ArchiveEvents=yes
ArchiveJobs=yes
ArchiveSteps=no
ArchiveSuspend=no
#ArchiveScript=/usr/sbin/slurm.dbd.archive
AuthInfo=/var/run/munge/munge.socket.2
AuthType=auth/munge
DbdHost=
DbdBackupHost=
DebugLevel=4
PurgeEventAfter=1month
PurgeJobAfter=12month
PurgeStepAfter=1month
PurgeSuspendAfter=1month
LogFile=/var/log/slurmdbd.log
PidFile=/var/run/slurmdbd.pid
SlurmUser=root
StoragePass=
StorageType=accounting_storage/mysql
StorageUser=root
StorageLoc=slurmAcctDb
Çalıştırma
- Öncelikle authentication programı aşağıdaki komut ile çalıştırılmalıdır.
- service munge start
- Slurm controller ve daemon aşağıdaki şekilde yapılandırılmalıdır. Slurm'un init.d betiği Slurm'un kaynak dosyası içersindeki etc dizininde mevcuttur. Buradan alınıp /etc/init.d/slurm ismi ile kopyalanır ve aşağıdaki değişiklikler yapılarak slurm servisi hazır hale getirilir.
- cp slurm/etc/init.d.slurm /etc/init.d/slurm
- cp slurm/etc/init.d.slurmdbd /etc/init.d/slurmdbd
- /etc/init.d/slurm ve slurmdbd dosyalarını açıp aşağıdaki değişkenleri(exec_prefix ve prefix) tanımlayalım. Eğer BINDIR,CONFDIR.. bir yanlışlık var ise aşağıdaki gibi yapalım.
- exec_prefix=/opt/slurm
- prefix=/opt/slurm
- Servis başlatılır ve bilgisayar her açıldığında çalışacak şekilde ayarlanır.
- service slurm start
- service slurmdbd start
- Ve servisler başlangıçta açılacak şekilde ayarlanır
- chkconfig --level 345 slurm on
- chkconfig --level 345 slurmdbd on
- chkconfig --level 345 munge on
İş Gönderme
- İnteraktif olarak iş göndermek için basit bir helloWorld mpi işi internetten bulunup derlenip aşağıdaki şekillerde gönderilir.
- srun -N 10
mpijob sbatch job.slurm
İş gönderme ve Slurm kullanımı ile ilgili ayrıntıları bir dahaki yazımda açıklamak üzere
No comments:
Post a Comment