Neden genel veya gerçek zamanlı olandan daha düşük gecikmeli bir çekirdek seçmelisiniz?


105

Ubuntu Studio 12.04'ü kurduktan sonra düşük gecikmeli bir çekirdek kullandığını buldum. Neden ve nasıl gerçek zamanlı veya genel olana döneceğimi araştırdım. Fakat Linux'un bu kısmı pek örtülmemiş gibi görünüyor.

S: Neden genel veya gerçek zamanlı olandan daha düşük gecikmeli bir çekirdek seçmelisiniz?

Not: Bu sorudan ve bu yazıdan gelen cevapları çoktan okudum .


3
+1, çünkü herkes güdükse oldukça iyi bir soru olmalı. Ben hala düşük gecikmeli, jenerik ve gerçek zamanlı çekirdekler arasındaki farkı bilmiyorum. Eğer -realtimegerçek zamanlı olduğunu, o zaman ne yok -rtne demek? Ve -preemptçekirdeğin nesi var ? Gemue2010'a teşekkür edeceğim, açıklamakta oldukça iyi bir iş çıkardı, ancak yine de her şeyi açıklamıyor.
Hitechcomputergeek

Yanıtlar:


61

Bunlar, hangi çekirdeği ve hangi sırayla kullanım durumunuza uygun olduğunu test etmeniz gerektiğini anlamanıza yardımcı olacak bazı basit kurallardır.

  • Sisteminiz için düşük gecikme süresi gerektirmiyorsa, lütfen -generic çekirdeğini kullanın.
  • Düşük gecikmeli bir sisteme ihtiyacınız varsa (örn. Ses kaydı için) lütfen -preempt çekirdeğini ilk seçenek olarak kullanın. Bu gecikmeyi azaltır ancak güç tasarrufu özelliklerinden ödün vermez. Yalnızca 64 bit sistemler için kullanılabilir (ayrıca amd64 olarak da bilinir).
  • -Preempt çekirdeği gereksinimleriniz için yeterince düşük gecikme sağlamıyorsa (veya bir 32 bit sisteminiz varsa) -lowlatency çekirdeğini denemelisiniz.
  • -Flatlatency çekirdeği yeterli değilse, -rt çekirdeğini denemelisin.
  • -Rt çekirdeği sizin için yeterince kararlı değilse, -realtime çekirdeğini denemelisiniz.

Ubuntu Yardım Kaynağı

Bu yüzden stüdyo dağıtımınızla ne yapacağınıza bağlı. Hızlı son kullanıcı yanıt süresine ihtiyaç duyan çoğu kullanıcı için jenerik, sadece basit bir kare düşüşünün bile kabul edilemez olduğu gerçek zamanda gerçek zamanlı çekirdeğe ihtiyaç duyulan profesyonel video düzenlemesi yapmak isteyenler için gayet iyi olacaktır.

Daha ayrıntılı ve kolay anlaşılır bir blog yazısı için bu bağlantıyı okuyun.


1
Gönderdiğiniz önceki makaleyi zaten okudum. İkincisi, bu gerçekler ne kadar güvenilir?
Starx

Peki burada belirtilen testler kendi başlarına konuşuyor. Eğer Ubuntu ekibi ilk başta Latency'yi seçtiyse, bunun bir nedeni olmalı. Şimdi farkları bilmek istediniz. Sorun çözüldü ?
ubuntu fanı

5
Hayır .. Sorunun çözüldüğünü sanmıyorum. Cevabınız bir şey yaparsa merakımı daha da arttırır.
Starx

9
Bunlardan herhangi biri 2015 yılında hala geçerli mi? -preempt, -rtVe -realtimeçekirdekleri, artık mevcut
naught101

51

Ubuntu hayranı tarafından bağlanan blog yayınının yazarıyım: http://sevencapitalsins.wordpress.com/2007/08/10/low-latency-kernel-wtf/

Bu blog yazısı hiçbir gerçek sunmuyor, sadece teori . Aslında, çalışma şekli şu: işlemci derhal ilgilenmesi gereken bazı işlemlerin olup olmadığını görmek için daha sık "durur". Bu, bu işlemlerin diğerlerinden önce yürütüleceği anlamına gelir, bu nedenle kodlama sırasında kareleri atlamazsınız veya fare tıklamaları ile düşman ölümleri arasında çok büyük gecikme süreleri olmaz. Bu, tüm işlemlerin daha erken biteceği anlamına gelmez: aslında CPU, daha sonra hangi işlemin yürütüleceğine karar veren ve bağlam geçişini gerçekleştiren zamanının daha büyük bir bölümünü kaybediyor. Bu yüzden toplam yürütme süresi daha uzundur ve bu yüzden hiç kimse web sunucusu veya veritabanı makinelerinde dikkate değer bir çekirdeği çalıştırmaz. Fakat 300Hz'lik (hatta 1000Hz'lik) bir çekirdeği, oyun sunucuları için en iyisidir.

Ancak günümüzde işlemcilerin pek çok çekirdeği vardır, bu nedenle dikkat gerektiren az sayıda işlem olduğunda, çekirdeğin alınmasını beklemek yerine kolayca farklı bir çekirdeğe tahsis edilebilir.

