HTCondor
HTCondor , küme tanımınızın yapılandırma bölümündeki "run_list" değiştirilerek CycleCloud kümesinde kolayca etkinleştirilebilir. HTCondor kümesinin üç temel bileşeni vardır. İlki, zamanlama ve yönetim daemon'larını sağlayan "merkezi yönetici"dir. HTCondor kümesinin ikinci bileşeni, işlerin sisteme gönderildiği bir veya daha fazla zamanlayıcıdır. Son bileşen, hesaplamayı gerçekleştiren konaklar olan bir veya daha fazla yürütme düğümüdür. Basit bir HTCondor şablonu şöyle görünebilir:
[cluster htcondor]
[[node manager]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[central_manager]
[[node scheduler]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[condor_scheduler_role],role[filer_role],role[scheduler]
[[nodearray execute]]
ImageName = cycle.image.centos7
MachineType = Standard_A1 # 1 core
Count = 1
[[[configuration]]]
run_list = role[usc_execute]
CycleCloud'da tanımı olan bir kümeyi içeri aktarmak ve başlatmak bir "yönetici" ve "zamanlayıcı" düğümü ve bir "yürütme" düğümü verir. Yürütme düğümleri komutuyla kümeye cyclecloud add_node
eklenebilir. 10 yürütme düğümü daha eklemek için:
cyclecloud add_node htcondor -t execute -c 10
HTCondor Otomatik Ölçeklendirme
CycleCloud, HTCondor için otomatik ölçeklendirmeyi destekler. Bu, yazılımın kuyruğunuzun durumunu izleyeceği ve işi en uygun sürede/maliyette tamamlamak için gerektiğinde düğümleri açıp kapatacağı anlamına gelir. Küme tanımınıza ekleyerek Autoscale=true
HTCondor için otomatik ölçeklendirmeyi etkinleştirebilirsiniz:
[cluster htcondor]
Autoscale = True
HTCondor Gelişmiş Kullanımı
İşlerin ortalama çalışma zamanını biliyorsanız, işinizde (dakika cinsinden) tanımlayabilirsiniz average_runtime
. CycleCloud, en az düğüm sayısını başlatmak için bunu kullanır (örneğin, beş adet 10 dakikalık iş, 10 olarak ayarlandığında beş average_runtime
düğüm yerine yalnızca tek bir düğüm başlatır).
Nodearray'i Otomatik Ölçeklendirme
Varsayılan olarak, HTCondor nodearray'den 'execute' adlı çekirdekler istemektedir. Bir iş farklı bir nodearray gerektiriyorsa (örneğin, bir iş akışındaki belirli işler yüksek bellek gereksinimine sahipse), iş için bir slot_type
öznitelik belirtebilirsiniz. Örneğin, ekleme +slot_type = "highmemory"
HTCondor'un "execute" yerine "highmemory" nodearray düğümünden bir düğüm istemesine neden olur (bunun şu anda nodearray'nin [[[configuration]]]
bölümünde ayarlanması gerektiğini htcondor.slot_type = "highmemory"
unutmayın). Bu, HTCondor'un requirements
işleri nasıl zamanlamasını etkilemez, bu nedenle işin veya rank
ifadelerine startd özniteliğini eklemek slot_type
isteyebilirsiniz. Örneğin: Requirements = target.slot_type = "highmemory"
.
İşleri HTCondor'a Gönderme
İşleri HTCondor zamanlayıcıya göndermenin en genel yolu komutudur (zamanlayıcı düğümünden çalıştır):
condor_submit my_job.submit
Örnek bir gönderme dosyası şöyle görünebilir:
Universe = vanilla
Executable = do_science
Arguments = -v --win-prize=true
Output = log/$(Cluster).$(Process).out
Error = log/$(Cluster).$(Process).err
Should_transfer_files = if_needed
When_to_transfer_output = On_exit
+average_runtime = 10
+slot_type = "highmemory"
Queue
HTCondor Yapılandırma Başvurusu
İşlevleri özelleştirmek için ayarlayabileceğiniz HTCondor'a özgü yapılandırma seçenekleri şunlardır:
yapılandırma seçeneklerini HTCondor-Specific | Description |
---|---|
htcondor.agent_enabled | Doğruysa, iş gönderme ve yoklama için condor_agent kullanın. Varsayılan: false |
htcondor.agent_version | Kullanılacak condor_agent sürümü. Varsayılan: 1.27 |
htcondor.classad_lifetime | Classad'lerin varsayılan yaşam süresi (saniye olarak). Varsayılan: 700 |
htcondor.condor_owner | HTCondor ölçek genişletme betiklerinin sahibi olan Linux hesabı. Varsayılan: kök |
htcondor.condor_group | HTCondor scaledown betiklerinin sahibi olan Linux grubu. Varsayılan: kök |
htcondor.data_dir | Günlükler, biriktirme dizinleri, yürütme dizinleri ve yerel yapılandırma dosyası dizini. Varsayılan: /mnt/condor_data (Linux), C:\All Services\condor_local (Windows) |
htcondor.ignore_hyperthreads | (Yalnızca Windows) Hiper iş parçacığı oluşturmayı "devre dışı bırakmanın" bir yolu olarak CPU sayısını algılanan CPU'ların yarısı olacak şekilde ayarlayın. Otomatik ölçeklendirme kullanıyorsanız, [[node]] veya [[nodearray]] bölümündeki yapılandırma ayarıyla Cores hiper iş parçacığı olmayan çekirdek sayısını belirtin. Varsayılan: false |
htcondor.install_dir | HTCondor'un yüklendiği dizin. Varsayılan: /opt/condor (Linux), C:\condor (Windows) |
htcondor.job_start_count | Bir schedd'nin döngü başına başlayacağı iş sayısı. 0 sınırsızdır. Varsayılan: 20 |
htcondor.job_start_delay | Her iş başlangıç aralığı arasındaki saniye sayısı. 0 hemen. Varsayılan: 1 |
htcondor.max_history_log | İş geçmişi dosyasının bayt cinsinden boyut üst sınırı. Varsayılan: 20971520 |
htcondor.max_history_rotations | Tutulacak iş geçmişi dosyası sayısı üst sınırı. Varsayılan: 20 |
htcondor.negotiator_cycle_delay | Yeni bir müzakereci döngüsü başlamadan önce geçmesi gereken en az saniye sayısı. Varsayılan: 20 |
htcondor.negotiator_interval | condor_negotiator bir anlaşma döngüsünü ne sıklıkta (saniye olarak) başlatır? Varsayılan: 60 |
htcondor.negotiator_inform_startd | Doğruysa, müzakereci bir işle eşleştiğinde başlatılanı bilgilendirmektedir. Varsayılan: true |
htcondor.remove_stopped_nodes | True ise, durdurulan yürütme düğümleri "kapalı" olarak işaretlenmek yerine CycleServer görünümünden kaldırılır. |
htcondor.running | Doğruysa, HTCondor toplayıcısı ve müzakereci daemon'ları merkezi yönetici üzerinde çalışır. Aksi takdirde yalnızca condor_master çalışır. Varsayılan: true |
htcondor.scheduler_dual | Doğruysa, zamanlayıcılar iki schedd çalıştırır. Varsayılan: true |
htcondor.single_slot | Doğruysa, makineyi tek bir yuva olarak ele alır (makinenin sahip olduğu çekirdek sayısından bağımsız olarak). Varsayılan: false |
htcondor.slot_type | Otomatik ölçeklendirme için düğüm dizisinin slot_type tanımlar. Varsayılan: yürütme |
htcondor.update_interval | Toplayıcıya güncelleştirme yayımlamak için başlatılanın aralığı (saniye cinsinden). Varsayılan: 240 |
htcondor.use_cache_config | Doğruysa, örneğin yapılandırma için CycleServer yoklamasını sağlamak için cache_config kullanın. Varsayılan: false |
htcondor.version | Yüklenecek HTCondor sürümü. Varsayılan: 8.2.6 |
HTCondor Otomatik Olarak Oluşturulan Yapılandırma Dosyası
HTCondor,kullanıcı tanımlı öznitelikler de dahil olmak üzere çok sayıda yapılandırma ayarına sahiptir. CycleCloud, kümede tanımlanan öznitelikleri kullanarak özel bir yapılandırma dosyası oluşturma olanağı sunar:
Öznitelik | Açıklama |
---|---|
htcondor.custom_config.enabled | True ise, belirtilen öznitelikler kullanılarak bir yapılandırma dosyası oluşturulur. Varsayılan: false |
htcondor.custom_config.file_name | Yazacak dosyanın adı (/config içine htcondor.data_dir yerleştirilir). Varsayılan: ZZZ-custom_config.txt |
htcondor.custom_config.settings | Gibi özel yapılandırma dosyasına yazılması gereken öznitelikler htcondor.custom_config.settings.max_jobs_running = 5000 |
Not
içeren HTCondor yapılandırma öznitelikleri. bu yöntem kullanılarak belirtilemez. Bu tür öznitelikler gerekiyorsa, bunlar bir yemek kitabında veya cluster-init ile yüklenen bir dosyada belirtilmelidir.
CycleCloud, zamanlayıcılar arasında standart bir otomatik durdurma öznitelikleri kümesini destekler:
Öznitelik | Açıklama |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | Bu düğümde otomatik durdurma etkinleştirildi mi? [true/false] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | Bir düğümün ölçeği azaltılmadan önce işleri tamamladıktan sonra boşta oturma süresi (saniye olarak). |
cyclecloud.cluster.autoscale.idle_time_before_jobs | Bir düğümün ölçeği azaltılmadan önce işleri tamamlamadan önce boşta durma süresi (saniye olarak). |