CPU 대응 압축


10

표준 100Mbit 연결 (~ 10MB / s)과 같이 매우 빠른 네트워크를 통해 한 컴퓨터에서 다른 컴퓨터로 데이터를 보내야한다고 가정 해 봅시다. 내 디스크 드라이브는 표준 HDD이므로 속도는 30MB / s에서 100MB / s 사이입니다. 따라서 데이터를 즉시 압축하면 도움이 될 것 같습니다.

그러나 ... 나는 CPU에 의해 제한되고 싶지 않습니다. CPU를 많이 사용하는 알고리즘을 선택하면 실제로 압축이없는 것보다 전송 속도가 느려집니다.

GZIP 및 BZIP2와 같은 압축기에서는 일반적으로 전체 전송에 대해 압축 강도를 한 번 설정하고 데이터 스트림이 때때로 쉽고 압축하기가 어렵 기 때문에 어려움이 있습니다. 때로는 대역폭이 부족합니다.

현재 CPU / 대역폭에 적응하고 스위트 스폿에 도달하여 전송이 최적이되는 압축 프로그램이 있습니까? 이상적으로는 Linux에 적합하지만 여전히 모든 솔루션에 대해 궁금합니다. GZIP / BZIP2 압축 해 제기와 호환되는 것을보고 싶지만 반드시 그런 것은 아닙니다.

그래서 단순히 전송할 바이트의 양이 아니라 총 전송 시간을 최적화하고 싶습니다.

또한 실시간 압축 풀기가 필요하지 않습니다 ... 실시간 압축이면 충분합니다. 대상 호스트는 나중에 여분의 시간에 데이터를 처리 할 수 ​​있습니다. 나는 이것이 많이 변하지 않는다는 것을 알고 있습니다 (압축은 일반적으로 압축 해제보다 CPU를 많이 사용합니다).하지만이 사실을 사용할 수있는 솔루션이 있다면 더 좋습니다.

다른 데이터를 전송할 때마다 가능한 한 빨리 이러한 일회성 전송을 원합니다. 따라서 더 강한 압축으로 인해 여러 전송을 더 빨리 얻는 데 도움이되지 않습니다.

감사,


1
흥미롭고 잠재적으로 유용한 아이디어 +1 이 작업을 수행하는 좋은 방법을 찾은 경우 이에 대해 듣고 싶습니다.
David Cary

답변:


3

이는 현재 연구 대상이며, 주로 처리량을 최대화하기보다는 전력 사용량을 최소화하는 것이 목표 인 센서 네트워크 영역에서 이루어집니다. 그러나 적응 압축의 원리는 동일합니다.

다음USC 교수 의 최근 논문입니다 .

아마도 그의 알고리즘을 구현할 수 있습니까? 나는 좋은 구현에 관심이 많은 사람들이있을 것이라고 확신합니다.


가능하다면 ... 일반적인 인간의 시간 제약이 여기에 적용되기를 바랍니다. 그래도 나는 그것을 먼저 테스트 할 수 있습니다 ;-) 논문에 대한 링크에 감사드립니다. 관심을 가질만한 다른 사람들을 찾으려고 노력할 것입니다.
liori

2

흠,이 질문은 이제 1 년이 넘었으므로, 이것은 눈에 띄지 않을 수도 있습니다.

어쨌든 Google은 최근 Snappy 를 게시했습니다 .

[...] 최대 압축 또는 다른 압축 라이브러리와의 호환성을 목표로하지 않습니다. 대신, 매우 빠른 속도와 합리적인 압축을 목표로합니다. 예를 들어, 가장 빠른 zlib 모드에 비해 Snappy는 대부분의 입력에서 훨씬 빠르지 만 결과 압축 파일은 20 %에서 100 %까지 커집니다.

C 및 기타 다양한 언어에 사용할 수있는 바인딩으로 C ++로 구현됩니다.


오, 아니, 그것은 적어도 나에 의해 눈에 띄지 않을 것이다 ;-) 그리고 그것은 내가 찾는 의미에서 적응 적이 지 않은 것 같다-그것은 단지 빠르다.
liori
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.