mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-12 19:02:12 +00:00
5857a4756dbc27fbf0493780db3010dac9bfc0fd
These patches contain some minor fixes for performance regression reported by perf_fast_forward after partial cache was merged. The solution is still far from perfect, there is one case that still has 30% degradation, but there is some improvement so there is no reason to hold these changes back. Refs #2582. Some numbers: before - before cache changes were merged (555621b537) cache - at the commit that introduced the partial cache (9b21a9bfb6) after - recent master + this series (based one988121dbb) Differences are shown relative to "before". Testing effectiveness of caching of large partition, single-key slicing reads: Large partitions, range [0, 500000], populating cache before cache after 1636840 1013688 1234606 -38% -25% Large partitions, range [0, 500000], reading from cache before cache after 2012615 3076812 3035423 +53% +51% Testing scanning small partitions with skips. reading small partitions (skip 0) before cache after 227060 165261 200639 -27% -11% skipping small partitions (skip 1) before cache after 29813 27312 38210 -8% +28% Testing slicing small partitions: slicing small partitions (offset 0, read 4096) before cache after 195282 149695 180497 -23% -8% * https://github.com/pdziepak/scylla.git perf_fast_forward-regression/v3: sstables: make sure that fill_buffer() actually fills buffer mutation_merger: improve handling of non-deferring fill_buffer()s partition_snapshot_row_cursor: avoid apply() in single-version cases sstables: introduce decorated_key_view ring_position_comparator: accept sstables::decorated_key_view sstable: keep a pre-computed token in summary_entry sstables: cache token in index entries index_reader: advance_and_check_if_present() use index_comparator ring_position_comparator: drop unused overloads cache_streamed_mutation: avoid moving clustering_row streamed_mutation: introduce consume_mutation_fragments_until() cache_streamed_mutation: use consumer based read_context reader rows_entry: make position() inlineable mutation_fragment: make destructor always_inline keys: introduce compound_wrapper::from_exploded_view() sstables: avoid copying key components compound_compat: explode: reserve some elements in a vector cache: short-circut static row logic if there are no static columns cache: use equality comparators instead of tri_compare sstables: avoid indirect calls to abstract_type::is_multi_cell() (cherry picked from commite9fc0b0491)
…
…
…
…
…
…
…
…
…
Scylla
Building Scylla
In addition to required packages by Seastar, the following packages are required by Scylla.
Submodules
Scylla uses submodules, so make sure you pull the submodules first by doing:
git submodule init
git submodule update --init --recursive
Building and Running Scylla on Fedora
- Installing required packages:
sudo dnf install yaml-cpp-devel lz4-devel zlib-devel snappy-devel jsoncpp-devel thrift-devel antlr3-tool antlr3-C++-devel libasan libubsan gcc-c++ gnutls-devel ninja-build ragel libaio-devel cryptopp-devel xfsprogs-devel numactl-devel hwloc-devel libpciaccess-devel libxml2-devel python3-pyparsing lksctp-tools-devel protobuf-devel protobuf-compiler systemd-devel libunwind-devel
- Build Scylla
./configure.py --mode=release --with=scylla --disable-xen
ninja-build build/release/scylla -j2 # you can use more cpus if you have tons of RAM
- Run Scylla
./build/release/scylla
- run Scylla with one CPU and ./tmp as data directory
./build/release/scylla --datadir tmp --commitlog-directory tmp --smp 1
- For more run options:
./build/release/scylla --help
Building Fedora RPM
As a pre-requisite, you need to install Mock on your machine:
# Install mock:
sudo yum install mock
# Add user to the "mock" group:
usermod -a -G mock $USER && newgrp mock
Then, to build an RPM, run:
./dist/redhat/build_rpm.sh
The built RPM is stored in /var/lib/mock/<configuration>/result directory.
For example, on Fedora 21 mock reports the following:
INFO: Done(scylla-server-0.00-1.fc21.src.rpm) Config(default) 20 minutes 7 seconds
INFO: Results and/or logs in: /var/lib/mock/fedora-21-x86_64/result
Building Fedora-based Docker image
Build a Docker image with:
cd dist/docker
docker build -t <image-name> .
Run the image with:
docker run -p $(hostname -i):9042:9042 -i -t <image name>
Contributing to Scylla
Description
Languages
C++
72.5%
Python
26.2%
CMake
0.4%
GAP
0.3%
Shell
0.3%