TailBench Build

TailBench는 latency-critical 어플리케이션을 모아둔 벤치마크이다. TailBench에서는 xapian, masstree, moses, sphinx, img-dnn, specjbb, silo, shore 워크로드를 제공한다.

필요한 패키지 목록은 다음과 같다. 이 중에는 불필요한 것도 있을 수 있다.

apt -y install uuid-dev libssl-dev libaio-dev google-perftools libboost-all-dev libboost-dev libboost-test-dev openjdk-7-jdk libjemalloc-dev libnuma-dev libpthread-stubs0-dev libxapian-dev libreadline-dev libdb5.3-dev libdb5.3++-dev libgtop2-dev libopencv-dev autoconf libncurses-dev ant libtool swig bison libbz2-dev git autoconf libgtop2-dev libreadline6 libreadline6-dev libncurses-dev libjemalloc-dev libdb++-dev libaio1 libssl-dev libcrypto++-dev python-dev swig python-numpy python-scipy

config.sh와 Makefile.config을 수정한다.

#config.sh
# Set this to point to the top level of the TailBench data directory
DATA_ROOT=/root/tailbench.inputs/

# Set this to point to the top level installation directory of the Java
# Development Kit. Only needed for Specjbb
JDK_PATH=/usr/lib/jvm/java-7-openjdk-amd64/

# This location is used by applications to store scratch data during execution.
SCRATCH_DIR=/tmp/
#Makefile.config
JDK_PATH=/usr/lib/jvm/java-7-openjdk-amd64/

masstree에서는 개별 디렉토리 내에서 ./configure 실행 후 make 하니 잘 되었다.

shore의 경우에는 ./shore/shore-mt 디렉토리에서 빌드하고 ./shore/shore-kit에서 빌드하는 순서로 빌드하면 되었다. 그리고 run.sh의 내용을 간단히 수정해주어야 한다. SCRATCH_DIR=/doesnotexist를 SCRATCH_DIR=/tmp로 수정해주었다.

silo에서는 Makefile에서 -Wall 옵션을 제거해주어야 했다.

sphinx에서는 Makefile의 43번째 줄에서 LDFLAGS 앞에 공백을 주어야 한다(버그). sphinx 빌드를 위해서는 관련 라이브러리인 sphinxbase, pocketsphinx를 설치해야 한다.

xapian에서는 Makefile에서 XAPIAN_INSTALL_PATH를 삭제해야 한다. xapian 디렉토리에 xapian-core가 있는데, 이를 설치하고, 그대로 사용하도록 Makefile을 수정하는 것이 낫다.

수정 이전

XAPIAN_INSTALL_PATH = ./xapian-core-1.2.13/install/bin
CXXFLAGS = -Wall -W -O3 -g -std=c++0x `$(XAPIAN_INSTALL_PATH)/xapian-config --cxxflags` -I$(TBENCH_PATH)
LIBS = `$(XAPIAN_INSTALL_PATH)/xapian-config --libs` -lpthread -lrt

수정 이후

CXXFLAGS = -Wall -W -O3 -g -std=c++0x `xapian-config --cxxflags` -I$(TBENCH_PATH)
LIBS = `xapian-config --libs` -lpthread -lrt

TailBench의 실행에는 입력 데이터 셋이 필요하고, 입력 데이터 셋은 어딘가에 저장된 이후에 그 경로를 configs.sh에 반영해야 한다 (DATA_ROOT). TailBench 실행에는 각 디렉토리 아래의 run.sh을 사용하면 되고, 실행이 끝나면 lats.bin이 생성된다. 이 바이너리는 튜플을 가진 파일이며, ./utilities/parselats.py를 사용해 그 결과를 확인할 수 있다.

Advertisements
Posted in 2) Computer Engineering

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 98,847 hits
%d bloggers like this: