Jack vs Pulseaudio - daha hızlı nasıl?


27

Jack'in Nabız'dan daha hızlı olduğu ve gecikme süresinin daha az olduğu bir sürü iddia görüyorum. Bu nasıl? Neden Pulse kendine hafif diyor, Jack beyleri de buna yağ diyor? Birisi bu iki daemonun içini bir meslekten mahrum edebilir mi?


2
Onları anladığım gibi, onları karşılaştırma problemini açıklayabilecek farklı amaçlar için tasarlanmışlardır.
NN

Yanıtlar:


30

Jack , makinenizi olası en düşük işlem gecikme süresini belirlemek üzere sunucuyu yapılandırmak için size - bilgili kullanıcı gerektirir . (İşlem gecikmesi, sunucunun verileri istemci uygulamalarına / uygulamalardan taşımasına ve ardından sistemin dışındaki ses örneklerinin bir sonraki "öbeğini" almasına / göndermesine kadar geçen zamandır.) Jack, söz konusu ses verilerini zamanında ya da teslim eder. başarısız olur ve size tampon altını verir (bazen "bırakma" olarak adlandırılır veya açılır ve tıklar).). Jack sürekli altüst olursa, ya farklı ayarlarla sunucuyu yeniden başlatmak ya da daha verimli hale getirmek için istemci uygulamalarınızda bir şeyleri değiştirmek sizin işinizle sonuçlandırır. Sunucu ayarlarınız tüm istemciler için aynı şekilde uygulandığından, Jack, sesi birden fazla ses uygulaması arasında yönlendirmek ve öngörülebilir sonuçlar almak için oldukça kullanışlıdır . (Yani, "jakları" çeşitli ses bileşenlerine takmak gibidir.)

Darbe, sunucunun sistemin dışına ses göndermek / almak için bir son teslim tarihine uymaması nedeniyle sesin düşme sayısını en aza indirecek şekilde tasarlanmıştır. Görünüşe göre düşük işlem gecikmesi talep etmeyen istemci uygulamaları için büyük bir tampon seçerek , daha sonra son tarihi olan istemciler uygulamaları için örnekleri bu tampona "enjekte" ederek çalışır. Son başvuru tarihini kaçırdığı ve yetersiz kalmasına neden olacak kadar kısa sürede numuneleri enjekte etmeye çalışırsa, Pulse bir istemcinin sunucuya ses güncellemesi göndermesine izin verecek en kısa süreyi otomatik olarak artıracaktır. Darbeli dokümanlar açıkça çok düşük gecikme süresi olduğunu söylüyorlar - örneğin, 10 ms'den az işlem gecikmesi süresi- tasarım amacı değil. Linux'un kendisi (ve muhtemelen donanımınız) sesin gerçek zamanlı olarak programlanması için tasarlanmadığı için, onlara inanmaya hazırım.

