Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
CycleCloud GridEngine Kümesi Projesi README
Open Grid Scheduler (Kılavuz Altyapısı), küme tanımındaki "run_list" değiştirilerek Azure CycleCloud kümesinde kolayca etkinleştirilebilir. Bir Grid Engine kümesi iki birincil bileşenden oluşur. Birincisi, Kılavuz Altyapısı yazılımının çalıştığı paylaşılan bir dosya sistemi sağlayan 'ana' düğümdür. İkincisi, paylaşılan dosya sistemini bağlayıp gönderilen işleri çalıştıran konaklar olan 'execute' düğümleri kümesidir. Örneğin, basit bir Kılavuz Altyapısı küme şablonu parçacığı şöyle görünebilir:
[cluster grid-engine]
[[node master]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[sge_master_role]
[[nodearray execute]]
ImageName = cycle.image.centos7
MachineType = Standard_A1 # 1 core
[[[configuration]]]
run_list = role[sge_execute_role]
Uyarı
Rol adları eski nedenlerle 'sge' içeriyor: Grid Engine, Sun Microsystems'ın bir ürünüdür.
CycleCloud'da bir tanımı olan bir kümeyi içeri aktarma ve başlatma işlemi tek bir 'ana' düğüme neden olur. 'execute' düğümleri, cyclecloud add_node komutuyla kümeye eklenebilir. Örneğin, 10 'yürütme' düğümü daha eklemek için:
cyclecloud add_node grid-engine -t execute -c 10
Kılavuz Altyapısı Otomatik Ölçeklendirme
Azure CycleCloud, Kılavuz Altyapısı için otomatik ölçeklendirmeyi destekler. Bu davranış, yazılımın kuyruğunuzun durumunu sürekli izlediği ve iş yükünü hem zaman hem de maliyet açısından verimli bir şekilde tamamlamak için gerektiğinde düğümleri otomatik olarak açıp kapattığı anlamına gelir. Küme tanımınıza ekleyerek Autoscale = true Kılavuz Altyapısı için otomatik ölçeklendirmeyi etkinleştirebilirsiniz:
[cluster grid-engine]
Autoscale = True
Varsayılan olarak, Kılavuz Altyapısı kuyruğuna gönderilen tüm işler 'execute' türündeki makinelerde çalışır. 'execute' adlı düğüm dizisiyle tanımlanan makineler bunlar. 'execute' adıyla veya işleri çalıştırmak ve otomatik ölçeklendirmek için tek bir makine yapılandırması türüyle sınırlı değilsiniz.
Örneğin, yaygın bir senaryo iki farklı düğüm tanımına sahip bir kümeyi içerir. Biri, standart CPU'ları kullanan 'normal' işleri çalıştırmak için tasarlanmıştır. Diğeri ise GPU özellikli makineler gerektiren işlere yöneliktir. Bu durumda, iş kuyruğunun kullanacağı her makine için uygun miktarda makineye sahip olduğunuzdan emin olmak için kuyruğunuzu hem normal işlere hem de GPU işlerine göre bağımsız olarak ölçeklendirmek istersiniz. Örnek bir tanım şöyle olabilir:
[cluster grid-engine]
Autoscale = True
[[node master]]
ImageName = cycle.image.centos7
MachineType = Standard_A3 # 4 cores
[[[configuration]]]
run_list = role[sge_master_role]
[[nodearray execute]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[sge_execute_role]
[[nodearray gpu]]
MachineType = Standard_NV12 # 2 GPUs
ImageName = cycle.image.centos7
# Set the number of cores to the number of GPUs for autoscaling purposes
CoreCount = 2
[[[configuration]]]
run_list = role[sge_execute_role]
gridengine.slot_type = gpu
gridengine.slots = 2
Gösterilen örnekte artık iki düğüm dizisi vardır: Biri 'standart' 'yürütme' düğüm dizisi, ikincisi ise iki NVIDIA GPU'sunun (Azure'da Standard_NV12) bulunduğu bir MachineType sağlayan 'gpu' olarak adlandırılır. Ayrıca yapılandırma bölümünde 'csge:sgeexec' tarifinin yanında iki yeni öğe olduğunu da unutmayın.
gridengine.slot_type = gpu ekleme, Kılavuz Altyapısı zamanlayıcıya bu düğümlerin 'gpu' düğümleri olarak adlandırılması gerektiğini ve yalnızca 'gpu' işleri çalıştırması gerektiğini bildirir. 'gpu' adı rastgeledir, ancak düğümü açıklayan bir ad en kullanışlı olan addır. Ayarı gridengine.slots = 2, yazılıma bu düğüm türünün aynı anda yalnızca iki iş çalıştıradığından emin olmasını söyler (Standard_NV12 yalnızca 2 GPU vardır).
Varsayılan olarak Kılavuz Altyapısı, sistemin CPU sayısına göre düğüm başına yuva sayısını atar. Bu durumda, bu varsayılan davranış tek bir düğümde eşzamanlı olarak çalışan çok fazla iş olmasına neden olabilir. Gösterilen örnekte nodearray'de CoreCount=2 MachineType'da bulunan GPU sayısıyla eşleşecek şekilde ayarlanmıştır ve CycleCloud'un bu diziyi GPU ile CPU sayısı arasında doğru ölçeklendirmesine olanak sağlar.
Komutunu çalıştırarak makinelerinizin yuva sayısını ve slot_type doğrulayabilirsiniz:
-bash-4.1# qstat -F slot_type
queuename qtype resv/used/tot. load_avg arch states
---------------------------------------------------------------------------------
all.q@ip-0A000404 BIP 0/0/4 0.17 linux-x64
hf:slot_type=execute
---------------------------------------------------------------------------------
all.q@ip-0A000405 BIP 0/0/2 2.18 linux-x64
hf:slot_type=gpu
---------------------------------------------------------------------------------
all.q@ip-0A000406 BIP 0/0/4 0.25 linux-x64
Her bir 'slot_type' olarak belirtilenin 'execute' ve 'gpu' olduğuna dikkat edin. Yuva türleri tek tek yapılandırılır ve 'yürütme' yuvasının sayısı makinedeki CPU sayısı olan 4'tür. Küme yapılandırma şablonumuzda belirttiğimiz 'gpu' yuva türü için yuva sayısı 2'dir. Üçüncü makine, işleri çalıştırmayan ana düğümdür.
Kılavuz Altyapısı Gelişmiş Kullanımı
Bu yapılandırma ayarları, düğümlerin ve düğüm dizilerinin gelişmiş özelleştirmesini sağlar. Örneğin, işler her biri 10 GB gibi belirli bir miktarda belleğe ihtiyaç duyuyorsa, 60 GB belleğe sahip makineleri başlatan bir 'execute' nodearray tanımlayabilir ve ardından bu düğüm türünde yalnızca 6 işin eşzamanlı olarak çalıştırılabilmesini sağlamak için yapılandırma seçeneklerini gridengine.slots = 6 ekleyebilirsiniz (her işin çalışmak için en az 10 GB belleğe sahip olduğundan emin olun).
Kılavuz Altyapısında Gruplandırılmış Düğümler
Paralel bir iş kılavuz altyapısına gönderildiğinde, CycleCloud'un her MPI işini bir grup düğüm isteği olarak ele almak için kullandığı varsayılan otomatik ölçeklendirme davranışı devreye girer. Gruplandırılmış düğümler sıkı bir şekilde eşleştirilir ve MPI iş akışları için idealdir.
Gruplandırılmış düğüm kümesi bir Kılavuz Altyapısı kümesine katıldığında, her düğümün grup kimliği karmaşık değerinin affinity_groupdeğeri olarak kullanılır. İşler için bir affinity_group belirtilmesini gerektirerek, Grid Motoru zamanlayıcısı işlerin yalnızca aynı gruptaki makinelere atanmasını sağlar.
CycleCloud'un otomasyonu otomatik olarak gruplandırılmış düğümler isteğinde bulunur ve paralel işlerle karşılaşıldığında bunları kullanılabilir benşim gruplarına atar.
İşleri Grid Motoruna Gönderme
İşleri Kılavuz Altyapısı zamanlayıcısına göndermenin en genel yolu şu komuttır:
qsub my_job.sh
Bu komut, "execute" nodearray'i tarafından tanımlanmış "execute" türünde bir düğümde çalışan bir iş gönderir. bir işin farklı türde bir nodearray üzerinde çalıştırılmasını sağlamak için (örneğin, gösterilen 'gpu' düğüm türü) gönderimimizi değiştiririz:
qsub -l slot_type=gpu my_gpu_job.sh
Bu komut, işin yalnızca 'gpu' slot_type üzerinde çalışmasını sağlar.
slot_type atlandığında, 'execute' otomatik olarak göreve atanır. Kullanıcı, slot_type'leri işlere otomatik olarak atayan mekanizmayı değiştirebilir.
/opt/cycle/jetpack/config/autoscale.py konumunda bulunan ve tek bir "sge_job_handler" işlevi tanımlaması gereken bir python betiği oluşturulabilir. Bu işlev, bir komutun çıkışına qstat -j JOB_ID benzer şekilde işin sözlük gösterimini alır ve iş için güncelleştirilmesi gereken sabit kaynaklardan oluşan bir sözlük döndürmelidir.
Örneğin, iş adında 'gpu' harfleri yer alıyorsa, aşağıdaki betik işi 'gpu' slot_type'a atar. Kullanıcıların iş parametrelerini değiştirmeden işlerini otomatik olarak göndermelerine izin verilirken, işlerin doğru düğümlerde çalıştığından ve otomatik olarak ölçeklendiğinden emin olunur.
#!/usr/env python
#
# File: /opt/cycle/jetpack/config/autoscale.py
#
def sge_job_handler(job):
# The 'job' parameter is a dictionary containing the data present in a 'qstat -j JOB_ID':
hard_resources = {'slot_type': 'execute', 'affinity_group' : 'default' }
# Don't modify anything if the job already has a slot type
# You could modify the slot type at runtime by not checking this
if 'hard_resources' in job and 'slot_type' in job['hard_resources']:
return hard_resources
# If the job's script name contains the string 'gpu' then it's assumed to be a GPU job.
# Return a dictionary containing the new job_slot requirement to be updated.
# For example: 'big_data_gpu.sh' would be run on a 'gpu' node.
if job['job_name'].find('gpu') != -1:
hard_resources {'slot_type': 'gpu'}
else:
return hard_resources
Aktarılan 'job' parametresi, bir qstat -j JOB_ID çağrısındaki verileri içeren bir sözlüktür.
{
"job_number": 5,
"job_name": "test.sh",
"script_file": "test.sh",
"account": "sge",
"owner": "cluster.user",
"uid": 100,
"group": "cluster.user",
"gid": 200,
"submission_time": "2013-10-09T09:09:09",
"job_args": ['arg1', 'arg2', 'arg3'],
"hard_resources": {
'mem_free': '15G',
'slot_type': 'execute'
}
}
Bağımsız değişkenler, bellek gibi kaynak gereksinimleri veya gönderen kullanıcı gibi tanımlanan herhangi bir iş parametresine göre slot_type'leri otomatik olarak atamak için bu betik işlevini kullanabilirsiniz.
Her 'slot_type' için 5 iş gönderdiğinizi varsayalım:
qsub -t 1:5 gpu_job.sh
qsub -t 1:5 normal_job.sh
Şimdi kuyrukta 10 iş olacaktır. Tanımlanan betik nedeniyle, adında 'gpu' bulunan beş iş otomatik olarak yalnızca 'slot_type=gpu' düğümlerinde çalışacak şekilde yapılandırılır. CycleCloud otomatik ölçeklendirme mekanizması 5 'gpu' işi ve 5 'yürütme' işi olduğunu algılar. 'gpu' düğüm dizisi düğüm başına 2 yuvaya sahip olarak tanımlandığından, CycleCloud bu düğümlerden 3'ünü başlatır (5/2=2,5 yukarı yuvarlanarak 3 olur).
'Execute' nodearray için makine türü her biri 4 CPU'ya sahip olduğundan 5 normal iş vardır. Bu işleri işlemek için CycleCloud, bu düğümlerden 2'sini başlatır (5/4=1,25 yukarı yuvarlanır ve sonuç 2 olur). Kısa bir başlangıç döneminden sonra, yeni başlatılan düğümler kendilerini başlatır ve yapılandırır. Hazır olduklarında, 10 işin tamamı tamamlanır. Ardından 5 düğüm, bulut sağlayıcısıyla başka bir faturalama döngüsü başlamadan önce otomatik olarak kapatılır.
İşlerin süresi bir saat olduğu varsayılır. İş çalışma zamanı biliniyorsa, otomatik ölçeklendirme algoritması bu bilgilerden yararlanabilir. İşin beklenen çalışma süresini otomatik ölçeklendirmeye bildirmek için, bunu iş bağlamına ekleyin. Aşağıdaki örnek, otomatik ölçeklendirme için iş çalışma zamanını 10 dakikaya ayarlar:
qsub -ac average_runtime=10 job_with_duration_of_10m.sh
Izgara Motoru Yapılandırma Referansı
İşlevleri özelleştirmek için değiştirebileceğiniz Kılavuz Altyapısı'na özgü yapılandırma seçenekleri şunlardır:
| SGE-Specific Yapılandırma Seçenekleri | Açıklama |
|---|---|
| gridengine.slots | Belirli bir düğümün Grid Engine'e bildireceği yuva sayısı. Yuva sayısı, bir düğümün yürütebileceği eşzamanlı iş sayısıdır; bu değer varsayılan olarak belirli bir makinedeki CPU sayısıdır. CPU'ya göre değil bellek, GPU'lar vb. temelinde iş çalıştırmadığınız durumlarda bu değeri geçersiz kılabilirsiniz. |
| gridengine.slot_type | Bir düğümün sağladığı 'yuva' türünün adı. Varsayılan değer :'execute'. bir iş 'slot_type=' sabit kaynağıyla etiketlendiğinde, bu iş yalnızca aynı yuva türündeki bir makinede çalışır. Bu etiketleme, düğüm başına farklı yazılım ve donanım yapılandırmaları oluşturmanıza ve uygun bir işin her zaman doğru düğüm türünde zamanlandığından emin olmanıza olanak tanır. |
| gridengine.ignore_fqdn | Varsayılan: doğru. Kümenizdeki tüm düğümler tek bir DNS etki alanının parçası değilse false olarak ayarlayın. |
| gridengine.version | Varsayılan: '2011.11'. Bu yapılandırma seçeneği, yüklenecek ve çalıştırılacak Kılavuz Altyapısı sürümünü belirtir. Şu anda varsayılan ve tek kullanılabilir seçenektir. Grid Engine yazılımının diğer sürümleri gelecekte desteklenebilir. |
| gridengine.root | Varsayılan: '/sched/sge/sge-2011.11' Bu konum, Grid Motoru'nun sistemdeki her bir düğüme kurulduğu ve bağlandığı yerdir. Bu değeri değişmeden tutmak en iyisidir. Ancak, değiştirirseniz kümedeki her düğümde aynı değeri ayarladığınızdan emin olun. |
CycleCloud, zamanlayıcılar arasında standart bir otomatik durdurma öznitelikleri kümesini destekler:
| Öznitelik | Açıklama |
|---|---|
| cyclecloud.cluster.autoscale.durdur_etkin | Bu düğümde otomatik durdurmayı etkinleştirir. [doğru/yanlış] |
| cyclecloud.cluster.autoscale.iş_tamamlandıktan_sonra_bekleme_süresi | Bir düğümün işleri tamamladıktan sonra otomatik olarak durdurulmadan önce boşta kalma süresi (saniye cinsinden). |
| cyclecloud.cluster.otomatik_ölçekleme.işler_öncesi_boşta_kalma_süresi | Otomatik olarak durdurulmadan önce bir düğümün işler tamamlanıp tamamlanmadığına bakılmaksızın boşta kalacağı süre (saniye cinsinden). |
Bilinen Sorunlar
-
qshkomutu, interaktif oturum için çalışmıyor. Alternatif olarak kullanınqrsh. - Otomatik ölçeklendirme
exclusive=1kompleksi dikkate almıyor, bu da beklenenden daha az düğümün başlatılmasına neden olabilir.
Uyarı
Windows resmi olarak desteklenen bir GridEngine platformu olsa da CycleCloud şu anda Windows üzerinde GridEngine çalıştırmayı desteklemez.
Bu sayfa, CycleCloud ile (Altair) GridEngine kullanma olanakları ve yapılandırmasıyla ilgilidir.
Kaynakları Yapılandırma
Cyclecloud-gridengine uygulaması, zengin otomatik ölçeklendirme ve küme yapılandırma araçları sağlamak için sge kaynaklarını Azure bulut kaynaklarıyla eşleştirir. Uygulama CycleCloud kullanıcı arabirimi aracılığıyla oluşturulan kümeler için otomatik olarak dağıtılır veya mevcut bir kümedeki herhangi bir GridEngine yönetici konağına yüklenebilir.
CycleCloud-GridEngine kurulumu veya güncellenmesi
Cyclecloud-gridengine paketi GitHub'da yayın yapıtı olarak kullanılabilir. Yükleme ve yükseltme aynı işlemi izler. Uygulama virtualenv ile python3 gerektirir.
tar xzf cyclecloud-gridengine-pkg-*.tar.gz
cd cyclecloud-gridengine
./install.sh
Önemli Dosyalar
Uygulama her çalıştığında sge yapılandırmasını ayrıştırıyor - işler, kuyruklar, karmaşıklıklar. Bilgiler, komutun stderr ve stdout çıktılarında ve ayrıca yapılandırılabilir düzeyde bir günlük dosyasına kaydedilir. Bağımsız değişkenler içeren tüm GridEngine yönetim komutları da dosyaya kaydedilir.
| Açıklama | Yer |
|---|---|
| Otomatik Ölçeklendirme Yapılandırması | /opt/cycle/gridengine/autoscale.json |
| Otomatik Ölçeklendirme Güncesi | /opt/cycle/jetpack/logs/autoscale.log |
| qconf iz günlüğü | /opt/cycle/jetpack/logs/qcmd.log |
SGE kuyrukları, sunucu grupları ve paralel ortamlar
cyclecloud-gridengine otomatik ölçeklendirme yardımcı programı, azgeküme yapılandırmasına göre kümeye konaklar ekler. Otomatik ölçeklendirme işlemleri aşağıdaki eylemleri gerçekleştirir.
- İş kaynağı isteğini okuyun ve başlamak için uygun bir VM bulun
- VM'yi başlatın ve hazır olmasını bekleyin
- Kuyruğu ve paralel ortamı işten oku
- Kuyruğa/pe'ye bağlı olarak ana bilgisayarı uygun bir ana bilgisayar grubuna atayın
- Konağı kümeye ve konak grubunu içeren başka bir kuyruğa ekleyin
short.q adlı bir kuyruk için aşağıdaki kuyruk tanımını göz önünde bulundurun
hostlist @allhosts @mpihg01 @mpihg02 @lowprio
...
seq_no 10000,[@lowprio=10],[@mpihg01=100],[@mpihg02=200]
pe_list NONE,[@mpihg01=mpi01], \
[@mpihg02=mpi02]
qsub -q short.q -pe mpi02 12 my-script.sh bir iş gönderildiğinde en az bir VM başlatılır. Küme eklendiğinde, hem kuyruğa hem de paralel ortama uygun olan konak grubu @mpihg02'ye katılır.
@allhosts, özel bir konak grubuna da katılır.
qsub -q short.q my-script.sh ile bir iş gönderir ve bir paralel ortam pe belirtmezseniz, elde edilen VM @allhosts ve @lowpriority konak gruplarına katılır, bu gruplar pes atanmamış bir kuyruğa bağlıdır.
Son olarak, qsub -q short.q -pe mpi0* 12 my-script.sh ile gönderilmiş bir iş, CycleCloud ayırma tahminlerine bağlı olarak @mpihg01 veya @mpihg02'ye bir VM eklenmesi sonucunu doğurur.
Paralel ortamlar, CycleCloud yerleştirme grubuna örtük olarak eşittir. PE'deki VM'ler aynı ağ içinde olacak şekilde kısıtlanır. Yerleştirme grubunu tutmayan bir PE kullanmak istiyorsanız autoscale.json kullanarak çıkış yapın.
Burada make pe için yerleştirme gruplarından vazgeçiyoruz.
"gridengine": {
"pes": {
"make": {
"requires_placement_groups": false
}
},
CycleCloud Yerleştirme Grupları
CycleCloud yerleştirme grupları, SinglePlacementGroup ile Azure VMSS ile birebir eşleşir - Bir yerleştirme grubundaki VM'ler bir Infiniband ağını paylaşır ve yalnızca kendi yerleştirme grubundaki VM'lerle paylaşır. Bu siloların sezgisel olarak korunmasını sağlamak için, yerleştirme grupları GridEngine paralel ortamıyla 1:1 oranında eşleştirilir.
Bir iş için paralel bir ortam belirtmek, işin akıllı bir konak grubu atama mantığı kullanarak bir yerleştirme grubunda çalıştırılmasını kısıtlar. bu davranışı autoscale.jsoniçindeki ilgili yapılandırma aracılığıyla devre dışı bırakabilirsiniz: "required_placement_groups" : false.
Otomatik ölçeklendirme yapılandırması
Bu eklenti, iş yükünün taleplerini karşılamak için ızgarayı otomatik olarak ölçeklendirir. autoscale.json yapılandırma dosyası, Kılavuz Altyapısı otomatik ölçeklendiricisinin davranışını belirler.
- Cyclecloud bağlantı ayrıntılarını ayarlama
- Boşta düğümler için sonlandırma zamanlayıcısını ayarlama
- Çok boyutlu otomatik ölçeklendirme desteklenir. İş paketlemesinde hangi özniteliklerin kullanılacağını yapılandırabilirsiniz, örneğin yuvalar veya bellek
- Yönetilecek kuyrukları, paralel ortamları ve konak gruplarını kaydetme
| Konfigürasyon | Türü | Açıklama |
|---|---|---|
| URL | Dize | Creative Commons URL'si |
| kullanıcı adı/parola | Dize | CC Bağlantı Ayrıntıları |
| küme_adı | Dize | CC Küme Adı |
| varsayılan_kaynaklar | Harita | Otomatik ölçeklendirme için düğüm kaynağını Kılavuz Altyapısı konak kaynağına bağlama |
| boşta kalma süresi | Int | Boşta düğümleri sonlandırmadan önce bekleme süresi (saniye cinsinden) |
| başlatma_zaman_aşımı | Int | Uzun yapılandırma aşamaları (lar) sırasında düğümleri sonlandırmadan önce bekleme süresi |
| gridengine.relevant_complexes | Liste (Dize) | Otomatik ölçeklendirmede göz önünde bulundurulacak grid motoru bileşenleri, örneğin yuvalar, mem_free |
| gridengine.logging | Dosya | Günlük yapılandırma dosyasının konumu |
| gridengine.pes | Yapı | PE'lerin davranışını belirtin, örneğin requires_placement_group = false |
Otomatik ölçeklendirme programı yalnızca İlgili Kaynağı dikkate alır
Başka bir otomatik ölçeklendirme kaynağı
Varsayılan olarak, işler birçok slot talep eder ve küme bu talepler doğrultusunda ölçeklendirilir.
m_mem_free için iş kaynağı isteğine göre otomatik ölçeklendirme yapmak istediğimizi düşünelim.
-
m_mem_freeöğesinigridengine.relevant_resources'e autoscale.json içine ekle -
m_mem_free'ı autoscale.json düğüm düzeyinde bellek kaynağına bağlayın.
Bu öznitelikler, _default/node.* içinde değer olarak ile referans alınabilir.
| Düğüm | Türü | Açıklama |
|---|---|---|
| nodearray | Dize | Cyclecloud nodearray adı |
| yerleşim_grubu | Dize | Nodearray içindeki cyclecloud yerleştirme grubunun adı |
| vm_size | Dize | VM ürün adı, örneğin, "Standard_F2s_v2" |
| vcpu_count | Int | Tek tek ürün sayfalarında gösterildiği gibi düğümde kullanılabilen sanal CPU'lar |
| pcpu_count | Int | Düğümde kullanılabilen fiziksel CPU'lar |
| hafıza | Dize | VM'de birim göstergesiyle yaklaşık fiziksel bellek miktarı, örneğin "8,0g" |
Diğer öznitelikler ad alanındadır node.resources.* , örneğin, 'node.resources.
| Düğüm | Türü | Açıklama |
|---|---|---|
| ncpus | Dize | VM'de kullanılabilir CPU sayısı |
| pcpus | Dize | VM'de kullanılabilen fiziksel CPU sayısı |
| ngpus | Tam sayı | VM'de kullanılabilen GPU sayısı |
| üye | Dize | VM'deki birim göstergesiyle yaklaşık fiziksel bellek miktarı, örneğin "8,0b" |
| memkb | Dize | VM'de birim göstergesiyle mevcut yaklaşık fiziksel bellek, örneğin "8,0k" |
| memmb | Dize | VM'de yaklaşık olarak birim göstergesiyle mevcut fiziksel bellek, örneğin, "8,0m" |
| memgb | Dize | VM'de birim göstergesiyle yaklaşık fiziksel bellek miktarı, örneğin "8,0g" |
| memtb | Dize | Vm'de birim göstergesiyle yaklaşık fiziksel bellek kullanılabilir; örneğin, "8,0t" |
| Slotlar | Tam sayı | Ncpus ile aynı |
| slot_türü | Dize | Uzantılar için ek etiket. Kullanılmadı. |
| m_mem_free | Dize | Yürütme ana bilgisayarında boş bellek bekleniyor, örneğin, "3.0g" |
| mfree | Dize | _m/_mem/ücretsiz ile aynı |
Kaynak Eşleme
ayrıca default_resources için kullanılabilen matematik işlemleri de vardır. Belirli bir düğüm dizisinde yuvaları ikiye düşürün ve docker kaynağını tüm düğümlere ekleyin:
"default_resources": [
{
"select": {"node.nodearray": "beegfs"},
"name": "slots",
"value": "node.vcpu_count",
"subtract": 2
},
{
"select": {},
"name": "docker",
"value": true
},
Düğüm vCPU'larını slot kompleksine ve memmb'dan mem_free'e eşleme, yaygın olarak kullanılan varsayılan değerlerdir.
İlk ilişkilendirme gereklidir.
"default_resources": [
{
"select": {},
"name": "slots",
"value": "node.vcpu_count"
},
{
"select": {},
"name": "mem_free",
"value": "node.resources.memmb"
}
],
Bir karmaşık değerin tamamına eşit olmayan bir kısayola sahipse, her ikisini de default_resources içinde tanımlayın; burada physical_cpu karmaşık ad:
"default_resources": [
{
"select": {},
"name": "physical_cpu",
"value": "node.pcpu_count"
},
{
"select": {},
"name": "pcpu",
"value": "node.resources.physical_cpu"
}
]
Belirli bir öznitelik için belirli bir davranış istediğinizde sıralama önemlidir. Diğer tüm nodearray'ler için varsayılan yuva sayısını korurken belirli bir nodearray için tek bir yuva ayırmak için:
"default_resources": [
{
"select": {"node.nodearray": "FPGA"},
"name": "slots",
"value": "1",
},
{
"select": {},
"name": "slots",
"value": "node.vcpu_count"
},
]
Konak grupları
CycleCloud otomatik ölçeklendiricisi, iş gereksinimlerini karşılamaya çalışırken düğümleri uygun konak grubuna eşler. Kuyruklar, paralel ortamlar ve karmaşıklıklar dikkate alınır. Mantığın büyük kısmı uygun cyclecloud demetini (ve düğüm miktarını) uygun sge konak grubuyla eşleştirmektir.
Şu şekilde gönderilen bir iş için: qsub -q "cloud.q" -l "m_mem_free=4g" -pe "mpi*" 48 ./myjob.sh
CycleCloud aşağıdaki konak gruplarının kesişimini bulur:
-
cloud.q için pe_list içerir ve pe adıyla eşleşir, örneğin,
pe_list [@allhosts=mpislots],[@hpc1=mpi]. - Tüm iş kaynaklarını sağlamak için yeterli kaynaklara ve abonelik kotasına sahip olun.
- Konak grubu kısıtlamaları yapılandırması bunları filtrelemez.
Birden çok konak grubu bu gereksinimleri karşılayabilir. Bu durumda, hangisinin kullanılacağına sistem karar vermelidir. Konak grubu üyeliği çakışmalarını çözmenin üç yolu vardır:
- Belirsizlikleri önlemek için kuyrukları yapılandırın.
- autoscale.jsonkısıtlamaları ekleyin.
- CycleCloud'un eşleşen konak gruplarını ad sıralı bir şekilde seçmesine imkan tanımak için zamanlayıcı yapılandırmasında
weight_queue_host_sort < weight_queue_seqnoayarlayın. - Bir konak grubu tercihini belirtmek için kuyruk yapılandırmasında ayarlayın
seq_no 10000,[@hostgroup1=100],[@hostgroup2=200].
Konak grubu kısıtlamaları
Bir kuyruk veya xproject birden çok konak grubunu tanımladığında, bu grupların herhangi biri potansiyel olarak yeni konaklar alabilir. Hangi konakların hangi kuyruklar için uygun olduğunu denetlemek için düğüm özelliklerine göre konak grubu kısıtlamaları uygulayabilirsiniz.
"gridengine": {
"hostgroups": {
"@mpi": {
"constraints": {
"node.vm_size": "Standard_H44rs"
}
},
"@amd-mem": {
"constraints" : {
"node.vm_size": "Standard_D2_v3",
"node.nodearray": "hpc"
}
},
}
}
İpucu: Tüm kullanılabilir düğüm özelliklerini
azge bucketsinceleyin.
azge
Bu paket , azge adlı bir komut satırıyla birlikte gelir. Bu program otomatik ölçeklendirme gerçekleştirmek için kullanılır ve otomatik ölçeklendirme altındaki tüm alt işlemleri ayrı bileşenlere böler. Bu komutlar, GridEngine ortam değişkenlerinin ayarlanmasını gerektirir. Aynı profilden qconf çağırabildiğiniz şekilde, qsub ve azge de çağırabilmelisiniz.
| azge komutları | Açıklama |
|---|---|
| Doğrulamak | Otomatik ölçeklendiricide veya GridEngine'de bilinen yapılandırma hatalarını denetler |
| Işleri | Kuyruktaki tüm işleri gösterir |
| Kovalar | Otomatik ölçeklendirme için kullanılabilir kaynak havuzlarını gösterir |
| düğümler | Küme konaklarını ve özelliklerini gösterir |
| talep | Cyclecloud kapanlarıyla iş gereksinimlerini eşleştirir ve otomatik ölçeklendirme neticesi sağlar. |
| otomatik ölçeklendirme | Düğümleri yapılandırmalara göre başlatıp kaldırarak tam otomatik ölçeklendirme gerçekleştirir |
Zamanlayıcı yapılandırmalarını (qconf) veya otomatik ölçeklendirme yapılandırmalarını (autoscale.json) değiştirirken veya hatta ilk kez ayarlarken, otomatik ölçeklendirme davranışının beklentileri karşılayıp eşleştirmeyebileceğini denetlemek için azge kullanılabilir. Kök kullanıcı olarak, aşağıdaki işlemleri çalıştırabilirsiniz. Otomatik ölçeklendirmenin nasıl çalıştığını anlamak için bu kavramlara alışmak önemlidir.
- Bilinen sorunların yapılandırmalarını doğrulamak için komutunu çalıştırın
azge validate. - CycleCloud kümesi tarafından sunulan kaynakları denetlemek için komutunu çalıştırın
azge buckets. - Kuyruğa alınan iş ayrıntılarını incelemek için komutunu çalıştırın
azge jobs. - Komutunu çalıştırarak
azge demanddemet eşleştirme işini gerçekleştirin. Ardından hangi işlerin hangi kovalar ve host grupları ile eşleştiklerini inceleyin. - Düğüm ayırma işlemini başlatmak veya birleştirmeye hazır düğümler eklemek için komutunu çalıştırın
azge autoscale.
Komutlar beklendiği gibi çalıştıktan sonra, komutu kök crontab'a ekleyerek azge autoscale devam eden otomatik ölçeklendirmeyi etkinleştirin. GridEngine ortam değişkenlerini önceden kaynak olarak sağladığından emin olun.
* * * * * . $SGE_ROOT/common/settings.sh && /usr/local/bin/azge autoscale -c /opt/cycle/gridengine/autoscale.json
Karma küme oluşturma
CycleCloud, bulutta ani artış senaryolarını destekler. Temel yapılandırma, $SGE_ROOT dizininin bulut düğümleri tarafından erişilebilir olduğunu varsayar. Bu varsayım, gridengine.shared.spool = false, gridengine.shared.bin = false ayarlanarak ve GridEngine yerel olarak yüklenerek gevşetilebilir.
Basit bir durum için , 'execute' düğümlerinin bağlanabileceği bir dosya sistemi sağlamanız gerekir. Bu dosya sistemi, ... içermelidir. dizinini seçin ve bağlamayı isteğe bağlı ayarlarda yapılandırabilirsiniz. Sched ve paylaşılan dizinlerin bağımlılıkları serbest bırakıldığında, kümenin parçası olan zamanlayıcı düğümünü varsayılan olarak kapatabilir ve dış dosya sisteminden yapılandırmaları kullanabilirsiniz.
- Yeni bir gridengine kümesi oluşturun.
- Dönüş proxy'sini devre dışı bırakın.
- /sched ve /shared değerlerini dış dosya sistemleriyle değiştirin.
- Kümeyi kaydedin.
- Zamanlayıcı düğümünü kullanıcı arabiriminde eylem olarak kaldırın.
- Kümeyi başlatın, ancak başlangıçta hiçbir düğüm başlamaz.
- Yeni kümeyi kullanmak için
cyclecloud-gridengineile yapılandırma
CycleCloud'da Univa Grid Altyapısını Kullanma
GridEngine için CycleCloud projesi varsayılan olarak sge-2011.11 kullanır. Altair lisans sözleşmenize göre kendi Altair GridEngine yükleyicilerinizi kullanabilirsiniz. Bu bölümde CycleCloud GridEngine projesiyle Altair GridEngine'in nasıl kullanılacağı belgelenmektedir.
Önkoşullar
Bu örnek 8.6.1-demo sürümünü kullanır, ancak 8.4.0'dan büyük tüm GE sürümleri desteklenir.
- Kullanıcıların UGE ikili dosyaları sağlaması gerekir
- ge-8.6.x-bin-lx-amd64.tar.gz
- ge-8.6.x-common.tar.gz
- CycleCloud CLI yapılandırılmalıdır. Belgelere buradan ulaşabilirsiniz
İkili dosyaları bulut dolabına kopyalayın
AGE'nin tamamlayıcı bir sürümü (8.6.7-demo) CycleCloud ile dağıtılır. Başka bir sürüm kullanmak için ikili dosyaları CycleCloud'un kullandığı depolama hesabına yükleyin.
$ azcopy cp ge-8.6.12-bin-lx-amd64.tar.gz https://<storage-account-name>.blob.core.windows.net/cyclecloud/gridengine/blobs/
$ azcopy cp ge-8.6.12-common.tar.gz https://<storage-account-name>.blob.core.windows.net/cyclecloud/gridengine/blobs/
Küme şablonunda yapılandırmaları değiştirme
GridEngine şablonunun yerel bir kopyasını alın ve bunu varsayılan yerine UGE yükleyicilerini kullanacak şekilde değiştirin.
wget https://raw.githubusercontent.com/Azure/cyclecloud-gridengine/master/templates/gridengine.txt
gridengine.txt dosyasında ilk geçtiği yeri [[[configuration]]] bulun ve aşağıdaki kod parçacığıyla eşleşecek şekilde metin ekleyin. Dosya girintiye duyarlı değil.
Uyarı
Yapılandırmadaki ayrıntılar, özellikle sürüm, yükleyici dosya adıyla eşleşmelidir.
[[[configuration gridengine]]]
make = ge
version = 8.6.12-demo
root = /sched/ge/ge-8.6.12-demo
cell = "default"
sge_qmaster_port = "537"
sge_execd_port = "538"
sge_cluster_name = "grid1"
gid_range = "20000-20100"
qmaster_spool_dir = "/sched/ge/ge-8.6.12-demo/default/spool/qmaster"
execd_spool_dir = "/sched/ge/ge-8.6.12-demo/default/spool"
spooling_method = "berkeleydb"
shadow_host = ""
admin_mail = ""
idle_timeout = 300
managed_fs = true
shared.bin = true
ignore_fqdn = true
group.name = "sgeadmin"
group.gid = 536
user.name = "sgeadmin"
user.uid = 536
user.gid = 536
user.description = "SGE admin user"
user.home = "/shared/home/sgeadmin"
user.shell = "/bin/bash"
Bu GridEngine yapılandırmaları, küme başlatıldığında varsayılan GridEngine sürümünü ve yükleme konumunu geçersiz kılar. Paylaşılan bir NFS konumu olduğu için kümedeki /sched üzerinden taşınmak güvenli değildir.