참고자료
🔗KVSSD_5.10.37/KVSSD_QUICK_START_GUIDE_1.2.0.pdf at master · snu-csl/KVSSD_5.10.37

설명: 에뮬레이터는 실제 KV SSD 하드웨어 없이도 KV SSD가 어떻게 동작하는지 모방하여 테스트할 수 있는 소프트웨어 도구입니다. 개발자는 KV SSD가 없는 환경에서도 에뮬레이터를 사용해 소프트웨어를 개발하고 테스트할 수 있습니다.
역할: 하드웨어가 없을 때도 개발 및 테스트가 가능하도록 지원하며, 하드웨어 도입 전에 성능을 평가하거나 검증하는 데 유용합니다. 다만, 실제 제품과의 성능 차이가 있을 수 있습니다.
Kernel Device Driver (커널 디바이스 드라이버)
설명: 커널 디바이스 드라이버는 운영체제 커널과 KV SSD 하드웨어 간의 소통을 담당하는 소프트웨어입니다. 이 드라이버는 운영체제에서 KV SSD를 인식하고, 데이터 전송이나 하드웨어 제어 등의 작업을 수행할 수 있도록 돕습니다.
역할: 운영체제에서 KV SSD를 블록 디바이스처럼 인식하게 하여, 시스템이 키-값 저장소를 원활하게 사용할 수 있도록 지원합니다.

위 그림과 같은 구조로 kvssd 소프트웨어 패키지가 구성
(1) kv api
user와 kvssd와 소통할 수 있게 해주는 인터페이스
/KVSSD/PDK/core
(2) install dependencies
KV API를 설치하기 위해 필요한 의존성 패키지들은 다음 스크립트를 실행하여 설치
KVSSD/PDK/core/tools/install_deps.sh
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(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
샘플 코드 테스트한다.
(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
KVbench는 임베디드 키-밸류 저장 엔진을 위한 벤치마크 스위트로, 단순한 읽기/쓰기 작업 대신 복잡한 워크로드 생성에 기반한 더 현실적인 테스트를 수행. 이 툴은 ForestDB 벤치마크 툴에 기반하며, KV SSD API 지원 확장이 포함
(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
인텔 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
(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
(1) Aerospike 서버 다운로드 및 설치
(2) as_bench 빌드
cd kvbench
mkdir build_as && cd build_as
cmake ../
make as_bench
(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)환경설정
(4) 벤치마크 실행