Koşulsuz bir cpuset'teki iş parçacıkları için zamanlayıcı önceliklerinin ve politikalarının, varsa, etkileri nelerdir?


12

İki cpu_exclusive cpuset, A ve B oluşturmak için cgroups kullandığımız ve cpuset A'ya bağlı bir gruba tüm kullanıcı iş parçacıklarını ve tüm bağlanmamış çekirdek iş parçacıklarını taşıdığımız bir Linux sistemim var. cpuset A'da çalışan cpuset A'da çekirdeklerden daha fazla sayıda iş parçacığı vardır.

Ayrıca, cpuset B'ye bağlı çok az sayıda çok aktif süreç vardır, burada bu işlemler boyunca toplam kullanıcı iş parçacığı sayısı, yalnızca cpuset B'de bulunan çekirdek sayısından daha fazla değildir. Amaç, cpuset'te çalışan bu önemli görevleri korumaktır. B'yi makinedeki diğer etkinliklerden ve işleme gecikmesini en aza indirmek için

Böyle bir kurulumda, cpuset B'de çalışan kullanıcı iş parçacıklarının zamanlama politikası / önceliği gözlemlenebilir bir etkiye sahip mi? Başka bir deyişle: B cpuset iş parçacıklarının zamanlama ilkesini varsayılan SCHED_OTHER yerine SCHED_FIFO veya SCHED_RR olarak değiştirmenin iyi veya kötü sonuçları olabilir mi?

Zamanlayıcı, cpuset B'de çalışan her bir iş parçacığını kendi özel çekirdeğini atayabilmesi gerektiğinden, cevabın 'hayır' olması gerektiği gibi görünüyor, bu nedenle önceliklendirilecek veya programlanacak hiçbir şey olmayacak ve böylece B'nin politikası ve göreceli önceliği olacak. cpuset ipliklerinin önemi yoktur. Öte yandan, endişelenmek için bağlı çekirdek konuları ve 'zamanlayıcı etki alanı' yönleri ve muhtemelen dikkate almadığım diğer şeyler vardır.

Fazla öngörülmüş münhasır cpuset ile çalışan iş parçacıklarının zamanlama politikaları ve öncelikleri herhangi bir pratik anlamda önemli midir?

Yanıtlar:


4

Her bir PID'ye belirli bir çekirdeği kilitlemediğiniz sürece, kullanılan zaman dilimi önbellek kalıcılığı gerektiren CPU yoğun işler için önemli olacaktır. Etkileşimli duyarlılığı azaltırken zaman dilimini SCHED_BATCH zamanlayıcı politikasıyla artırabilir ve bazı durumlarda performansı% 300'e kadar artırabilirsiniz. Daha küçük zaman dilimlerinin zıt etkisi SCHED_RR ile gerçekleşir (bu da verimi azaltır ancak gerçek zamanlı yanıt verme hızını artırır).

B setindeki tüm PID'ler için belirli PID'lerin ilkesini tek bir komut olarak ayarlamak için zaman çizelgesini kullanabilirsiniz. Ayrıca, belirli PID'leri belirli çekirdeklere kilitlemek için de kullanılabilir; bu, önbellek kalıcılığı artık zaman dilimine bağlı olmadığından, ancak her PID için ayrı bir zaman çizelgesi komutu çalıştırmanız gerektiğinden daha fazla çaba gerektirir.


1

Her sürecin kendi çekirdeği varsa, öncelik kısıtlamaları yoktur.

Ancak, her 15 dakikada bir çalıştırılması 30 dakika süren bir işlem zamanlarsanız, işlem çakışmaya başlayacağından önceliklendirmeniz gerekir.

Ancak "en iyi" zamanlama politikası yoktur.

Gerçekten ne elde etmek istediğinize bağlı. Ama başlangıçta, varsayılan olarak SCHED_OTHER'a bıraktım ve daha fazla uzmanlaşmayı denemeden önce bir süre gözlemledim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.