2019-12-26 19:16:36 +00:00
|
|
|
# docker build -t yandex/clickhouse-performance-comparison .
|
2019-12-26 21:33:10 +00:00
|
|
|
FROM ubuntu:18.04
|
2019-12-26 19:16:36 +00:00
|
|
|
|
2020-02-03 14:19:41 +00:00
|
|
|
ENV LANG=C.UTF-8
|
2020-01-16 19:39:07 +00:00
|
|
|
ENV TZ=Europe/Moscow
|
|
|
|
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|
|
|
|
2019-12-26 21:33:10 +00:00
|
|
|
RUN apt-get update \
|
2020-01-14 19:05:58 +00:00
|
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install --yes --no-install-recommends \
|
2020-02-12 16:09:46 +00:00
|
|
|
bash \
|
|
|
|
curl \
|
|
|
|
g++ \
|
2020-04-22 19:41:40 +00:00
|
|
|
gdb \
|
2020-02-12 16:09:46 +00:00
|
|
|
git \
|
2020-06-25 20:19:27 +00:00
|
|
|
gnuplot \
|
|
|
|
imagemagick \
|
2020-02-17 19:32:40 +00:00
|
|
|
libc6-dbg \
|
2020-02-12 16:09:46 +00:00
|
|
|
moreutils \
|
|
|
|
ncdu \
|
2020-07-22 13:18:57 +00:00
|
|
|
numactl \
|
2020-02-12 16:09:46 +00:00
|
|
|
p7zip-full \
|
2020-02-27 19:43:43 +00:00
|
|
|
parallel \
|
2020-02-12 16:09:46 +00:00
|
|
|
psmisc \
|
|
|
|
python3 \
|
|
|
|
python3-dev \
|
|
|
|
python3-pip \
|
2020-02-14 12:55:47 +00:00
|
|
|
rsync \
|
2020-02-12 16:09:46 +00:00
|
|
|
tree \
|
|
|
|
tzdata \
|
|
|
|
vim \
|
|
|
|
wget \
|
2020-09-19 17:32:13 +00:00
|
|
|
&& pip3 --no-cache-dir install clickhouse_driver scipy \
|
2019-12-26 21:33:10 +00:00
|
|
|
&& apt-get purge --yes python3-dev g++ \
|
|
|
|
&& apt-get autoremove --yes \
|
2020-01-10 14:06:07 +00:00
|
|
|
&& apt-get clean \
|
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
2019-12-26 19:16:36 +00:00
|
|
|
|
|
|
|
COPY * /
|
|
|
|
|
2020-10-21 15:21:54 +00:00
|
|
|
# Bind everything to NUMA node #1, if there's more than one. We avoid node #0,
|
|
|
|
# because it is more susceptible to system interruptions. We have to bind both
|
|
|
|
# servers and the tmpfs on which the database is stored. How to do it through
|
|
|
|
# Yandex Sandbox API is unclear, but by default tmpfs uses 'process allocation
|
|
|
|
# policy', not sure which process but hopefully the one that writes to it, so
|
|
|
|
# just bind the downloader script as well.
|
2020-09-30 11:32:49 +00:00
|
|
|
# We could also try to remount it with proper options in Sandbox task.
|
|
|
|
# https://www.kernel.org/doc/Documentation/filesystems/tmpfs.txt
|
2020-10-21 15:21:54 +00:00
|
|
|
CMD ["bash", "-c", "node=$(numactl --hardware | grep -q 'available: 1 nodes' && echo 0 || echo 1); echo Will bind to NUMA node $node; numactl --cpunodebind=$node --membind=$node /entrypoint.sh"]
|
2019-12-26 21:33:10 +00:00
|
|
|
|
2020-01-10 14:06:07 +00:00
|
|
|
# docker run --network=host --volume <workspace>:/workspace --volume=<output>:/output -e PR_TO_TEST=<> -e SHA_TO_TEST=<> yandex/clickhouse-performance-comparison
|
2019-12-26 21:33:10 +00:00
|
|
|
|