kvssd quick start guide

한빈수윤·2025년 2월 11일

system

목록 보기
2/5

참고자료

🔗

KVSSD_5.10.37/KVSSD_QUICK_START_GUIDE_1.2.0.pdf at master · snu-csl/KVSSD_5.10.37


  1. kvssd 소프트웨어의 구성

API Library (API 라이브러리)

  • 설명: API 라이브러리는 개발자들이 KV SSD와 상호작용할 수 있는 함수나 명령어를 제공하는 소프트웨어 구성 요소입니다. 이 라이브러리를 통해 개발자는 KV SSD의 저장 기능을 활용하거나 데이터를 삽입, 삭제, 검색하는 등의 작업을 수행할 수 있습니다.
  • 역할: KV SSD의 기능을 손쉽게 사용할 수 있도록 인터페이스를 제공하여, 복잡한 하드웨어 제어 없이 간편하게 키-값 데이터 저장을 구현할 수 있습니다.

Emulator (에뮬레이터)

  • 설명: 에뮬레이터는 실제 KV SSD 하드웨어 없이도 KV SSD가 어떻게 동작하는지 모방하여 테스트할 수 있는 소프트웨어 도구입니다. 개발자는 KV SSD가 없는 환경에서도 에뮬레이터를 사용해 소프트웨어를 개발하고 테스트할 수 있습니다.

  • 역할: 하드웨어가 없을 때도 개발 및 테스트가 가능하도록 지원하며, 하드웨어 도입 전에 성능을 평가하거나 검증하는 데 유용합니다. 다만, 실제 제품과의 성능 차이가 있을 수 있습니다.

    Kernel Device Driver (커널 디바이스 드라이버)

  • 설명: 커널 디바이스 드라이버는 운영체제 커널과 KV SSD 하드웨어 간의 소통을 담당하는 소프트웨어입니다. 이 드라이버는 운영체제에서 KV SSD를 인식하고, 데이터 전송이나 하드웨어 제어 등의 작업을 수행할 수 있도록 돕습니다.

  • 역할: 운영체제에서 KV SSD를 블록 디바이스처럼 인식하게 하여, 시스템이 키-값 저장소를 원활하게 사용할 수 있도록 지원합니다.

kvbench

  • 설명: kvbench는 KV SSD의 성능을 평가하기 위한 벤치마크 도구입니다. 이 도구를 사용하면 KV SSD의 읽기, 쓰기, 삭제 성능 등을 테스트하고, 다양한 작업 부하에서의 성능을 측정할 수 있습니다.
  • 역할: KV SSD의 성능을 객관적으로 평가하여, 애플리케이션이 필요한 성능 요구 사항을 충족하는지 확인하는 데 사용됩니다. 또한 RocksDB, Aerospike와 같은 애플리케이션의 블록 디바이스에서의 성능도 평가할 수 있습니다.

  1. kvssd host software

위 그림과 같은 구조로 kvssd 소프트웨어 패키지가 구성

  • platform development kit(pdk)

(1) kv api

user와 kvssd와 소통할 수 있게 해주는 인터페이스

/KVSSD/PDK/core

(2) install dependencies

KV API를 설치하기 위해 필요한 의존성 패키지들은 다음 스크립트를 실행하여 설치

KVSSD/PDK/core/tools/install_deps.sh
  • kerner device driver

KV SSD와 통신하기 위해 커널 장치 드라이버(KDD)를 설치하고, KDD 옵션을 사용하여 KV API를 컴파일해야 합니다. 이를 위해 다음 단계들을 수행.

(1) KV SSD용 NVMe 모듈 컴파일 및 설치

cd KVSSD/PDK/driver/PCIe/kernel_driver/kernel_v<version>/
     make clean
     make all
     sudo ./re_insmod

(2)KDD 옵션을 사용하여 KV API 컴파일

cd KVSSD/PDK/core
     mkdir build && cd build
     cmake -DWITH_KDD=ON ../
     make -j24

(3)샘플 코드 테스트

(n,q,o,k,v,p)의미 찾아보기!

./sample_test -d /dev/nvme0n1 -n 1000 -q 64 -o 1 -k 16 -v 4096 -p 1
  • user space device driver

