CPU uyumlu sıkıştırma


10

Oldukça hızlı bir ağ üzerinden bir bilgisayardan diğerine bazı veriler göndermem gerektiğini varsayalım ... örneğin standart 100Mbit bağlantı (~ 10MB / s). Disk sürücülerim standart HDD'dir, bu nedenle hızları 30MB / s ile 100MB / s arasındadır. Bu yüzden verileri anında sıkıştırmanın yardımcı olabileceğini düşünüyorum.

Ama ... CPU ile sınırlı olmak istemiyorum. CPU üzerinde yoğun bir algoritma seçersem, aktarım aslında sıkıştırmadan daha yavaş olacaktır.

GZIP ve BZIP2 gibi kompresörler için bu zordur, çünkü genellikle tüm aktarım için sıkıştırma gücünü bir kez ayarlarsınız ve veri akışlarım bazen kolay, bazen sıkıştırılması zordur - bu bazen süreci tam CPU kullanmam, ve bazen bant genişliği yeterince kullanılmıyor.

Aktarımın optimum olması için mevcut CPU / bant genişliğine uyum sağlayacak ve tatlı noktayı vuracak bir sıkıştırma programı var mı? Linux için ideal, ancak hala tüm çözümleri merak ediyorum. GZIP / BZIP2 dekompresörleri ile uyumlu bir şey görmek isterim, ancak bu gerekli değildir.

Bu nedenle, yalnızca gönderilecek bayt miktarını değil, toplam aktarım süresini optimize etmek istiyorum.

Ayrıca gerçek zamanlı dekompresyona ihtiyacım yok ... gerçek zamanlı sıkıştırma yeterlidir. Hedef ana bilgisayar, verileri boş zamanlarında daha sonra işleyebilir. Bunun çok fazla değişmediğini biliyorum (sıkıştırma genellikle dekompresyondan çok daha fazla CPU yoğundur), ancak bu gerçeği kullanabilen bir çözüm varsa, daha iyi.

Her seferinde farklı veri aktarımı yapıyorum ve bu tek seferlik aktarımları olabildiğince hızlı yapmak istiyorum. Bu nedenle, daha güçlü sıkıştırma nedeniyle birden çok aktarımı daha hızlı elde etmekten faydalanmayacağım.

Teşekkürler,


1
+ 1 ilginç ve potansiyel olarak yararlı fikir. Bunu yapmak için iyi yollar bulursanız, bunu duymak isterim.
David Cary

Yanıtlar:


3

Bu, güncel bir araştırma konusudur - öncelikle hedefin verimi en üst düzeye çıkarmak yerine güç kullanımını en aza indirgemek olduğu sensör ağları alanında. Ancak, uyarlamalı sıkıştırma ilkesi aynıdır.

İşte USC'de profesörden yeni bir makale .

Belki algoritmasını uygulamaya devam edebilirsin? Eminim iyi bir uygulama ile ilgilenen birçok kişi olacaktır.


Ben isterdim, eğer yapabilseydim ... her zamanki insani zaman kısıtlamaları burada geçerlidir. Yine de test etmek için ilk olabilirim ;-) Makalelere bağlantılar için teşekkür ederim, ilginizi çekebilecek diğer insanları bulmaya çalışabilirim.
liori

2

Hum, bu soru bir yıldan daha eski, bu yüzden fark edilmeden geçebilir:

Her neyse, Google yakın zamanda Snappy'yi tam olarak aradığınız şey olabilir, yani:

[...] Maksimum sıkıştırma veya başka bir sıkıştırma kütüphanesi ile uyumluluk amaçlamaz; bunun yerine, çok yüksek hızlar ve makul bir sıkıştırma hedefler. Örneğin, zlib'in en hızlı moduna kıyasla, Snappy çoğu girdi için daha hızlı bir büyüklük sırasıdır, ancak elde edilen sıkıştırılmış dosyalar% 20 ila% 100 daha büyüktür [...]

C ++ 'da C ve diğer birçok dilde mevcut bağlamalar ile uygulanır.


Oh, hayır, en azından benim tarafımdan fark edilmeyecek ;-) ve Görünüşe göre uyarlanabilir değil gibi görünüyor - sadece hızlı.
liori
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.