Kullanıcı konfigürasyonu açısından, Pulse "hafif" tir. (Birisi Pulse'nin düşük konfigürasyon gecikmesine sahip olduğunu söyleyebiliriz , ne yazık ki birçok Linux Ses uygulamasının görünüşte ihmal ettiği bir şey.) Jack'e kıyasla altında yatan karmaşıklığı açısından, Pulse "yağ" dır.

Hangisinin daha hızlı olduğu konusunda kesin bir cevap almak için, sadece bir geridöngü aygıtı edinmeniz ve gerçeği bilmek için kendi sisteminizdeki gidiş-dönüş gecikmesini ölçmeniz yeterlidir. Gidiş-dönüş gecikmesi , sisteminizin sesi işlemesi ve sisteme geri işlediği şeyi alma süresidir. Linux altında bunun nasıl yapılacağını açıklayan çevrimiçi öğreticiler var. Bu size gerçekte neyin peşinde olduğunuzla ilgili bir fikir verecektir, ki bu algılanan gecikmedir - bir olayı tetiklediğiniz andan itibaren (örneğin bir gitarın tellerini tökezleyerek) ilk sesini duyduğunuz ana kadar geçen süre bu sonuç verir (örneğin, gitar akorunu duymak).

Son olarak, hem Pulse hem de Jack'in çoğu GNU / Linux dağıtımında ALSA'nın üstüne oturduğunu unutmayın. Sadece Jack'e karşı Nabız'ı sorduğunu biliyorum. Ancak, doğrudan ALSA'ya bağlanabilen tek bir ses uygulaması kullanıyorsanız, Pulse veya Jack'i eklemenin yalnızca algılanan gecikme süresini yalnızca ALSA'dan daha düşük tutacağı düşünülemez . Bu anlamda hem Pulse hem de Jack "yağ" dır.

TLDR; Tek başına ALSA en hızlısıdır, Jack çoklu ses uygulamalarını birlikte zincirlemek için kullanışlıdır ve Pulse muhtemelen çok düşük gecikme süresi umursamadığınızda kullanımı en kolay olanıdır. Ne tür bir gecikme olduğunu açıklamaksızın gecikme terimini kullanan tüm belgeleri veya tartışmaları dikkate almayın. (Ne yazık ki, hem resmi Jack docs hem de Lennart'ın Pulse ile ilgili blog yazıları bu kategoriye girmektedir.)

Not : Tek bir ses uygulamasını kullanmak istediğiniz kenar durumlar olabilir ve crummy bir ALSA arayüzüne ve iyi bir Jack arayüzüne sahiptir. Bu durumda, Jack'i kullanmanız gecikmeyi azaltabilir. Ancak gecikmeyi en aza indirmek için tasarlanmış uygulamalardan bahsediyorsak, bu durumlar nadir olmalıdır. Ama bir geridöngü cihazı bağla ve hipotezimi test et!


9

Aslında ses sunucusu olmalarına benzerler . JACK , profesyonel seviye ses çözümleri için gerekli olan gerçek zamanlı / düşük gecikmeli yanıt için tasarlanmıştır. PulseAudio genel masaüstünde daha az hedeflenir (daha az katı ihtiyaçların uygulandığı). PA , JACK'den daha ağır görünmektedir - daha karmaşık olmak daha fazla ek yüke yol açar . Linux'ta her ikisi de sonunda gerçek çıktı almak için ALSA'yı kullanır . PA ile veriler genellikle ALSA'dan (uygulama çıktısı) PA'ya (işlemden) ALSA'ya (çıkış) yönlendirilir, ki bu elbette JACK-ALSA yolundan daha yavaştır. Öte yandan, yerel olarak kullanamayan uygulamalar için şeffaftır, çünkü onlara ALSA arayüzlü sanal bir ses kartı sunar.

Her durumda, müzik üretmeyi düşünmüyorsanız ya da uygulama ses kontrolü başına olmadan yaşayamıyorsanız (ya da ağ üzerinden başka bir makineye ses iletiyorsanız), sade ALSA daha az ek yük ile gayet iyi durumda olacaktır. Bazı sürücüler donanım karıştırması yapabilir ve olmasa bile, ALSA bir eklenti ile karıştırabilir (muhtemelen JACK kadar hızlı değil, ancak "normal" kullanımı iyi olmalıdır).


PA görüntüsünün bağlantısı yanlış mı?
NN

@NN benim için çalıştı, ama şimdi değiştirdim, umarım daha iyi olur.
Peterph,

@Sukminder hata oldukça rastgele görünüyor.
Peterph,

1
Bu cevabın kesin olduğunu sanmıyorum: ilk önce Jack'in nasıl daha hızlı olduğunu söylemiyorsunuz , ikincisi ise yanıtı doğrudan bir Darbeli Lavabo yerine sahte sahte bir sürücü içeren bir örnekle özetliyorsunuz. Soru oldukça açık, fakat daha doğrudan olmak - JACK en hızlı, en hızlı olan Pulse ile karşılaştırıldığında nasıl daha hızlı?
Evan Carroll,

Sadece Jack takımının daha hızlı olduğunu söylediğini duymaktan yoruldum, çünkü ağırlığın neden ağır olduğunu - ve ağır ağırlıkta olanı - Nabız'ı daha yavaş hale getirdiğini açıklamadan ağırlıyor. Bu cevap, söz konusu öncülün Kartezyen'i yeniden ele alması gibi hissediyor.
Evan Carroll

4

Jack, örneğin düşük ses seviyesi gerektiren uygulamalar içindir: müzisyenler, video yapımcıları, vb.

  • yeniden örnekleme yok!
  • Zorla yazılım karıştırma kaynakları
  • uygulamalar, cihazlar, ladspa / lv2 / vst eklentileri, vb. arasında uygun yönlendirme işleri (ses, timesync, vb.)
  • Pulseaudio (köprü) ile kullanılabilir

Darbe düzenli masaüstü uygulamaları içindir (düşük tutarsızlık beklemeyin)

  • aRts ve esd ile uyumluluk sağlamak
  • alsave ossçıktı olarak kullanılabilir
  • zorlama yazılımı yeniden örnekleme
  • Zorla yazılım karıştırma kaynakları
  • Yazılım upmix, downmix, vb
  • eklentileri için güzel api verir (örneğin: pulseeffects )
  • basit yönlendirme (çıktıyı başka bir cihaza veya uygulamaya bağlamak için)
  • uygulama başına ses kontrolü

Alsa kullanıcı alanı katmanı (sürücüler değil) minimum yapar ([*] arasında değişkenlik)

  • [*] donanım yeniden örnekleme, vs, kaynaklar karıştırma upmixlemek (İhtiyacınız yeterli ses kartı , kullanmak aksi yazılım kullanılacaktır)
  • çirkin config formatında ayarlayabileceğiniz ladspa eklentileri
  • basit / global ses seviyesi kontrolü

Çoğu durumda Pulse normal masaüstü kullanıcıları için en iyi seçimdir. Jack, müzisyenler vb. İçin en iyi seçimdir.


Çok fazla puan kaybettim ama sorunun iyi bir kıyaslama kadar bir cevap olduğundan emin değilim. Örnekleme yapmıyorsa PulseAudio neden daha yavaş?
Evan Carroll,

> Örnekleme yapmıyorsa PulseAudio neden daha yavaş?
3ED

Değil? Yazılımda bir şeyler yaparlar örneğin: zorla yeniden örnekleme (2 arasında seçim yapabilirsiniz). Jack kısmen alsayı atlar. Jack, asio'ya benzer bir şey. Uzaktaki standart pencerelere benzeyen darbe. Aynı değil, benzer kavramlar. Darbe, donanımda bir şeyler yapamayan ucuz / tümleşik / doğru desteklenmeyen ses kartları için mükemmeldir.
3ED

2

Bu gerçekten "vs" meselesi değil. İlk bakışta ikisinin de "Ses Sunucusu" olduklarını görebiliyoruz. Bu nedenle, belki de, sadece birinin kendi aralarından seçim yapması gerektiği sonucuna varılmıştır. Konu bu değil. Örneğin, bir video kamerayı ve bir FLIR kamerayı karşılaştırın; ikisi de kameradır. Ancak, biri sadece aralarında “seçim” yapmaz. Çok farklı roller üstlenirler, bu roller iltifat olabilir, ancak hiçbir şekilde rekabet edemezler. Birinin krikoya veya birinin nabzına ihtiyacı var, yoksa ikisine de ihtiyacı olabilir. Seçim, belirli gecikme gibi özellik ekleri değil, sorun alanı tarafından belirlenir.

“FAT” a ​​göre değil, terim gerçekten anlamlı olmak için çok fazla şekilde kullanılır. Ancak, genel olarak, FAT terimi "uygulama sizin için her şeyi yaparsa", az ya da çok kullanılır. "Hafif", muhtemelen seçeneklerden oluşan bir paletten seçerek ve gerisini atmadan, istediğiniz işlevselliği yüklemenizi sağlar. Darbe, birkaç parametre verdiğiniz ve büyük ölçüde kullandığı "büyük bir blok" programıdır. İhtiyacınız olsun veya olmasın, nabzı başlattığınızda büyük miktarda işlevsellik yüklenir. Jack, istediğinizi inşa etmek için istediğiniz sayıda eklentiye, programa, vb. Yapıştırdığınız küçük ve kendi başına işe yaramaz bir programdır. Programcılar dünyayı makine kaynaklarının yanında görme eğilimindedirler.

Yani, nabız değişken bir gecikme sunucusudur ve jak sabit gecikme süresidir. Bunlar özel problem alanları. Sadece TV izliyorsanız veya bir ağ üzerinden müzik dinliyorsanız, kesinlikle nabız olmasını istiyorsunuz. Canlı elektronik müzik çalmaya çalışıyorsanız, kesinlikle jack'e ihtiyacınız var. TV izliyorsanız ve ses yayınlarında biraz işlem yapıyorsanız, mutlaka ikisine de ihtiyacınız olacaktır.


1
Biraz öznel: Sunucunun eklediği herhangi bir gecikmeden kurtulmak mümkün olmadığından, ses sunucusunun JACK tasarımına uyması gerektiğini düşünüyorum. Daha sonra disk veya ağ I / O, örnekleme hızı dönüştürme vb. İçin daha büyük tamponlar kullanmak uygulama geliştiricisine kalmıştır. 10 ms işaretinin üzerindeki gecikmeler yüksektir.
kullanici877329
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.