DedupBench Logo
<h2 align="center">데이터 중복 제거를 위한 청킹 기법 벤치마킹</h2>
<h3 align="center">
<a href="#-quick-start-guide"> 🚀 빠른 시작 가이드</a> | <a href="#news">⭐ 뉴스</a> | <a href="#-research-papers"> 🔖 인용하기 (Cite us) </a> | <a href="https://www.kaggle.com/datasets/sreeharshau/vm-deb-fast25"> 💾 VM 이미지 데이터셋 </a> | <a href="#faq">❓ FAQ </a> | <a href="#️-people"> 💂♂️ 참여자 </a>
</h3
Build
🎉 소개 (Introduction)
DedupBench는 데이터 중복 제거(data deduplication)에 사용되는 데이터 청킹 기법을 위한 벤치마킹 도구입니다. 확장성을 염두에 두고 설계되어, 최소한의 추가 코드로 새로운 청킹 및 지문 인식(fingerprinting) 기법을 구현할 수 있습니다. DedupBench는 모든 데이터셋과 함께 사용하도록 설계되었으며, 사용자 지정 데이터에서 대량의 청킹 기법을 신속하게 비교할 수 있게 합니다.
현재 11가지의 다른 청킹 알고리즘과 6가지의 다른 지문 인식 알고리즘을 지원합니다. 이 알고리즘들에 대해 Intel, AMD, ARM, 그리고 IBM CPU에서 다섯 가지 다른 벡터 명령어 세트를 사용하여 VectorCDC를 통해 SIMD 가속(SIMD acceleration)을 지원합니다.
다음은 현재 DedupBench가 지원하는 청킹 기법 및 벡터 명령어 세트입니다.
| CDC 알고리즘 | 링크 | 비가속화 (Unaccelerated) | SSE-128 | AVX-256 | AVX-512 | NEON-128 (ARM) | VSX-128 (IBM) |
|---|
| AE-Max | Paper | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| ... | | | | | | | |
⭐뉴스
- 2026년 1월: Intel, AMD, ARM 및 IBM CPU에서 상세한 VectorCDC 평가를 ACM Transactions on Storage에 발표했습니다.
- 2025년 8월: ARM / IBM 벡터 가속 지원, xxHash 호환성 및 기타 기능을 포함한 DedupBench v2.0을 출시했습니다!
- 2025년 2월: VectorCDC가 FAST에 게재되었습니다!
- 2025년 1월: Kaggle에 DEB 데이터셋을 출시했습니다.
🚀 빠른 시작 가이드
빠르게 시작하려면 Ubuntu에서 다음 명령어를 실행하십시오:
- 저장소를 클론하고 SIMD 가속이 없는 기본적인 빌드를 선택합니다.
- 평균 청크 크기 8KB 및 비가속화 알고리즘을 사용하여 사전 구성된 실행을 수행합니다.
cd build/
./dedup_script.sh -c unaccelerated_8kb random_dataset
python3 plot_results.py results.txt
이렇게 하면 아래와 유사한 제목의 그래프 _results_graph.png_가 생성되어야 합니다. 기본 실행이 무작위 데이터셋을 사용하기 때문에 모든 알고리즘에 대해 공간 절약량은 0일 것입니다.
실제 데이터셋을 사용하여 작동 모습을 확인하고 아래 그래프를 생성하려면, 💾 VM 이미지 데이터셋에서 Middleware 2024 / FAST 2025 논문에서 사용된 DEB 데이터셋을 다운로드하여 사용하십시오. 이 그래프는 AMD EPYC Rome 머신에서 가져온 것입니다.
DEB-dataset results
⚡ DedupBench SIMD 빌드
벡터 가속화된 CDC 알고리즘을 사용하려면 대체 Dedupbench 빌드가 필요합니다. install.sh를 실행할 때 적절한 SIMD 빌드를 선택하거나 아래의 수동 명령어를 사용하십시오. 편의를 위해 모든 알고리즘에 대해 8KB 청크 크기로 사전 구성된 파일을 제공했습니다.
주의: 잘못된 옵션(예: AVX-256을 지원하지 않는 장치에서의 AVX-256 빌드)으로 빌드할 경우 컴파일/런타임 오류가 발생할 수 있습니다.
🔥 SSE/AVX-256 가속화
이 빌드는 올바르게 작동하려면 AVX-256과 호환되는 CPU가 필요합니다.
cd build/
make clean
make simd_all
...
🌀 AVX-512 가속화
이 빌드는 올바르게 작동하려면 AVX-512과 호환되는 CPU가 필요합니다.
cd build/
make clean
make simd512_all
...
🚴 기본 비가속 빌드
이 비가속 빌드는 CPU 성능에 관계없이 모든 장치에서 작동해야 합니다.
cd build/
make clean
make
...
🔨 ARM / IBM용 대체 빌드
이곳에서 설정 파일 예시를 제공하지 않았다는 점에 유의하십시오. ❓FAQ의 사용자 지정 실행 섹션을 참조해 주십시오.
NEON-128 명령어 사용 ARM
cd build/
make clean
make arm_neon128
VSX-128 / AltiVec 명령어 사용 IBM
cd build/
make clean
make ibm_altivec128
🔖 연구 논문
이 저장소의 코드를 사용하는 경우 이 목록에서 관련 출판물을 인용해 주십시오.
벡터화된 알고리즘 / DEB 데이터셋
[1] Udayashankar, S., Baba, A., & Al-Kiswany, S. (2025년 2월). VectorCDC: 벡터 명령어(Vector Instructions)를 사용한 데이터 중복 제거 가속화. 23rd USENIX Conference on File and Storage Technologies (FAST 25)에 게재됨 (pp. 513-522).
[2] Udayashankar, S., Baba, A., Al-Kiswany, S. (2026년 2월). 벡터 명령어를 사용한 중복 제거 시스템의 데이터 청킹 가속화. ACM Transactions on Storage에 게재됨. https://doi.org/10.1145/3797270.
SeqCDC
[1] Udayashankar, S., Baba, A., & Al-Kiswany, S. (2024년 12월). Seqcdc: 데이터 중복 제거를 위한 해시리스(Hashless) 콘텐츠 정의 청킹(content-defined chunking). Proceedings of the 25th International Middleware Conference에 게재됨 (pp. 292-298).
[2] Udayashankar, S., Mahmoud, A.A., & Al-Kiswany, S. (2026년 2월). 데이터 중복 제거를 위한 벡터화된 시퀀스 기반 청킹(Vectorized Sequence-Based Chunking). IEEE Transactions on Parallel and Distributed Systems, vol. 37, no. 4, pp. 934-947, doi: 10.1109/TPDS.2026.3660793.
낮은 엔트로피 분석 (Low Entropy Analysis)
[1] Jarah, MA., Udayashankar, S., Baba, A., & Al-Kiswany, S. (2024년 7월). 데이터 중복 제거를 위한 청킹 기법에 대한 낮은 엔트로피의 영향. 2024 IEEE 17th International Conference on Cloud Computing (CLOUD)에 게재됨 (pp. 134-140). IEEE.
DedupBench 원본 논문
[1] Liu, A., Baba, A., Udayashankar, S., & Al-Kiswany, S. (2023년 9월). Dedupbench: 데이터 청킹 기법을 위한 벤치마킹 도구. 2023 IEEE Canadian Conference on Electrical and Computer Engineering (CCECE)에 게재됨 (pp. 469-474). IEEE.
💂♂️ 관련 인물(People)
추가 정보가 필요하시면 다음 이메일 주소로 문의해 주세요:
❓자주 묻는 질문 (FAQ)
Paper X의 실험을 어떻게 실행하나요?
저희 논문에서 사용된 실험들을 위한 설정 파일은 build/ 디렉터리에 제공됩니다. 올바른 설정을 사용하여 dedup_script를 이용할 수 있습니다.
./dedup_script.sh -c 8kb_fast25 <path-to-dataset>
python3 plot_results.py results.txt
사용자 정의 기법/청크 크기는 어떻게 실행하나요?
config.txt를 수정하여 필요한 청킹(chunking) 기법, 해싱(hashing) 기법 및 청크 크기를 선택합니다.
- dedup-bench 바이너리를 직접 실행합니다. 이때 전달해야 할 경로는 모든 데이터셋 파일이 포함된 디렉터리이며, 결과는
hash.out 파일에 생성됩니다. 처리량(Throughput)과 평균 청크 크기(avg chunk size)는 표준 출력(stdout)으로 표시됩니다.
./dedup.exe <path_to_random_dataset_dir> config.txt
- 공간 절감량을 측정합니다. 무작위 데이터셋을 사용하는 경우 공간 절감량은 0이 된다는 점에 유의하십시오.
./measure-dedup.exe hash.out
커스텀 실행을 위해 config.txt를 수정하는 방법은 무엇인가요?
청킹 기법 (CDC 알고리즘)
설정 파일의 chunking_algo 매개변수를 편집해야 CDC 기법을 전환할 수 있다는 점에 유의하십시오.
| 청킹 기법 | chunking_algo |
|---|
| AE | ae |
| ... | |
chunking_algo를 선택한 후에는 해당 매개변수(예: 청크 크기)를 확인하고 조정해야 합니다. 참고로, 각 chunking_algo는 설정 파일 내에 별도의 매개변수 섹션을 가지고 있습니다. 예를 들어, SeqCDC의 최소 및 최대 청크 크기는 각각 seq_min_block_size와 seq_max_block_size라고 불립니다.
SSE / AVX 가속
사용할 SIMD(Single Instruction Multiple Data) 가속을 변경하려면 simd_mode를 다음 값 중 하나로 변경하십시오:
| SIMD 모드 | simd_mode |
|---|
| SSE128 | sse128 |
| ... | |
현재 RAM, AE, MAXP만 SSE/AVX 가속을 지원한다는 점에 유의하십시오. avx512 모드를 사용하려면 dedup-bench가 AVX-512 지원으로 컴파일되어야 합니다.
해싱 기법(Hashing Techniques)
DedupBench에서 현재 지원하는 해싱 기법은 다음과 같습니다. 설정 파일의 hashing_algo 매개변수를 편집해야 기법을 전환할 수 있다는 점에 유의하십시오.
| 해싱 기법 | hashing_algo |
|---|
| MD5 | md5 |
| ... | xxhash128 (128비트) |
DedupBench 2023 논문에서 VM 데이터셋은 어디에 사용되었나요?
이것은 💾 VM Images Dataset과 동일하지 않으며, 그 부분집합입니다. CCECE 2023에서 원래 DedupBench 논문에 사용된 Bitnami의 이미지는 다음과 같습니다:
이미지 URL
https://marketplace.cloud.vmware.com/services/details/tomcatstack?slug=true
https://marketplace.cloud.vmware.com/services/details/mysql?slug=true
https://marketplace.cloud.vmware.com/services/details/rubystack?slug=true
...
다음 이미지들도 논문에 사용되었으나, 2024년 9월 현재는 사용할 수 없습니다.
https://marketplace.cloud.vmware.com/services/details/phplist?slug=true
https://marketplace.cloud.vmware.com/services/details/seopanel?slug=true
https://marketplace.cloud.vmware.com/services/details/publify?slug=true
...
SeqCDC의 적절한 매개변수 값을 어떻게 알아낼 수 있나요?
supporting_tools/seqcdc-parameter-search/README.md에 상세한 매개변수 검색 절차를 추가했습니다. 관련 스크립트는 같은 디렉토리에서 찾을 수 있습니다.