mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-03 13:37:04 +00:00
e9fc0b04913e371e3efc8c447692ca968d56d780
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()
…
…
…
…
…
…
…
…
…
Scylla
Quick-start
$ git submodule update --init --recursive
$ sudo ./install-dependencies.sh
$ ./configure.py --mode=release
$ ninja-build -j4 # Assuming 4 system threads.
$ ./build/release/scylla
$ # Rejoice!
Please see HACKING.md for detailed information on building and developing Scylla.
Running Scylla
- 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.2%
Python
26.6%
CMake
0.3%
GAP
0.3%
Shell
0.3%