15.04'te ne tür programlama algoritmaları kullanılıyor? Bunu değiştirmek mümkün mü?


12

15.04, zaman paylaşımı veya gerçek zamanlı olarak hangi zamanlama mekanizmalarının kullanıldığını bilmek ister misiniz, eminim FIFO, Round Robin, SJF?

PS: Linux'ta yeni

Yanıtlar:


14

İşlem zamanlayıcı

Bir işlem zamanlayıcı, işlemlerin yürütülmesi için CPU kaynak tahsisini işler ve etkileşimli performansı en üst düzeye çıkarırken genel CPU kullanımını en üst düzeye çıkarmayı amaçlar.

Çekirdek 2.6.23'ten beri (Hardy 8.04 LTS'den itibaren olacaktır) "Döner Merdiven Son Tarihi" ne dayanan Tamamen Adil Zamanlayıcı (CFS) . Kernel.org'dan genel bakış :

CFS, "Tamamen Adil Zamanlayıcı" anlamına gelir ve Ingo Molnar tarafından uygulanan ve Linux 2.6.23'te birleştirilen yeni "masaüstü" süreç zamanlayıcıdır. Önceki vanilya zamanlayıcısının SCHED_OTHER etkileşim kodunun yerini almıştır.

CFS tasarımının% 80'i tek bir cümleyle özetlenebilir: CFS temel olarak gerçek donanımda "ideal, hassas çoklu görev CPU'su" nu modeller.

"İdeal çoklu görev CPU"% 100 fiziksel güce sahip (her biri 1 / nr_running hızında paralel olarak her biri hassas eşit hızda çalıştırabilen (mevcut olmayan :-)) bir CPU'dur. Örneğin: çalışan 2 görev varsa, her biri% 50 fiziksel güçte çalışır - yani aslında paraleldir.

Gerçek donanımda, aynı anda yalnızca tek bir görev çalıştırabiliriz, bu nedenle "sanal çalışma zamanı" kavramını tanıtmamız gerekir. Bir görevin sanal çalışma zamanı, sonraki zaman diliminin yukarıda açıklanan ideal çok görevli CPU'da ne zaman yürütülmeye başlayacağını belirtir. Pratikte, bir görevin sanal çalışma zamanı, çalışan toplam görev sayısına normalleştirilen gerçek çalışma zamanıdır.


  • Çekirdek 2.4: O (n) zamanlayıcı ; bu çekirdekte Ubuntu sürümü yok.
  • Çekirdek 2.6.0 - 2.6.22: O (1) zamanlayıcı . Warty 4.10 (1. sürüm) 2.6.8 kullanıldı. Gutsy 7.10, 2.6.22 veya daha düşük olan sonuncuydu.

G / Ç zamanlayıcı

Giriş / çıkış zamanlaması, işletim sisteminin hangi hacimli blok I / O işlemlerinin depolama birimlerine sunulacağına karar vermek için kullandığı yöntemdir.

Çizelgeleme ile ilgili Phoronix makalesi : Linux 3.16: Son Tarih I / O Zamanlayıcısı Genel Olarak SSD ile Çalışıyor.


I / O zamanlayıcısını grub içinde "elevator =" seçeneğini "GRUB_CMDLINE_LINUX_DEFAULT =" seçeneğine ekleyerek değiştirebilirsiniz.

Yine de böyle yapmak daha kolay (sda ve son tarih varsayarak):

  • Mevcut programlayıcıların listesini göstermek için:

    cat /sys/block/sda/queue/scheduler
    
  • Ve bir zamanlayıcıyı değiştirmek için (anında yapılabilir):

    echo deadline > /sys/block/sda/queue/scheduler
    

Çekirdek / git / torvalds / linux.git


Ne ile kullanıldığını kontrol edebilirsiniz (sda'yı birincil olarak kabul ederek):

cat /sys/block/sda/queue/scheduler

Bu, Ubuntu 15.04'te varsayılan olarak kullanılan zamanlama algoritmasının CFS olduğu anlamına mı geliyor? Yoksa DİĞER, RR ve FIFO ile mi geliyor? Benim burada bilgiler var: manpages.ubuntu.com/manpages/hardy/man2/...
leslie_lyj

Hardy'nin sayfalarına bakıyorsunuz. Bu biraz eski;) 'cfq' varsayılan değerdir. Çekirdek / git / torvalds / linux.git için eklenen bağlantıya bakın.
Rinzwind

1
... bu disk ve cpu zamanlayıcısı arasında kafa karıştırıcı değil mi? Onlar oldukça farklı yaratıklar. CPU zamanlayıcı sonraki işlemin ne olduğuna karar verir ve disk zamanlayıcı disklerdeki veri bloklarına nasıl erişileceğine karar verir. Bkz. Örneğin wiki.archlinux.org/index.php/Maximizing_performance
Rmano

Aslında, bu sorunun asıl amacı, Ubuntu 15.04'ün hangi süreç planlama mekanizmasının çalıştığını açıklığa kavuşturmaktı. (Net olmasaydım üzgünüm)
leslie_lyj

2
@Rmano Bunun aslında kullanmak için değil bilgi için olduğunu varsaydım. Ama içimdeki nevrotik tüm dışarı gitti>: - D Bununla oynamak isteyen herkesin bir uzman olması bekleniyor: X
Rinzwind
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.