diff --git a/cedardb-parquet/benchmark.sh b/cedardb-parquet/benchmark.sh index b278e4052..f8f3eb178 100755 --- a/cedardb-parquet/benchmark.sh +++ b/cedardb-parquet/benchmark.sh @@ -2,4 +2,8 @@ # Thin shim — actual flow is in lib/benchmark-common.sh. export BENCH_DOWNLOAD_SCRIPT="download-hits-parquet-single" export BENCH_DURABLE=yes +export PGHOST="/tmp" +export PGUSER=postgres +export PGDATABASE=postgres + exec ../lib/benchmark-common.sh diff --git a/cedardb-parquet/check b/cedardb-parquet/check index f161a0820..1ff9f1a6d 100755 --- a/cedardb-parquet/check +++ b/cedardb-parquet/check @@ -1,4 +1,4 @@ #!/bin/bash set -e -PGPASSWORD=test psql -h localhost -U postgres -c 'SELECT 1' >/dev/null +psql -c 'SELECT 1' >/dev/null diff --git a/cedardb-parquet/create.sql b/cedardb-parquet/create.sql index d9cdd6cdd..9c4a44cd7 100644 --- a/cedardb-parquet/create.sql +++ b/cedardb-parquet/create.sql @@ -105,4 +105,4 @@ SELECT "RefererHash" AS RefererHash, "URLHash" AS URLHash, "CLID" AS CLID -FROM '/data/hits.parquet'; +FROM 'hits.parquet'; diff --git a/cedardb-parquet/data-size b/cedardb-parquet/data-size index 7a49e4474..9a5cea290 100755 --- a/cedardb-parquet/data-size +++ b/cedardb-parquet/data-size @@ -2,4 +2,4 @@ set -eu # No ingestion — reported size is the parquet file itself. -stat -c%s data/hits.parquet +stat -c%s hits.parquet diff --git a/cedardb-parquet/install b/cedardb-parquet/install index 2c6f09a04..5a2497e79 100755 --- a/cedardb-parquet/install +++ b/cedardb-parquet/install @@ -2,9 +2,15 @@ set -eu sudo apt-get update -y -sudo apt-get install -y docker.io postgresql-client +sudo apt-get install -y postgresql-client -sudo docker pull cedardb/cedardb:latest +# Stop any running instance before reinstalling +./stop || true -mkdir -p data db -chmod -R 777 data db +# Delete potential previously created database +rm -rf ./db + +curl https://get.cedardb.com | bash -s -- -y \ + --install-dir "$PWD" \ + --db-dir "$PWD/db" \ + --with-systemd=system diff --git a/cedardb-parquet/load b/cedardb-parquet/load index ee17527ef..4850506bd 100755 --- a/cedardb-parquet/load +++ b/cedardb-parquet/load @@ -1,12 +1,8 @@ #!/bin/bash set -eu -# Stage parquet file under ./data so the docker container sees /data/hits.parquet. -mkdir -p data -mv hits.parquet data/ -chmod -R 777 data - -# create.sql defines a view over the parquet file — no ingestion needed. -PGPASSWORD=test psql -h localhost -U postgres -t < create.sql +# Substitute the absolute path so CedarDB can find the file regardless of +# its working directory. +sed "s|'hits\.parquet'|'$PWD/hits.parquet'|" create.sql | psql sync diff --git a/cedardb-parquet/query b/cedardb-parquet/query index 3261388dc..ebb3c2d49 100755 --- a/cedardb-parquet/query +++ b/cedardb-parquet/query @@ -8,7 +8,7 @@ set -e query=$(cat) -raw=$(PGPASSWORD=test psql -h localhost -U postgres -t -c '\timing' -c "$query" 2>&1) && exit_code=0 || exit_code=$? +raw=$(psql -t -c '\timing' -c "$query" 2>&1) && exit_code=0 || exit_code=$? if [ "$exit_code" -ne 0 ] || printf '%s\n' "$raw" | grep -qE '^ERROR|psql: error'; then printf '%s\n' "$raw" >&2 diff --git a/cedardb-parquet/start b/cedardb-parquet/start index ad1d71439..c11e05a5c 100755 --- a/cedardb-parquet/start +++ b/cedardb-parquet/start @@ -1,19 +1,4 @@ #!/bin/bash set -eu -if PGPASSWORD=test psql -h localhost -U postgres -c 'SELECT 1' >/dev/null 2>&1; then - exit 0 -fi - -sudo docker stop cedardb >/dev/null 2>&1 || true -sudo docker rm cedardb >/dev/null 2>&1 || true - -sudo docker run -d --rm -p 5432:5432 \ - -v "$(pwd)/data:/data" \ - -v "$(pwd)/db:/var/lib/cedardb/data" \ - -e CEDAR_PASSWORD=test \ - --name cedardb cedardb/cedardb:latest >/dev/null - -until pg_isready -h localhost --dbname postgres -U postgres >/dev/null 2>&1; do - sleep 1 -done +sudo systemctl start cedardb.service diff --git a/cedardb-parquet/stop b/cedardb-parquet/stop index 5d6ade0a8..0e5725506 100755 --- a/cedardb-parquet/stop +++ b/cedardb-parquet/stop @@ -1,3 +1,3 @@ #!/bin/bash -sudo docker stop cedardb >/dev/null 2>&1 || true +sudo systemctl stop cedardb.service || true diff --git a/cedardb/benchmark.sh b/cedardb/benchmark.sh index 432bd3ae1..f8f3eb178 100755 --- a/cedardb/benchmark.sh +++ b/cedardb/benchmark.sh @@ -1,5 +1,9 @@ #!/bin/bash # Thin shim — actual flow is in lib/benchmark-common.sh. -export BENCH_DOWNLOAD_SCRIPT="download-hits-tsv" +export BENCH_DOWNLOAD_SCRIPT="download-hits-parquet-single" export BENCH_DURABLE=yes +export PGHOST="/tmp" +export PGUSER=postgres +export PGDATABASE=postgres + exec ../lib/benchmark-common.sh diff --git a/cedardb/check b/cedardb/check index f161a0820..1ff9f1a6d 100755 --- a/cedardb/check +++ b/cedardb/check @@ -1,4 +1,4 @@ #!/bin/bash set -e -PGPASSWORD=test psql -h localhost -U postgres -c 'SELECT 1' >/dev/null +psql -c 'SELECT 1' >/dev/null diff --git a/cedardb/create.sql b/cedardb/create.sql index 832d6e8e0..dc1be2024 100644 --- a/cedardb/create.sql +++ b/cedardb/create.sql @@ -103,7 +103,6 @@ create table hits ( hasgclid smallint not null, refererhash bigint not null, urlhash bigint not null, - clid integer not null, - primary key (counterid, eventdate, userid, eventtime, watchid) + clid integer not null ); diff --git a/cedardb/data-size b/cedardb/data-size index da53638e4..cbc6252fd 100755 --- a/cedardb/data-size +++ b/cedardb/data-size @@ -1,4 +1,4 @@ #!/bin/bash set -eu -PGPASSWORD=test psql -h localhost -U postgres -q -t -A -c "SELECT pg_total_relation_size('hits');" +psql -q -t -A -c "SELECT pg_total_relation_size('hits');" diff --git a/cedardb/install b/cedardb/install index 0043c4c84..86bbee2a6 100755 --- a/cedardb/install +++ b/cedardb/install @@ -2,9 +2,15 @@ set -eu sudo apt-get update -y -sudo apt-get install -y docker.io postgresql-client gzip +sudo apt-get install -y postgresql-client -sudo docker pull cedardb/cedardb:latest +# Stop any running instance before reinstalling +./stop || true -mkdir -p data db -chmod -R 777 data db +# Delete potential previously created database +rm -rf ./db + +curl https://get.cedardb.com | bash -s -- -y \ + --install-dir "$PWD" \ + --db-dir "$PWD/db" \ + --with-systemd=system \ No newline at end of file diff --git a/cedardb/load b/cedardb/load index eeb6fd3a7..1651aaba2 100755 --- a/cedardb/load +++ b/cedardb/load @@ -1,13 +1,12 @@ #!/bin/bash set -eu -mkdir -p data -mv hits.tsv data/ -chmod -R 777 data - -PGPASSWORD=test psql -h localhost -U postgres -t < create.sql - -PGPASSWORD=test psql -h localhost -U postgres -q -t -c "COPY hits FROM '/data/hits.tsv';" - -rm -f data/hits.tsv +psql -f create.sql +{ + # CedarDB would like to have ~4 GB of memory per parallel worker for parquet import to be efficient, so set the number of workers accordingly. + echo "SET debug.parallel = $(( $(grep MemTotal /proc/meminfo | awk '{print $2}') / (4 * 1024 * 1024) ));" + sed "s|'hits\.parquet'|'$PWD/hits.parquet'|" load.sql +} | psql + +rm -f hits.parquet sync diff --git a/cedardb/load.sql b/cedardb/load.sql new file mode 100644 index 000000000..c3a38cf89 --- /dev/null +++ b/cedardb/load.sql @@ -0,0 +1,107 @@ +INSERT INTO hits SELECT +"WatchID", +"JavaEnable", +"Title", +"GoodEvent", +to_timestamp("EventTime") as "EventTime", +('1970-01-01'::date + "EventDate"::integer) as "EventDate", +"CounterID", +"ClientIP", +"RegionID", +"UserID", +"CounterClass", +"OS", +"UserAgent", +"URL", +"Referer", +"IsRefresh", +"RefererCategoryID", +"RefererRegionID", +"URLCategoryID", +"URLRegionID", +"ResolutionWidth", +"ResolutionHeight", +"ResolutionDepth", +"FlashMajor", +"FlashMinor", +"FlashMinor2", +"NetMajor", +"NetMinor", +"UserAgentMajor", +"UserAgentMinor", +"CookieEnable", +"JavascriptEnable", +"IsMobile", +"MobilePhone", +"MobilePhoneModel", +"Params", +"IPNetworkID", +"TraficSourceID", +"SearchEngineID", +"SearchPhrase", +"AdvEngineID", +"IsArtifical", +"WindowClientWidth", +"WindowClientHeight", +"ClientTimeZone", +to_timestamp("ClientEventTime") as "ClientEventTime", +"SilverlightVersion1", +"SilverlightVersion2", +"SilverlightVersion3", +"SilverlightVersion4", +"PageCharset", +"CodeVersion", +"IsLink", +"IsDownload", +"IsNotBounce", +"FUniqID", +"OriginalURL", +"HID", +"IsOldCounter", +"IsEvent", +"IsParameter", +"DontCountHits", +"WithHash", +"HitColor", +to_timestamp("LocalEventTime") as "LocalEventTime", +"Age", +"Sex", +"Income", +"Interests", +"Robotness", +"RemoteIP", +"WindowName", +"OpenerName", +"HistoryLength", +"BrowserLanguage", +"BrowserCountry", +"SocialNetwork", +"SocialAction", +"HTTPError", +"SendTiming", +"DNSTiming", +"ConnectTiming", +"ResponseStartTiming", +"ResponseEndTiming", +"FetchTiming", +"SocialSourceNetworkID", +"SocialSourcePage", +"ParamPrice", +"ParamOrderID", +"ParamCurrency", +"ParamCurrencyID", +"OpenstatServiceName", +"OpenstatCampaignID", +"OpenstatAdID", +"OpenstatSourceID", +"UTMSource", +"UTMMedium", +"UTMCampaign", +"UTMContent", +"UTMTerm", +"FromTag", +"HasGCLID", +"RefererHash", +"URLHash", +"CLID" +FROM 'hits.parquet'; diff --git a/cedardb/query b/cedardb/query index 3261388dc..ebb3c2d49 100755 --- a/cedardb/query +++ b/cedardb/query @@ -8,7 +8,7 @@ set -e query=$(cat) -raw=$(PGPASSWORD=test psql -h localhost -U postgres -t -c '\timing' -c "$query" 2>&1) && exit_code=0 || exit_code=$? +raw=$(psql -t -c '\timing' -c "$query" 2>&1) && exit_code=0 || exit_code=$? if [ "$exit_code" -ne 0 ] || printf '%s\n' "$raw" | grep -qE '^ERROR|psql: error'; then printf '%s\n' "$raw" >&2 diff --git a/cedardb/results/20260510/c6a.4xlarge.json b/cedardb/results/20260510/c6a.4xlarge.json deleted file mode 100644 index cd2d138f6..000000000 --- a/cedardb/results/20260510/c6a.4xlarge.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "system": "CedarDB", - "date": "2026-05-10", - "machine": "c6a.4xlarge", - "cluster_size": 1, - "proprietary": "yes", - "hardware": "cpu", - "tuned": "no", - "tags": ["C++","column-oriented","PostgreSQL compatible"], - "load_time": 714, - "data_size": 27875459920, - "result": [ - [0.086, 0.011, 0.011], - [0.108, 0.004, 0.004], - [0.928, 0.027, 0.027], - [1.307, 0.026, 0.025], - [1.401, 0.132, 0.124], - [1.673, 0.257, 0.254], - [0.113, 0.021, 0.022], - [0.113, 0.005, 0.005], - [2.338, 0.215, 0.215], - [3.899, 0.278, 0.276], - [2.35, 0.032, 0.031], - [2.793, 0.033, 0.033], - [1.692, 0.221, 0.211], - [3.836, 0.344, 0.346], - [2.076, 0.222, 0.218], - [1.425, 0.153, 0.149], - [3.963, 0.518, 0.5], - [3.923, 0.494, 0.465], - [7.302, 11.598, 11.404], - [0.871, 0.002, 0.001], - [10.964, 0.626, 0.625], - [13.308, 0.21, 0.21], - [21.102, 0.374, 0.372], - [15.289, 0.054, 0.06], - [4.719, 0.005, 0.005], - [1.383, 0.01, 0.009], - [4.724, 0.006, 0.006], - [11.956, 0.663, 0.659], - [8.715, 3.571, 3.567], - [0.332, 0.025, 0.024], - [4.72, 0.091, 0.09], - [7.654, 0.133, 0.133], - [18.839, 15.737, 15.249], - [11.428, 1.499, 1.344], - [11.433, 1.49, 1.339], - [0.763, 0.144, 0.141], - [0.155, 0.017, 0.017], - [0.099, 0.009, 0.008], - [0.128, 0.004, 0.004], - [0.162, 0.032, 0.032], - [0.087, 0.004, 0.004], - [0.085, 0.003, 0.003], - [0.083, 0.004, 0.004] -] -} - diff --git a/cedardb/results/20260512/c6a.4xlarge.json b/cedardb/results/20260512/c6a.4xlarge.json new file mode 100644 index 000000000..925a78b74 --- /dev/null +++ b/cedardb/results/20260512/c6a.4xlarge.json @@ -0,0 +1,58 @@ +{ + "system": "CedarDB", + "date": "2026-05-12", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible"], + "load_time": 167, + "data_size": 22881534128, + "result": [ +[0.272,0.011,0.011], +[0.390,0.004,0.004], +[1.082,0.027,0.027], +[1.499,0.026,0.026], +[1.585,0.133,0.127], +[1.886,0.268,0.262], +[0.405,0.022,0.022], +[0.401,0.005,0.005], +[2.465,0.222,0.222], +[3.791,0.282,0.282], +[2.277,0.032,0.032], +[2.652,0.033,0.033], +[1.926,0.220,0.220], +[3.874,0.356,0.353], +[2.319,0.233,0.230], +[1.543,0.153,0.156], +[3.970,0.535,0.508], +[3.951,0.506,0.480], +[16.117,10.190,10.597], +[0.724,0.002,0.002], +[10.941,0.630,0.630], +[13.085,0.215,0.216], +[20.759,0.381,0.378], +[14.988,0.066,0.064], +[4.399,0.005,0.005], +[1.386,0.012,0.010], +[4.397,0.005,0.005], +[11.549,0.664,0.662], +[10.260,3.569,3.566], +[0.324,0.222,0.025], +[4.548,0.271,0.092], +[7.672,0.139,0.141], +[19.853,15.107,13.686], +[11.449,1.397,1.372], +[11.382,1.407,1.371], +[0.777,0.294,0.143], +[0.366,0.015,0.015], +[0.102,0.007,0.007], +[0.363,0.004,0.004], +[0.392,0.033,0.030], +[0.105,0.004,0.004], +[0.088,0.003,0.003], +[0.082,0.004,0.005] +] +} + diff --git a/cedardb/results/20260512/c6a.metal.json b/cedardb/results/20260512/c6a.metal.json new file mode 100644 index 000000000..8b5d9f745 --- /dev/null +++ b/cedardb/results/20260512/c6a.metal.json @@ -0,0 +1,58 @@ +{ + "system": "CedarDB", + "date": "2026-05-12", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible"], + "load_time": 93, + "data_size": 22679207856, + "result": [ +[2.233,0.011,0.009], +[2.636,0.004,0.004], +[3.408,0.014,0.015], +[3.418,0.019,0.015], +[3.491,0.093,0.085], +[3.665,0.117,0.115], +[2.570,0.012,0.012], +[2.650,0.005,0.005], +[4.313,0.141,0.128], +[5.603,0.177,0.163], +[4.076,0.025,0.025], +[4.475,0.030,0.031], +[3.687,0.114,0.113], +[5.467,0.207,0.223], +[4.150,0.129,0.123], +[3.493,0.115,0.103], +[5.431,0.235,0.214], +[5.418,0.266,0.211], +[8.494,0.512,0.429], +[2.116,0.003,0.003], +[11.889,0.195,0.191], +[13.817,0.074,0.078], +[21.139,0.110,0.113], +[14.831,0.046,0.041], +[4.373,0.007,0.007], +[1.335,0.010,0.008], +[4.388,0.007,0.007], +[11.070,0.157,0.159], +[8.630,0.772,0.771], +[0.195,0.011,0.011], +[4.794,0.061,0.068], +[7.543,0.080,0.079], +[5.761,0.442,0.380], +[10.816,0.421,0.432], +[10.665,0.410,0.426], +[0.561,0.249,0.082], +[0.296,0.018,0.013], +[0.082,0.009,0.009], +[0.312,0.005,0.005], +[0.322,0.029,0.029], +[0.083,0.006,0.007], +[0.082,0.004,0.008], +[0.085,0.008,0.006] +] +} + diff --git a/cedardb/results/20260512/c7a.metal-48xl.json b/cedardb/results/20260512/c7a.metal-48xl.json new file mode 100644 index 000000000..e5a80da7a --- /dev/null +++ b/cedardb/results/20260512/c7a.metal-48xl.json @@ -0,0 +1,58 @@ +{ + "system": "CedarDB", + "date": "2026-05-12", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible"], + "load_time": 91, + "data_size": 22658288112, + "result": [ +[0.635,0.005,0.005], +[1.202,0.006,0.004], +[2.050,0.010,0.018], +[2.569,0.011,0.010], +[2.327,0.069,0.066], +[2.600,0.079,0.076], +[1.170,0.008,0.009], +[1.253,0.007,0.007], +[3.173,0.099,0.098], +[4.625,0.120,0.146], +[2.927,0.025,0.025], +[3.300,0.026,0.027], +[2.619,0.067,0.068], +[4.349,0.118,0.123], +[2.990,0.074,0.074], +[2.322,0.060,0.058], +[4.417,0.128,0.130], +[4.420,0.119,0.123], +[7.277,0.174,0.175], +[1.901,0.005,0.004], +[11.659,0.081,0.080], +[13.708,0.037,0.036], +[21.067,0.060,0.058], +[15.704,0.035,0.031], +[5.400,0.006,0.007], +[2.574,0.007,0.007], +[5.404,0.009,0.009], +[12.063,0.085,0.085], +[8.747,0.419,0.406], +[0.407,0.009,0.007], +[4.921,0.043,0.042], +[7.698,0.057,0.057], +[5.712,0.331,0.202], +[10.942,0.231,0.268], +[10.942,0.237,0.272], +[0.891,0.202,0.058], +[0.304,0.020,0.018], +[0.109,0.017,0.011], +[0.289,0.012,0.010], +[0.326,0.025,0.027], +[0.111,0.012,0.013], +[0.118,0.009,0.012], +[0.115,0.011,0.011] +] +} + diff --git a/cedardb/results/20260512/c8g.4xlarge.json b/cedardb/results/20260512/c8g.4xlarge.json new file mode 100644 index 000000000..072a13a50 --- /dev/null +++ b/cedardb/results/20260512/c8g.4xlarge.json @@ -0,0 +1,58 @@ +{ + "system": "CedarDB", + "date": "2026-05-12", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible"], + "load_time": 153, + "data_size": 22879027440, + "result": [ +[0.218,0.013,0.013], +[0.119,0.008,0.004], +[0.875,0.028,0.029], +[1.283,0.032,0.032], +[1.329,0.083,0.082], +[1.608,0.169,0.167], +[0.294,0.019,0.019], +[0.112,0.007,0.007], +[2.097,0.132,0.131], +[3.483,0.162,0.160], +[2.027,0.049,0.049], +[2.246,0.055,0.057], +[1.628,0.134,0.135], +[3.517,0.230,0.229], +[2.013,0.141,0.139], +[1.356,0.110,0.109], +[3.599,0.287,0.281], +[3.564,0.246,0.239], +[34.765,25.031,24.835], +[0.854,0.001,0.001], +[10.789,0.689,0.689], +[12.930,0.174,0.174], +[20.603,0.279,0.282], +[15.373,0.068,0.056], +[4.532,0.003,0.003], +[1.535,0.007,0.007], +[4.544,0.003,0.003], +[11.368,0.493,0.490], +[9.330,1.871,1.880], +[0.553,0.028,0.028], +[4.659,0.089,0.089], +[7.604,0.103,0.125], +[42.875,30.083,46.970], +[11.033,0.757,0.756], +[11.038,0.759,0.756], +[0.894,0.095,0.095], +[0.314,0.015,0.014], +[0.086,0.008,0.008], +[0.290,0.004,0.003], +[0.323,0.031,0.031], +[0.070,0.006,0.003], +[0.066,0.003,0.003], +[0.065,0.007,0.006] +] +} + diff --git a/cedardb/results/20260512/c8g.metal-48xl.json b/cedardb/results/20260512/c8g.metal-48xl.json new file mode 100644 index 000000000..c5848a16a --- /dev/null +++ b/cedardb/results/20260512/c8g.metal-48xl.json @@ -0,0 +1,58 @@ +{ + "system": "CedarDB", + "date": "2026-05-12", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible"], + "load_time": 91, + "data_size": 22657354496, + "result": [ +[2.024,0.010,0.009], +[2.435,0.004,0.004], +[3.166,0.014,0.015], +[3.249,0.016,0.014], +[3.314,0.051,0.050], +[3.471,0.065,0.065], +[2.359,0.012,0.014], +[2.443,0.007,0.007], +[4.020,0.080,0.074], +[5.424,0.097,0.090], +[3.820,0.018,0.018], +[4.311,0.021,0.021], +[3.501,0.073,0.071], +[5.215,0.111,0.097], +[3.882,0.075,0.073], +[3.308,0.052,0.051], +[5.210,0.100,0.104], +[5.207,0.098,0.097], +[8.147,0.174,0.153], +[3.011,0.005,0.003], +[12.577,0.137,0.139], +[14.014,0.043,0.043], +[20.581,0.080,0.080], +[15.672,0.045,0.057], +[4.914,0.008,0.009], +[2.097,0.010,0.010], +[4.909,0.009,0.009], +[11.603,0.101,0.103], +[9.082,0.365,0.375], +[0.915,0.014,0.014], +[5.280,0.039,0.037], +[8.089,0.046,0.046], +[6.202,0.176,0.183], +[11.275,0.271,0.213], +[10.606,0.223,0.243], +[0.635,0.044,0.045], +[0.255,0.011,0.011], +[0.070,0.007,0.010], +[0.259,0.009,0.006], +[0.300,0.028,0.041], +[0.073,0.007,0.010], +[0.071,0.010,0.005], +[0.062,0.005,0.008] +] +} + diff --git a/cedardb/start b/cedardb/start index 0f4c8b56f..64dd2373e 100755 --- a/cedardb/start +++ b/cedardb/start @@ -1,20 +1,13 @@ #!/bin/bash set -eu -if PGPASSWORD=test psql -h localhost -U postgres -c 'SELECT 1' >/dev/null 2>&1; then - exit 0 -fi - -# `docker run --rm` cleans up container on exit; we run detached. -sudo docker stop cedardb >/dev/null 2>&1 || true -sudo docker rm cedardb >/dev/null 2>&1 || true - -sudo docker run -d --rm -p 5432:5432 \ - -v "$(pwd)/data:/data" \ - -v "$(pwd)/db:/var/lib/cedardb/data" \ - -e CEDAR_PASSWORD=test \ - --name cedardb cedardb/cedardb:latest >/dev/null - -until pg_isready -h localhost --dbname postgres -U postgres >/dev/null 2>&1; do - sleep 1 -done +sudo systemctl start cedardb.service + +# On multi-NUMA systems stay within one node for better performance. +numa_nodes=$(ls -d /sys/devices/system/node/node* 2>/dev/null | wc -l) +if [ "${numa_nodes}" -gt 1 ]; then + parallel=$(cat /sys/devices/system/node/node0/cpulist \ + | tr ',' '\n' \ + | awk -F'-' '{if(NF==2) s+=($2-$1+1); else s+=1} END{print s}') + until psql -c "SET debug.parallel = ${parallel};" >/dev/null 2>&1; do sleep 1; done +fi \ No newline at end of file diff --git a/cedardb/stop b/cedardb/stop index 5d6ade0a8..42f5f1bb5 100755 --- a/cedardb/stop +++ b/cedardb/stop @@ -1,3 +1,3 @@ #!/bin/bash -sudo docker stop cedardb >/dev/null 2>&1 || true +sudo systemctl stop cedardb.service || true \ No newline at end of file