-
[SPDK] SPDK를 통해 최적화된 RocksDB 설치 및 테스트프로그래밍/DBMS 2018. 10. 1. 14:49
SPDK 설치 및 테스트 SPDK 설치 및 테스트
SPDK 빌드하기
git clone https://github.com/spdk/spdk.git
cd spdk
git checkout v18.07.x
git submodule update --init
sudo scripts/pkgdep.sh
unset PYTHONPATH # if it doesn't work, execute `pip uninstall enum34`
make
./test/unit/unittest.sh # unit test to verify modules
SPDK 공식 깃허브 저장소에서 직접 클로닝 하여 빌드를 하는 과정이다. 이후 진행하는 blobfs 및 rocksdb 테스트를 위하여
v18.07.x
브랜치를 사용하도록 한다. 시간의 경과에 따라 spdk가 업데이트 될 경우 브랜치 이름이 달라지거나,master
브랜치에서 rocksdb를 지원할 수도 있다.git submodule update --init
을 통해서 필요한 라이브러리나 다른 오픈 소스를 다운로드 받고,sudo scripts/pkgdep.sh
를 통해 필요한 패키지 파일들을 내려 받는다.unset PYTHONPATH
는 이후 파이썬을 통한 빌드시 발생할 수 있는 문제를 미리 예방하기 위한 코드이다. 굳이 수행하지 않아도 된다.make
를 통해 빌드를 완료한 뒤./test/unit/unittest.sh
를 통해서 제대로 빌드가 되었는지 확인하도록 하자.SPDK-RocksDB 빌드하기
xxxxxxxxxx
# in the folder different from the above SPDK folder
sudo apt-get install linux-tools-common linux-tools-generic linux-tools-4.15.0-32-generic # to install perf and others, linux version may be different
git clone -b spdk-v5.6.1 https://github.com/spdk/rocksdb.git
cd rocksdb
make db_bench SPDK_DIR=path/to/spdk
첫 줄의
sudo apt-get install
을 통한 패키지 설치는, 향후 rocksdb 실험 시 필요한perf
도구 및 기타 리눅스 도구들을 설치하기 위함이다.SPDK 설치 때와 마찬가지로 공식 spdk 저장소에서 패치된 rocksdb를 클로닝 한뒤 빌드하면 된다.
make
시SPDK_DIR
변수를 통해 SPDK 저장소를 클로닝 한 위치를 지정하면 된다.SPDK-RocksDB 설정하기
xxxxxxxxxx
cd spdk
mkdir -p /usr/local/etc/spdk
cp etc/spdk/rocksdb.conf.in /usr/local/etc/spdk/rocksdb.conf
scripts/gen_nvme.sh >> /usr/local/etc/spdk/rocksdb.conf ## make nvme settings
# and remove unwanted nvme from rocksdb.conf list
sudo HUGEMEM=5120 scripts/setup.sh # test setup HUGEMEM * MB = memory allaction size
sudo test/blobfs/mkfs/mkfs /usr/local/etc/spdk/rocksdb.conf Nvme0n1
SPDK-RocksDB 실행하기
SPDK-RocksDB 설치 이후 rocksdb의 db_bench를 실행하는 방법에는 2가지가 있다.
- 직접 실행하기
- spdk에서 제공하는 스크립트 이용하기
1. db_bench 직접 실행하기
xxxxxxxxxx
cd rocksdb
sudo ./db_bench -spdk /usr/local/etc/spdk/rocksdb.conf -spdk_bdev Nvme0n1 -spdk_cache_size 5120
2. SPDK에서 제공하는 스크립트 이용하기
xxxxxxxxxx
cd spdk
sudo test/blobfs/rocksdb/run_tests.sh {ABSOLUTE_PATH_TO_DB_BENCH}
'프로그래밍 > DBMS' 카테고리의 다른 글
[Redis] Redis Cluster Tutorial (1) 2018.11.02 [Redis] 레디스 데이터 파티셔닝하기 (0) 2018.10.02 [Redis] Redis를 LRU 캐시로 사용하기 (1) 2018.10.01 [RocksDB] Write Stall (0) 2018.05.03 [RocksDB] IO (0) 2018.04.03