การบีบอัด CPU แบบปรับตัว


10

สมมติว่าฉันต้องส่งข้อมูลจากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่งผ่านเครือข่ายที่ค่อนข้างรวดเร็ว ... เช่นการเชื่อมต่อ 100Mbit มาตรฐาน (~ 10MB / s) ดิสก์ไดรฟ์ของฉันเป็น HDD มาตรฐานดังนั้นความเร็วจึงอยู่ระหว่าง 30MB / s และ 100MB / s ดังนั้นฉันเดาว่าการบีบอัดข้อมูลในทันทีอาจช่วยได้

แต่ ... ฉันไม่ต้องการถูก จำกัด ด้วยซีพียู ถ้าฉันเลือกอัลกอริทึมที่ใช้งาน CPU มากการถ่ายโอนจะช้าลงกว่าที่ไม่มีการบีบอัด

นี่เป็นเรื่องยากสำหรับตัวบีบอัดเช่น GZIP และ BZIP2 เพราะคุณมักจะตั้งค่าความแรงของการบีบอัดหนึ่งครั้งสำหรับการถ่ายโอนทั้งหมดและบางครั้งสตรีมข้อมูลของฉันนั้นง่ายมากบางครั้งยากที่จะบีบอัด - นี่ทำให้กระบวนการ และบางครั้งแบนด์วิดท์ underutilized

มีโปรแกรมบีบอัดที่จะปรับให้เข้ากับ CPU / แบนด์วิดท์ปัจจุบันและกดจุดที่น่าสนใจเพื่อให้การถ่ายโอนนั้นดีที่สุดหรือไม่? เหมาะอย่างยิ่งสำหรับ Linux แต่ฉันยังอยากรู้เกี่ยวกับการแก้ปัญหาทั้งหมด ฉันชอบที่จะเห็นบางสิ่งที่เข้ากันได้กับตัวขยายการบีบอัด GZIP / BZIP2 แต่ไม่จำเป็น

ดังนั้นฉันต้องการเพิ่มประสิทธิภาพการถ่ายโอนทั้งหมดไม่ใช่เพียงจำนวนไบต์ที่จะส่ง

นอกจากนี้ฉันไม่ต้องการการบีบอัดเวลาจริง ... การบีบอัดตามเวลาจริงก็เพียงพอแล้ว โฮสต์ปลายทางสามารถประมวลผลข้อมูลในภายหลังในเวลาว่าง ฉันรู้ว่าสิ่งนี้ไม่เปลี่ยนแปลงมากนัก (การบีบอัดมักจะใช้ CPU มากกว่าการคลายการบีบอัด) แต่ถ้ามีวิธีแก้ปัญหาที่สามารถใช้ข้อเท็จจริงนี้ได้ทั้งหมดจะดีกว่า

ทุกครั้งที่ฉันถ่ายโอนข้อมูลที่แตกต่างกันและฉันต้องการทำการถ่ายโอนแบบครั้งเดียวเหล่านี้โดยเร็วที่สุด ดังนั้นฉันจะไม่ได้รับประโยชน์จากการถ่ายโอนหลายครั้งเร็วขึ้นเนื่องจากแรงบีบอัดที่มากขึ้น

ขอบคุณ


1
+1 แนวคิดที่น่าสนใจและมีประโยชน์ หากคุณเคยพบวิธีที่ดีในการทำเช่นนี้ฉันต้องการที่จะได้ยินเกี่ยวกับมัน
เดวิดแครี

คำตอบ:


3

นี่เป็นเรื่องของการวิจัยในปัจจุบัน - ส่วนใหญ่อยู่ในพื้นที่ของเครือข่ายเซ็นเซอร์ที่เป้าหมายคือเพื่อลดการใช้พลังงานให้น้อยที่สุดแทนที่จะเพิ่มปริมาณงานสูงสุด อย่างไรก็ตามหลักการของการบีบอัดแบบปรับตัวยังคงเหมือนเดิม

นี่เป็นกระดาษที่ผ่านมาจากอาจารย์ที่ยูเอส

บางทีคุณอาจจะลองใช้อัลกอริธึมของเขาบ้าง? ฉันแน่ใจว่าจะมีหลายคนที่สนใจในการใช้งานที่ดี


ฉันชอบที่จะทำ ... ข้อ จำกัด ด้านเวลาของมนุษย์ตามปกติใช้กับที่นี่ ถึงกระนั้นฉันสามารถทดสอบได้ก่อน ;-) ขอบคุณสำหรับลิงก์ไปยังเอกสารฉันอาจลองค้นหาคนอื่นที่อาจสนใจ
liori

2

ครวญคำถามนี้มีอายุมากกว่าหนึ่งปีแล้วดังนั้นอาจไม่มีใครสังเกตเห็น:

อย่างไรก็ตาม Google เพิ่งเผยแพร่Snappyซึ่งอาจเป็นสิ่งที่คุณกำลังมองหานั่นคือ:

[... ] มันไม่ได้มีจุดมุ่งหมายเพื่อการบีบอัดสูงสุดหรือเข้ากันได้กับห้องสมุดการบีบอัดอื่น ๆ แต่มีจุดมุ่งหมายเพื่อความเร็วสูงและการบีบอัดที่สมเหตุสมผล ตัวอย่างเช่นเมื่อเทียบกับโหมดที่เร็วที่สุดของ zlib Snappy เป็นลำดับความสำคัญที่เร็วขึ้นสำหรับอินพุตส่วนใหญ่ แต่ไฟล์บีบอัดที่ได้จะมีขนาดตั้งแต่ 20% ถึง 100% ที่ใหญ่กว่า [... ]

มันถูกนำมาใช้ใน C ++ โดยมีการเชื่อมโยงสำหรับ C และภาษาอื่น ๆ


อย่างน้อยก็โดยฉัน ;-) และดูเหมือนว่ามันจะไม่ปรับตัวในแง่ที่ฉันมองหา - มันเร็วมาก
liori
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.