(stackexchange bana referanslar / kişisel deneyim gerektiriyor: http://www.gamezoo.it adresinde çeşitli oyun sunucularını yöneten, kana susamış noobgamer bir elektronik mühendisiyim ).

Bu yüzden, bir kural olarak, şunu söyleyebilirim: eğer işlemciniz güçlü bir sayıdaki yüksek frekanslı dört çekirdekli ve VE genellikle kodlama / kod çözme / oyun (huh) kodlarken tonlarca web sayfası açmazsanız, Sadece jenerik (veya i686, ya da varsa amd64) denemek ve mümkün olan en yüksek verime sahip (yani işlemcinin yapabildiği işlenmemiş ham parçalama). Sorun yaşarsanız (gerçekten küçük olmalıdır) veya makineniz piyasanın tepesinden biraz daha az güçlüyse, ön hazırlık için gidin.

Yalnızca bir veya iki çekirdeği olan düşük kaliteli bir makinedeyseniz, düşükliği deneyin. Gerçek zamanlı olarak da deneyebilirsiniz, ancak “gerçek zamanlı” olanların işlerini bitirene kadar süreçleri engelleme eğiliminde olduğunu göreceksiniz. Gerçek zamanlı çekirdeğin "vanilya" olmadığına inanıyorum, ancak CONFIG_PREEMPT_RT yamasını uyguladı. Gerçek zamanlı çekirdeğin yalnızca gömülü sistemlerde tek bir uygulama oluşturmak zorunda kalanlar için olduğunu düşünüyorum, bu nedenle normal masaüstü kullanıcılarının gerçek faydaları olmamalıdır, çünkü genellikle aynı anda çok sayıda uygulama çalıştırırlar.

Son olarak, düşük gecikmeli bir masaüstüne sahip olmak için çekirdeğinizi yeniden derlemek istiyorsanız, en uygun çekirdek seçenekleri şunlardır:

PREEMPT=y

ve:

CONFIG_1000_HZ=y

Bazı güç tasarrufu eklemek için bunu kontrol edebilirsiniz:

CONFIG_NO_HZ=y

Sunucuların bakımından bahsettiğinizi fark ettim, vana kaynaklı özel sunucu için en iyi çekirdeği bulmaya çalışıyorum (özellikle CSGO). Bulduğum CS konularının çoğu 1000Hz çekirdeğe ihtiyaç duyan goldsrc ile ilgilidir. Srcds ile düşüklük kötü mü? eğer önemli değilse, şu anda sahip olduğum gibi sadece düşüklüğe bağlı kalacağım (128 kıkır srcds sunucusu için cpu çekirdeğini izole ediyorum, çünkü zaten çok iş parçacıklılıktan gerçekten faydalanmıyor).
Vincent De Smet

Bu ipuçlarını bilmek faydalı, tamamen preempt olarak değişecektir. O kadar acelem yok ki çekirdeğimin pis bir korsan gibi davranmasını istiyorum.
userDepth ile

4

Yukarıda belirtilen belgeden ( http://www.versalogic.com/mediacenter/whitepapers/wp_linux_rt.asp )

  1. Yumuşak bir gerçek zamanlı sistem, azaltılmış ortalama gecikme süresi sağlayacaktır, ancak garantili bir maksimum yanıt süresi vermez.
  2. Zor bir gerçek zamanlı sistem, en kötü durumdaki sistem yükü altında bile, her zaman istenen süreleri (yüzde 100) karşılar.
  3. Yaghmour [4] 'e göre, "Gerçek zamanlı, ham hızda değil, garantilerle ilgileniyor."

Makale, zor gerçek zamanlı çekirdeğin sorumsuz veya zamana bağlı olarak en önemli özellik olduğunu söylüyor, bu nedenle bazen gecikmeye yol açan kritik olmayan etkinlikleri geciktiriyorlar, ancak düşüklük veya diğer yumuşak gerçek zamanlı çekirdeğin çoğu durumda yardımcı olan genel gecikmeyi azaltmaya çalışıyorlar. Gecikme süresinin azalması nedeniyle sistem hızlı görünüyor. Makaleyi dikkatlice okuyun.


Bu doğru, ancak hangi çekirdek değişkeninin hangi gerçek zamanlı sistemin “sertlik” ile eşleştiğini bilmemiz gerekiyor.
Melebius

0

1600MHz'de çift AMD A6-4400M olan bu eski dizüstü bilgisayara sahibim, ofis dışındayken çoğunlukla e-posta okumak ve geçici web sitelerine göz atmak için kullanıyorum. Muhtemelen yazılım güncellemeleriyle bağlantılı olan ve yanıt vermeyen bir şey vardı. İlki görmeden bir düzine karakter yazmak gibi bir şey. Çoğunlukla, bir işlemi zorla bırakıp bırakmamam gerektiğini soran widget.

Sonra sudo apt-get install linux-lowlatencyve yeniden başlat, pürüzsüz ve duyarlı hale geldi. (unr -r 5.0.0-20-lowlatency.) Harika, yıllar önce değiştirmeliydim. Seven'ın cevabını vurgulamama izin verin: Bir sayıdaki çırpma sunucusundan maksimuma çıkmak istemiyorsanız , -preempt !

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.