사용자가 User Space Device Driver(UDD)를 사용하려면 사용자 드라이버를 컴파일하고 KV API를 UDD 옵션으로 컴파일

(1) compile spkd udd

  git clone https://github.com/OpenMPDK/uNVMe.git
   cd uNVMe
   make intel
   cd uNVMe/driver/core
   make clean && make
   cp uNVMe/driver/core/libkvnvmedd.a KVSSD/PDK/core/lib

(2) compile kv api with user space driver option

cd KVSSD/PDK/core
   mkdir build && cd build
   cmake -DWITH_SPDK=ON ../
   make -j24

(3) sample code test

샘플 코드 테스트한다.

  • emulator

(1)compile kv api with emu option

cd KVSSD/PDK/core
mkdir build && cd build
cmake -DWITH_EMU=ON ../
make -j24

(2)sample code test


  1. kv ssd benchmark suite

KVbench는 임베디드 키-밸류 저장 엔진을 위한 벤치마크 스위트로, 단순한 읽기/쓰기 작업 대신 복잡한 워크로드 생성에 기반한 더 현실적인 테스트를 수행. 이 툴은 ForestDB 벤치마크 툴에 기반하며, KV SSD API 지원 확장이 포함

  • rocksdb on linux filesystem

(1) build rocksdb from source code

  cd rocksdb
  make static_lib

(2)build rocksdb bench

  cd kvbench
  mkdir build_rxdb && cd build_rxdb
  cmake -DCMAKE_INCLUDE_PATH=<YOUR ROCKSDB HEADER FILE DIR> -DCMAKE_LIBRARY_PATH=<YOUR ROCKSDB LIB FILE DIR> ../
  make rocksdb_bench
  • rocksdb on spdk

인텔 SPDK와 RocksDB(SPDK)의 소스 코드가 kvbench 패키지에 포함되어 있으며, 이를 기반으로 RocksDB를 SPDK 환경에서 설정가능

(1) SPDK library 빌드

cd kvbench/spdk/spdk
./configure
make
cd ../

(2) SPDK에서 rocksDB 빌드

cd kvbench/spdk/rocksdb
make static_lib
cd ../../

(3)blobfs_rocksdb_bench 빌드

cd kvbench
mkdir build_spdk && cd build_spdk
cmake ../
make blobfs_rocksdb_bench
  • KV Stack on KV SSD (Direct operation to KV SSD)

(1)kvapi 라이브러리 다운로드 및 빌드

(2)kv_bench 빌드

cd kvbench
mkdir build_kv && cd build_kv
cmake -DCMAKE_INCLUDE_PATH=/KVSSD/PDK/core/include -DCMAKE_LIBRARY_PATH=/KVSSD/PDK/core/build ../
make kv_bench
  • Aerospike

(1) Aerospike 서버 다운로드 및 설치

(2) as_bench 빌드

cd kvbench
mkdir build_as && cd build_as
cmake ../
make as_bench
  • benchmark run

(1)처음으로 CPU 구성 파일 생성 및 수정

LD_LIBRARY_PATH= ./kv_bench -c

이 명령어는 기본 cpu.txt 파일을 생성하며, 필요시 nodeid, coreid, deviceid 매핑을 수정할 수 있습니다.

cpu.txt파일은 동일한 시스템에서 한 번만 생성하면 되며, 이후 모든 테스트에서 사용할 수 있습니다. 생성된cpu.txt 파일을 다른 빌드 디렉토리 (as_bench build_as` 등)로 복사할 수 있습니다.

(2)bench_config.ini 수정

(3)환경설정

  • RocksDB on Linux filesystem: 파일 시스템이 생성되고 마운트되어야 합니다.
  • RocksDB on SPDK: SPDK 환경이 설정되어야 합니다.
  • KV Stack on KV SSD: 드라이버 환경이 설정되어야 합니다. 자세한 사항은 섹션 3.1을 참조합니다.
  • Aerospike: Aerospike 서비스가 시작되어야 합니다.

(4) 벤치마크 실행

profile
버거운 컴공 적응기>**<^*^##

0개의 댓글