Çekirdek sürümü 4.19.91-24.al7 ve üzeri olan Alibaba Cloud Linux 2 ile çekirdek sürümü 5.10.46-7.al8 ve üzeri olan Alibaba Cloud Linux 3, grup kimliği özelliğini destekler. Grup kimliği özelliğini kullanarak CPU kontrol grupları (cgroup) için farklı kimlikler yapılandırabilir ve bu gruplardaki işlemlerin (görevlerin) önceliklerini tanımlayabilirsiniz.
Arka plan bilgileri
Gecikmeye duyarlı görevleri ve hesaplama görevlerini aynı örnek üzerinde dağıttığınızda, Linux çekirdek zamanlayıcısı yüksek öncelikli görevlere daha fazla zamanlama fırsatı sunarak zamanlama gecikmesini en aza indirmeli ve düşük öncelikli görevlerin çekirdek zamanlaması üzerindeki etkilerini azaltmalıdır. Bu senaryoda Alibaba Cloud Linux, grup kimliği özelliğini sağlayarak CPU cgroup'ları için zamanlama önceliklerini yapılandırmanıza olanak tanıyan arayüzler ekler. Farklı önceliklere sahip görevler aşağıdaki özellikleri gösterir:
Yüksek öncelikli görevler minimum uyanma gecikmesine sahiptir.
-
Düşük öncelikli görevler, yüksek öncelikli görevlerin performansını etkilemez.
Düşük öncelikli görevlerin uyanması, yüksek öncelikli görevlerin performansını etkilemez.
Düşük öncelikli görevler donanım birimlerini paylaşmaz ve yüksek öncelikli görevlerin performansı üzerinde olumsuz etki yaratmaz.
Ön koşullar
Çekirdek sürümü
4.19.91-26,4.19.91-26.1,4.19.91-26.2veya4.19.91-26.3olan Alibaba Cloud Linux 2'de grup kimliği özelliği çekirdek düzeyinde devre dışıdır. Alibaba Cloud Linux 2'nin çekirdek sürümünü sorgulamak içinuname -rkomutunu çalıştırabilirsiniz.Çekirdek sürümü
5.10.112-11.al8,5.10.112-11.1.al8,5.10.112-11.2.al8,5.10.134-12.al8,5.10.134-12.1.al8veya5.10.134-12.2.al8olan Alibaba Cloud Linux 3'te grup kimliği özelliği çekirdek düzeyinde devre dışıdır.
Çekirdek sürümü
4.19.91-25.1.al7ile4.19.91-25.5.al7aralığında olan Alibaba Cloud Linux 2'de grup kimliği özelliğini kullanmanız durumunda kesinti yaşanır. Bu durumda çekirdek sürümünü4.19.91-25.6.al7veya üzerine yükseltin. Daha fazla bilgi için "Change the kernel version" konusundaki Çekirdeği yükseltme bölümüne bakın.-
x86_64 mimarisine sahip ve çekirdek sürümü
5.10.134-12.2.al8olan Alibaba Cloud Linux 3'te grup kimliği özelliğini etkinleştirmek için aşağıdaki komutları çalıştırın:yum makecache sudo yum install scheduler-group-identity.x86_64 -y Alibaba Cloud Linux 2'de çekirdek sürümü
4.19.91-26.4ve üzeri ile Alibaba Cloud Linux 3'te çekirdek sürümü5.10.134-13.al8ve üzeri için, grup kimliği özelliğini etkinleştirmenize olanak tanımak amacıyla/proc/sys/kernel/sched_group_identity_enabledarayüzü eklenmiştir. Grup kimliği özelliğini kullanmadan öncesudo sh -c 'echo 1 > /proc/sys/kernel/sched_group_identity_enabled'komutunu çalıştırarak özelliği etkinleştirmeniz gerekir.
Grup kimliği özelliğinin çalışma mekanizması
Grup kimliği özelliği, CPU cgroup'ları için kimlikler yapılandırmanıza ve bu gruplardaki görevlerin önceliklerini tanımlamanıza olanak tanır. Bu özellik çift kırmızı-siyah ağaç mimarisine dayanır. Completely Fair Scheduler (CFS) zamanlama kuyruğunun kırmızı-siyah ağacına dayalı olarak, düşük öncelikli görevleri depolamak üzere ikinci bir düşük öncelikli kırmızı-siyah ağaç eklenir.
Çekirdek, kimlik yapılandırılmış görevleri zamanlarken bu görevleri önceliklerine göre işler. Aşağıdaki tabloda kimlikler öncelik sırasına göre (yüksekten düşüğe) açıklanmıştır.
Kimlik | Açıklama |
| Yüksek öncelikli bir görevi tanımlar. Yüksek öncelikli bir görev, normal veya düşük öncelikli bir göreve kıyasla kaynakları ele geçirme konusunda daha fazla fırsata sahiptir. CFS yüksek öncelikli görevleri zamanlarken aşağıdaki senaryolar gerçekleşebilir:
|
| Normal öncelikli bir görevi tanımlar. Normal öncelikli bir görev, düşük öncelikli bir göreve kıyasla kaynakları ele geçirme konusunda daha fazla fırsata sahiptir. CFS normal öncelikli görevleri zamanlarken aşağıdaki senaryolar gerçekleşebilir:
|
| Düşük öncelikli bir görevi tanımlar. CFS düşük öncelikli görevleri zamanlarken aşağıdaki senaryolar gerçekleşebilir: Eş zamanlı çoklu iş parçacığı (SMT) CPU'sunda bir |
Yukarıdaki kimlikler, CPU cgroup'larının kaynak yönetimi ilkelerine göre uygulanır.
Aynı seviyedeki CPU cgroup'larında bulunan görevler için kimlik öncelikleri geçerlidir.
Farklı seviyelerdeki CPU cgroup'larında bulunan görevler için kimlik öncelikleri üst cgroup'lardaki görevlerde geçerli olmaz ancak alt cgroup'lardaki görevlerde geçerli olur.
Aynı kimlik önceliğine sahip görevler arasında kaynaklar CFS ilkelerine uygun şekilde yarışılır.
ID_UNDERCLASSveyaID_NORMALkimliğiyle tanımlanan görevlerin çalışma süresinin minimum değere ulaşmayabileceğini unutmayın.
Diğer kimlikler
|
|
|
|
|
|
|
|
|
|
|
|
Arayüzler
-
Kimlikleri yapılandırmak için kullanılan arayüzler
Grup kimliği özelliği, görev kimliklerini yapılandırmanıza olanak tanımak için aşağıdaki arayüzleri sağlar:
/sys/fs/cgroup/cpu/$cg/cpu.identityve/sys/fs/cgroup/cpu/$cg/cpu.bvt_warp_ns. $cg değişkeni, bir görevin çalıştığı alt cgroup dizin düğümünü belirtir. Arayüzleri kullanmadan önce aşağıdaki hususları dikkate alın:cpu.bvt_warp_nsarayüzü hızlı bir yapılandırma arayüzüdür. Arayüze yazılan değer kimlik değerlerine dönüştürülür.cpu.identityvecpu.bvt_warp_nsarayüzlerini kullanarak cgroup'ların kimliklerini değiştirebilirsiniz.cpu.identityarayüzü kullanılarak yazılan kimlik değeri,cpu.bvt_warp_nsarayüzü kullanılarak daha önce yazılan kimlik değerinin üzerine yazar ancakcpu.bvt_warp_nsarayüzünün değeri değişmez.cpu.bvt_warp_nsarayüzü kullanılarak yazılan kimlik değeri,cpu.identityarayüzü kullanılarak daha önce yazılan kimlik değerinin üzerine yazar ancakcpu.identityarayüzünün değeri değişmez.Görev kimliklerini yapılandırmak için arayüzlerden birini kullanabilirsiniz. Arayüzleri aynı anda kullanmamanız önerilir.
İşletim sistemi çekirdeğiyle ilgili işlemlere aşina değilseniz
cpu.identityarayüzünü kullanmamanız önerilir.
Aşağıdaki tabloda arayüzler açıklanmıştır.
Arayüz
Açıklama
cpu.identityVarsayılan değer 0'dır ve bu değer
ID_NORMALkimliğini belirtir.Arayüz 5 bitlik bir alandır. Her bit için geçerli değerler: 0 ve 1. 0 değeri kimliğin üstlenilmediğini, 1 değeri ise kimliğin üstlenildiğini belirtir. Her bitin açıklaması:
Arayüz boş bırakılırsa
ID_NORMALkimliği kullanılır.Bit 0:
ID_UNDERCLASSkimliğini belirtir.Bit 1:
ID_HIGHCLASSkimliğini belirtir.Bit 2:
ID_SMT_EXPELLERkimliğini belirtir.Bit 3:
ID_IDLE_SAVERkimliğini belirtir.Bit 4:
ID_IDLE_SEEKERkimliğini belirtir.
Örneğin, bir cgroup'un kimliğini
ID_HIGHCLASSveID_IDLE_SEEKERolarak ayarlamak istiyorsanız bit 1 ve bit 4'ü 1, diğer bitleri 0 olarak ayarlayarak 10010 ikilik değerini elde edin; bu değer ondalık olarak 18'e karşılık gelir. Ardından cpu.identity arayüzüne 18 yazmak içinecho 18 > /sys/fs/cgroup/cpu/$cg/cpu.identitykomutunu çalıştırın.cpu.bvt_warp_nsVarsayılan değer 0'dır ve bu değer
ID_NORMALkimliğini belirtir. Geçerli değerler:2:
ID_SMT_EXPELLER,ID_IDLE_SEEKERveID_HIGHCLASSkimliklerini belirtir. cpu.identity arayüzündeki karşılık gelen değer 22'dir.1:
ID_HIGHCLASSveID_IDLE_SEEKERkimliklerini belirtir. cpu.identity arayüzündeki karşılık gelen değer 18'dir.0:
ID_NORMALkimliğini belirtir. cpu.identity arayüzündeki karşılık gelen değer 0'dır.-1:
ID_UNDERCLASSveID_IDLE_SAVERkimliklerini belirtir. cpu.identity arayüzündeki karşılık gelen değer 9'dur.-2:
ID_UNDERCLASSveID_IDLE_SAVERkimliklerini belirtir. cpu.identity arayüzündeki karşılık gelen değer 9'dur.
NotAlibaba Cloud varsayılan olarak cgroup v1 arayüzlerini destekler. 5.10 çekirdek serisindeki çekirdek sürümü
5.10.134-13ve üzeri olan Alibaba Cloud Linux 3, grup kimliği özelliği için aşağıdaki cgroup v2 arayüzlerini de destekler:/sys/fs/cgroup/$cg/cpu.identityve/sys/fs/cgroup/$cg/cpu.bvt_warp_ns. $cg değişkeni, bir görevin çalıştığı alt cgroup dizin düğümünü belirtir. -
Çekirdek zamanlama özelliklerini etkinleştirmek veya devre dışı bırakmak için kullanılan arayüzler
sched_featuresarayüzünü kullanarak çekirdek zamanlama özelliklerinin varsayılan ayarlarını görüntülemek için aşağıdaki komutu çalıştırabilirsiniz:sudo cat /sys/kernel/debug/sched_featuresAşağıdaki tabloda çekirdek zamanlama özellikleri açıklanmıştır.
Çekirdek zamanlama özelliği
Açıklama
Varsayılan değer
ID_IDLE_AVGBu özellik,
ID_IDLE_SAVERkimliği ile birlikte kullanılarakID_UNDERCLASSgörevlerinin çalışma süresini boşta kalma süresine dahil eder. Bu sayede yalnızcaID_UNDERCLASSgörevleri çalışırken CPU'ların boşta kalması önlenir ve kaynak israfının oluşması engellenir.ID_IDLE_AVG: özelliğin etkin olduğunu gösterir.ID_RESCUE_EXPELLEEBu özellik yük dengeleme senaryolarında kullanılır. Görevler kullanılabilir CPU kaynakları bulamadığında,
ID_UNDERCLASSgörevlerini çıkaran CPU'lar yükleri dengelemek için kullanılır. Bu özellik,ID_UNDERCLASSgörevlerinin çıkarılmış durumundan mümkün olan en kısa sürede çıkmasına yardımcı olur.ID_RESCUE_EXPELLEE: özelliğin etkin olduğunu gösterir.ID_EXPELLEE_NEVER_HOTBu özellik etkinleştirildikten sonra, çıkarılmakta olan bir görevin başka bir CPU'ya taşınması isteği başlatıldığında sıcak önbellek taşıma isteğinin reddedilmesine neden olmaz. Bu özellik,
ID_UNDERCLASSgörevlerinin çıkarılmış durumundan mümkün olan en kısa sürede çıkmasına yardımcı olur.NO_ID_EXPELLEE_NEVER_HOT: özelliğin devre dışı olduğunu gösterir.ID_LOOSE_EXPELBu özellik etkinleştirildikten sonra CPU'lar görev seçerken çıkarma durumunu her seferinde güncellemez; bunun yerine durumu
sched_expel_update_intervalçekirdek parametresiyle belirtilen zamana göre otomatik olarak günceller. Bu özelliğin yapılandırması yalnızca CPU'ların görev seçmesi sırasındaki durum güncellemelerini etkiler. İşlemci arası kesmeler (IPI) için yapılan güncellemeler etkilenmez.NO_ID_LOOSE_EXPEL: özelliğin devre dışı olduğunu gösterir.ID_LAST_HIGHCLASS_STAYBu özellik etkinleştirildikten sonra, bir CPU üzerinde çalışan son
ID_HIGHCLASSgörevi başka bir CPU'ya taşınamaz.ID_LAST_HIGHCLASS_STAY: özelliğin etkin olduğunu gösterir.ID_EXPELLER_SHARE_COREBu özellik etkinse,
ID_SMT_EXPELLERgörevleri zatenID_SMT_EXPELLERgörevlerinin çalıştığı fiziksel çekirdeklerde öncelikli olarak çalışabilir.Bu özellik devre dışıysa,
ID_SMT_EXPELLERgörevleri fiziksel çekirdekler arasında dağıtılır. Bu sayedeID_SMT_EXPELLERgörevleri birbirleriyle çakışmaz.
ID_EXPELLER_SHARE_CORE: özelliğin etkin olduğunu gösterir.ID_ABSOLUTE_EXPELAlibaba Cloud Linux 3'te bu özellik çekirdek sürümü
5.10.134-16.3ile tanıtılmıştır ve 5.10 çekirdek serisindeki5.10.134-16.3ve üzeri çekirdek sürümlerinde kullanılabilir. Bu özellik etkinleştirildikten sonra, çalışmak üzere görev kuyruklarındaID_NORMALveyaID_HIGHCLASSgörevleri varsaID_UNDERCLASSgörevleri kesinlikle baskılanır ve zamanlanamaz. En kötü durum senaryolarındaID_UNDERCLASSgörevleri açlık yaşayabilir. Hibrit dağıtım senaryolarında özelliği etkinleştirmeden önce farklı kimliklere sahip görevlerin yüklerini değerlendirin.NO_ID_ABSOLUTE_EXPEL: özelliğin devre dışı olduğunu gösterir.ID_LOAD_BALANCEAlibaba Cloud Linux 3'te bu özellik çekirdek sürümü
5.10.134-16.3ile tanıtılmıştır ve 5.10 çekirdek serisindeki5.10.134-16.3ve üzeri çekirdek sürümlerinde kullanılabilir. Bu özellik etkinleştirildikten sonra, zamanlayıcı yalnızcaID_UNDERCLASSgörevlerinin çalıştığı CPU'ları boşta olarak kabul eder ve yükleri dengelerkenID_HIGHCLASSgörevlerini boşta olan CPU'lara taşımaya çalışır. Taşıma sırasında zamanlayıcıID_HIGHCLASSgörevlerini CPU'lar arasında dağıtmaya çalışır. Bu durum,ID_HIGHCLASSgörevleri arasında CPU kaynak çakışmasını ve Hyper-Threading (HT) girişimini önler ve her birID_HIGHCLASSgörevinin yeterli CPU kaynağı almasını sağlar.NO_ID_LOAD_BALANCE: özelliğin devre dışı olduğunu gösterir. -
Çekirdek parametrelerini yapılandırmak için
sysctltarafından kullanılan arayüzlerGrup kimliği özelliğinin belirli yetenekleri çekirdek parametrelerinin değerlerine bağlıdır. Aşağıdaki tabloda çekirdek parametreleri açıklanmıştır.
Çekirdek parametresi
Açıklama
Birim
Varsayılan değer
/proc/sys/kernel/sched_expel_update_intervalBir CPU görev seçerken çıkarma durumunun otomatik olarak güncellendiği aralık. Bu çekirdek parametresi yalnızca
ID_LOOSE_EXPELözelliği etkinse geçerli olur.ms
10
/proc/sys/kernel/sched_expel_idle_balance_delayBir CPU görevleri çıkarırken geçerli olan minimum
idle balancearalığı. -1 değeriidle balanceişleminin izin verilmediğini belirtir.Bir CPU'da yalnızca
ID_UNDERCLASSgörevleri varsa ve bu görevler çıkarılıyorsa CPU boşta kalır. Yük dengeleme etkilerini iyileştirmek için CPU üzerindeIdle balanceişlemi gerçekleştirilir. Ancak bu durumID_UNDERCLASSgörevlerine zarar verebilir.sched_expel_idle_balance_delayparametresini belirterek bu sorunu hafifletebilirsiniz.ms
-1
/proc/sys/kernel/sched_idle_saver_wmarkCPU boşta kalma süresi için su işareti. Bir
ID_IDLE_SAVERgörevi uyandığında, boşta kalma süresi belirtilen su işaretini aşan boşta bir CPU bulmaya çalışır.ns
0
/proc/sys/kernel/sched_group_identity_enabledÇekirdek sürümü
4.19.91-26.4itibariyle grup kimliği özelliğini etkinleştirmenize olanak tanımak üzere/proc/sys/kernel/sched_group_identity_enabledarayüzü eklenmiştir. Grup kimliği özelliğini kullanmadan önceecho 1 > /proc/sys/kernel/sched_group_identity_enabledkomutunu çalıştırarak özelliği etkinleştirmeniz gerekir.Grup kimliği özelliği etkinleştirildikten sonra, cgroup'un
cpu.bvt_warp_nsveyacpu.identityarayüzünün değeri sıfır değilse/proc/sys/kernel/sched_group_identity_enabledarayüzüne veri yazılamaz.NotÇekirdek sürümünüz
4.19.91-26.4.al7,4.19.91-26.5.al7veya4.19.91-26.6.al7isesched_group_identity_enabledarayüzü 1 olarak ayarlanır ve cgroup'un cpu.bvt_warp_ns arayüzünün değeri sıfır değilse/proc/sys/kernel/sched_group_identity_enabledayarlarını okurken hatalar oluşur. Bu, arayüzün normal kullanımını etkilemeyen bir okuma hatasıdır. Bu hata çekirdek sürümü4.19.91-27.al7ve sonraki sürümlerde düzeltilmiştir.Yok
0
Bilgi çıktısı
Grup kimliği özelliğini kullanırken çeşitli parametreleri görüntülemek için aşağıdaki komutu çalıştırabilirsiniz:
cat /proc/sched_debug
Aşağıdaki tabloda çıktı parametreleri açıklanmıştır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|