Ubuntu 16.04 neden tüm sürücü IO zamanlayıcılarını “son tarih” e ayarlıyor?


17

Xubuntu 16.04-64bit'i dizüstü bilgisayarımdaki ikinci bir bölüme kurdum. Zaman zaman biraz yavaş göründüğünü fark ettim, bu yüzden bu sürücüler için hangi IO zamanlayıcısını kullandığımı kontrol ettim, bu da deadlinetüm sürücüler için olduğu ortaya çıktı . Birkaç SSD ve sabit diskim var, bu yüzden "son tarih" in SSD'ler ve cfqsabit diskler için en iyi olduğunu biliyorum .

Başka bir bölümde 14.04'e önyükleme yaptım cfqve döner sürücüler ve deadlineSSD için gerektiği gibi kullanıyor. Ayrıca, /etc/udev/rules.d14.04 sürücünün türünü yapılandırmak için bir kural kullanıp kullanmadığını görmek için baktım ama orada değildi, bu yüzden çekirdeğin bunu yaptığını varsayıyorum.

Bunun bir hata olup olmadığını merak ediyorum ya da şimdi her şey için "son tarih" kullanıyorlar mı?

Güncelleme: /etc/udev/rules.d hakkında yazdığım yorum bir hataydı. Aslında birkaç yıl önce bir SSD kullanmaya başladığımdan beri zamanlayıcıyı (yanıtın aşağıda olduğu gibi) rotasyon türüne göre değiştirmek için bir udev kuralı kullanıyorum. Sanýrým sadece unuttum ... yaţlanýyorum. Her neyse, kullandığım referanslardan biri Debian SSD optimizasyon wiki'siydi .

Dahil edilmesi iyi bir fikir olmaz mıydı? Sadece bir öneri!

Yanıtlar:


6

14.04 sürümüyle 3.13 çekirdeğin varsayılan zamanlayıcısı CFQ'dan Son Tarih olarak değiştirildi .

Artık ayrı bir sunucu çekirdeği yoktur ve CFQ sheduler, KVM yazma zaman aşımları gibi birçok sunucu kullanım senaryosuna uygun değildir . USB cihazlarla masaüstünde performans regresyonları bile var .


1
Okuduğunuz için teşekkürler, çok aydınlatıcı! Sıklıkla SD kartlarda ve TWRP'de Android tablette yaşadığım USB sorunu. İkincisinde, sonunda birkaç dakika boyunca asılır. KVM problemi SSB w / Son Tarihimde oldukları için VB misafirlerimde asla gösterilmiyor.
curt54

32

Ubuntu Çekirdek Ekibi, en iyi genel G / Ç zamanlayıcı seçimi hakkında fikir edinmek için farklı dosya sistemlerinde ve G / Ç zamanlayıcılarında farklı simüle edilmiş iş yüklerinin analizini düzenli olarak yürütür. Genel cevap, tüm farklı ortam türleri için tüm farklı kurulum türlerinde genel bir yapılandırma için mükemmel bir G / Ç zamanlayıcı seçeneği olmamasıdır. Hatırlanması gereken dikkat çekici noktalar:

  1. Sistemler SSD'ye taşınıyor, bu nedenle noop veya son tarih bunlar için en iyisi; noop'un son işlem süresinden daha az CPU ek yükü vardır.

  2. CFQ vs Deadline zor bir çağrı. CFQ daha fazla esneklik sağlar. Bununla birlikte, daha geniş bir simüle edilmiş G / Ç işlemi aralığı için, son tarihin CFQ'dan daha düşük gecikme süresi ve biraz daha yüksek verimlilik sağladığını tespit ettik.

  3. Çeşitli dosya sistemleri ve G / Ç zamanlayıcıları için çekirdekleri düzenli olarak karşılaştırırım (her çekirdek testinin tamamlanması 3 gün sürer). Bu ve diğer çeşitli verilerden en iyi seçim hakkında bilinçli bir karar vermeye çalışıyoruz, bkz:

http://kernel.ubuntu.com/~cking/fs-tests/

Tüm G / Ç zamanlayıcılarının artıları / eksileri vardır, bu nedenle herhangi bir varsayılan mükemmel değildir ve Ubuntu çekirdek ekibi, zorlayıcı veriler ve nedenler aksini değiştirmemizi gösteriyorsa her zaman varsayılan seçeneğe giriş yapmaya isteklidir.


5
Ubuntu Zesty 4.10 çekirdeği için varsayılan olarak CFQ kullanmaya geçtik ve ayrıca flash aygıtlar gibi yavaş aygıtlardaki kirli önbellek geri yazma sorunlarını çözdüğü için yeni CONFIG_BLK_WBT_MQ (Çok satırlı geri yazma azaltma) özelliğini etkinleştirdik.
Colin Ian King

1
Çekirdek 4.12'de olduğu için belki de BFQ'yu varsayılan olarak görecek miyiz?
JauntyDoe

Bunu 4.12 / 4.13 için değerlendireceğiz, kyber ile de bazı erken testler yaptım, ancak 4.12 bu hafta çıktıktan sonra tekrar tekrar ziyaret edeceğim.
Colin Ian King

Prensip olarak bu soru sadece 16.04 çekirdeği ile ilgili, ama hala arama :-) geliyor. Yani burada daha yeni bir güncelleme var: Ubuntu Ubuntu, memba varsayılan eşleme, geri CFQ geçilmiştir 17.04 (zesty) aracılığıyla (kozmik) 18.10 .
sourcejedi

1
Daha fazla güncelleme: Linux, CFQ veya BFQ (en azından varsayılan olarak) kullanırken WBT'yi devre dışı bırakmıştır, çünkü birlikte iyi çalışmaz. 2) WBT tarafından çözülen sorunu değerlendirmek istiyorsanız, sorunun cihazlara (farklı yazılımlar) göre değiştiğinin farkında olmanız gerektiğini düşünüyorum. Kıyaslama sonuçlarınızda, ne tür bir cihazın kullanıldığını bile bulamıyorum. 3) WBT'nin neyi çözdüğünü açıklamanızı merak ediyorum. WBT düzeltme eki kümesinin v2'sindeki kapak harfine bakarsanız, WBT, çok derin kuyruklara sahip olabilen ve aynı aygıtta açlıktan kaçınabilen hızlı flaşta arabelleğe alınmış yazma işlemlerini gerçekleştirmek için tasarlanmıştır .
sourcejedi

9

Geliştiricilerin neden deadlinevarsayılan zamanlayıcı olarak seçmeye karar verdiklerini bilmiyorum , belki de çoğu yeni bilgisayar normalde sistemlerin yüklü olduğu bir SSD ile gönderilir. Yüklemek ... durumunda Zaten yüklü olmayan, elle bu şekilde zamanlayıcı ayarlayabilirsiniz gksu:

Bir terminal açın ve çalıştırın:

sudo apt install gksu  

Ardından şu komutu yürütün:

gksudo gedit /etc/udev/rules.d/60-schedulers.rules  

Aşağıdaki metni boş dosyaya yapıştırın ve değiştirilen dosyayı kaydedin.

# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"  

İşletim sistemini yeniden başlatın ve şimdi HDD'ler ve SSD'ler için en uygun zamanlayıcıları kullanıyorsunuz.


Evet, sorudaki güncellememe göre kullandığım şey bu. Ancak bugün her iki sürücünün de olması yaygın olduğundan, tüm Linux dağıtımlarında bu kurala sahip olacaklarını düşünüyorum.
curt54
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.