Skip to content

Instantly share code, notes, and snippets.

@azat
Last active June 9, 2022 08:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save azat/76bceb23b051a24fa6d3e06cb113f680 to your computer and use it in GitHub Desktop.
Save azat/76bceb23b051a24fa6d3e06cb113f680 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
set -x
config_directives=(
--tcp_port=19000
--mlock_executable=true
)
benchmark_args=(
-d 0
-i 200
--port 19000
--query_profiler_cpu_time_period_ns=0
--query_profiler_real_time_period_ns=0
)
./clickhouse-upstream server -- "${config_directives[@]}" >& /dev/null &
pid=$!
sleep 5
./clickhouse-pr benchmark "${benchmark_args[@]}" -q "SELECT concat(toString(number%1e6), '') k, count() FROM numbers_mt(1000000000) GROUP BY k"
kill $pid
wait
CLICKHOUSE_GWP_ASAN_OPTIONS="enabled=0" ./clickhouse-pr server -- "${config_directives[@]}" >& /dev/null &
pid=$!
sleep 5
./clickhouse-pr benchmark "${benchmark_args[@]}" -q "SELECT concat(toString(number%1e6), '') k, count() FROM numbers_mt(1000000000) GROUP BY k"
kill $pid
wait
CLICKHOUSE_GWP_ASAN_OPTIONS="sample_rate=100000,slot_size=1,max_simultaneous_allocations=32,enabled=1" ./clickhouse-pr server -- "${config_directives[@]}" >& /dev/null &
pid=$!
sleep 5
./clickhouse-pr benchmark "${benchmark_args[@]}" -q "SELECT concat(toString(number%1e6), '') k, count() FROM numbers_mt(1000000000) GROUP BY k"
kill $pid
wait
CLICKHOUSE_GWP_ASAN_OPTIONS="sample_rate=100,slot_size=512,max_simultaneous_allocations=512,enabled=1" ./clickhouse-pr server -- "${config_directives[@]}" >& /dev/null &
pid=$!
sleep 5
./clickhouse-pr benchmark "${benchmark_args[@]}" -q "SELECT concat(toString(number%1e6), '') k, count() FROM numbers_mt(1000000000) GROUP BY k"
kill $pid
wait
tmp/gwp-asan-36826 [1]$ ./bench.sh
+ config_directives=(--tcp_port=19000 --mlock_executable=true)
+ benchmark_args=(-d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0)
+ pid=54601
+ sleep 5
+ ./clickhouse-upstream server -- --tcp_port=19000 --mlock_executable=true
+ ./clickhouse-pr benchmark -d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0 -q 'SELECT concat(toString(number%1e6), '\'''\'') k,
count() FROM numbers_mt(1000000000) GROUP BY k'
Loaded 1 queries.
Queries executed: 200.
localhost:19000, queries 200, QPS: 0.321, RPS: 320946524.818, MiB/s: 2448.628, result RPS: 320946.525, result MiB/s: 7.006.
0.000% 2.972 sec.
10.000% 3.004 sec.
20.000% 3.028 sec.
30.000% 3.048 sec.
40.000% 3.072 sec.
50.000% 3.097 sec.
60.000% 3.122 sec.
70.000% 3.151 sec.
80.000% 3.177 sec.
90.000% 3.213 sec.
95.000% 3.244 sec.
99.000% 3.502 sec.
99.900% 4.650 sec.
99.990% 4.650 sec.
+ kill 54601
+ wait
+ pid=11309
+ sleep 5
+ CLICKHOUSE_GWP_ASAN_OPTIONS=enabled=0
+ ./clickhouse-pr server -- --tcp_port=19000 --mlock_executable=true
+ ./clickhouse-pr benchmark -d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0 -q 'SELECT concat(toString(number%1e6), '\'''\'') k,
count() FROM numbers_mt(1000000000) GROUP BY k'
Loaded 1 queries.
Queries executed: 200.
localhost:19000, queries 200, QPS: 0.332, RPS: 332079555.913, MiB/s: 2533.566, result RPS: 332079.556, result MiB/s: 7.249.
0.000% 2.885 sec.
10.000% 2.922 sec.
20.000% 2.943 sec.
30.000% 2.966 sec.
40.000% 2.983 sec.
50.000% 3.000 sec.
60.000% 3.015 sec.
70.000% 3.032 sec.
80.000% 3.053 sec.
90.000% 3.082 sec.
95.000% 3.105 sec.
99.000% 3.308 sec.
99.900% 4.568 sec.
99.990% 4.568 sec.
+ kill 11309
+ wait
+ pid=13704
+ sleep 5
+ CLICKHOUSE_GWP_ASAN_OPTIONS=sample_rate=100000,slot_size=1,max_simultaneous_allocations=32,enabled=1
+ ./clickhouse-pr server -- --tcp_port=19000 --mlock_executable=true
+ ./clickhouse-pr benchmark -d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0 -q 'SELECT concat(toString(number%1e6), '\'''\'') k,
count() FROM numbers_mt(1000000000) GROUP BY k'
Loaded 1 queries.
Queries executed: 200.
localhost:19000, queries 200, QPS: 0.327, RPS: 327176582.700, MiB/s: 2496.159, result RPS: 327176.583, result MiB/s: 7.142.
0.000% 2.903 sec.
10.000% 2.963 sec.
20.000% 2.988 sec.
30.000% 3.004 sec.
40.000% 3.022 sec.
50.000% 3.044 sec.
60.000% 3.066 sec.
70.000% 3.087 sec.
80.000% 3.103 sec.
90.000% 3.139 sec.
95.000% 3.170 sec.
99.000% 3.345 sec.
99.900% 4.483 sec.
99.990% 4.483 sec.
+ kill 13704
+ wait
+ pid=31189
+ sleep 5
+ CLICKHOUSE_GWP_ASAN_OPTIONS=sample_rate=100,slot_size=512,max_simultaneous_allocations=512,enabled=1
+ ./clickhouse-pr server -- --tcp_port=19000 --mlock_executable=true
+ ./clickhouse-pr benchmark -d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0 -q 'SELECT concat(toString(number%1e6), '\'''\'') k,
count() FROM numbers_mt(1000000000) GROUP BY k'
Loaded 1 queries.
Queries executed: 200.
localhost:19000, queries 200, QPS: 0.319, RPS: 318766408.369, MiB/s: 2431.995, result RPS: 318766.408, result MiB/s: 6.958.
0.000% 2.964 sec.
10.000% 3.039 sec.
20.000% 3.061 sec.
30.000% 3.077 sec.
40.000% 3.094 sec.
50.000% 3.106 sec.
60.000% 3.120 sec.
70.000% 3.149 sec.
80.000% 3.182 sec.
90.000% 3.291 sec.
95.000% 3.351 sec.
99.000% 3.495 sec.
99.900% 4.171 sec.
99.990% 4.171 sec.
+ kill 31189
+ wait
tmp/gwp-asan-36826 [1] {elapsed: 2488s}$ ./bench.sh
+ config_directives=(--tcp_port=19000 --mlock_executable=true)
+ benchmark_args=(-d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0)
+ pid=2981
+ sleep 5
+ ./clickhouse-upstream server -- --tcp_port=19000 --mlock_executable=true
+ ./clickhouse-pr benchmark -d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0 -q 'SELECT concat(toString(number%1e6), '\'''\'') k,
count() FROM numbers_mt(1000000000) GROUP BY k'
Loaded 1 queries.
Queries executed: 200.
localhost:19000, queries 200, QPS: 0.324, RPS: 324079533.315, MiB/s: 2472.531, result RPS: 324079.533, result MiB/s: 7.074.
0.000% 2.877 sec.
10.000% 2.948 sec.
20.000% 2.980 sec.
30.000% 3.023 sec.
40.000% 3.058 sec.
50.000% 3.088 sec.
60.000% 3.108 sec.
70.000% 3.133 sec.
80.000% 3.172 sec.
90.000% 3.201 sec.
95.000% 3.220 sec.
99.000% 3.339 sec.
99.900% 4.385 sec.
99.990% 4.385 sec.
+ kill 2981
+ wait
+ pid=27022
+ sleep 5
+ CLICKHOUSE_GWP_ASAN_OPTIONS=enabled=0
+ ./clickhouse-pr server -- --tcp_port=19000 --mlock_executable=true
+ ./clickhouse-pr benchmark -d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0 -q 'SELECT concat(toString(number%1e6), '\'''\'') k,
count() FROM numbers_mt(1000000000) GROUP BY k'
Loaded 1 queries.
Queries executed: 200.
localhost:19000, queries 200, QPS: 0.334, RPS: 333596458.149, MiB/s: 2545.139, result RPS: 333596.458, result MiB/s: 7.282.
0.000% 2.899 sec.
10.000% 2.930 sec.
20.000% 2.943 sec.
30.000% 2.955 sec.
40.000% 2.966 sec.
50.000% 2.981 sec.
60.000% 2.995 sec.
70.000% 3.010 sec.
80.000% 3.026 sec.
90.000% 3.049 sec.
95.000% 3.073 sec.
99.000% 3.303 sec.
99.900% 4.422 sec.
99.990% 4.422 sec.
+ kill 27022
+ wait
+ pid=29733
+ sleep 5
+ CLICKHOUSE_GWP_ASAN_OPTIONS=sample_rate=100000,slot_size=1,max_simultaneous_allocations=32,enabled=1
+ ./clickhouse-pr server -- --tcp_port=19000 --mlock_executable=true
+ ./clickhouse-pr benchmark -d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0 -q 'SELECT concat(toString(number%1e6), '\'''\'') k,
count() FROM numbers_mt(1000000000) GROUP BY k'
Loaded 1 queries.
Queries executed: 200.
localhost:19000, queries 200, QPS: 0.332, RPS: 331661550.112, MiB/s: 2530.377, result RPS: 331661.550, result MiB/s: 7.240.
0.000% 2.867 sec.
10.000% 2.915 sec.
20.000% 2.930 sec.
30.000% 2.950 sec.
40.000% 2.968 sec.
50.000% 2.995 sec.
60.000% 3.013 sec.
70.000% 3.052 sec.
80.000% 3.085 sec.
90.000% 3.113 sec.
95.000% 3.169 sec.
99.000% 3.308 sec.
99.900% 4.450 sec.
99.990% 4.450 sec.
+ kill 29733
+ wait
+ pid=39470
+ sleep 5
+ CLICKHOUSE_GWP_ASAN_OPTIONS=sample_rate=100,slot_size=512,max_simultaneous_allocations=512,enabled=1
+ ./clickhouse-pr server -- --tcp_port=19000 --mlock_executable=true
+ ./clickhouse-pr benchmark -d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0 -q 'SELECT concat(toString(number%1e6), '\'''\'') k,
count() FROM numbers_mt(1000000000) GROUP BY k'
Loaded 1 queries.
Queries executed: 200.
localhost:19000, queries 200, QPS: 0.315, RPS: 315175239.212, MiB/s: 2404.596, result RPS: 315175.239, result MiB/s: 6.880.
0.000% 2.989 sec.
10.000% 3.051 sec.
20.000% 3.079 sec.
30.000% 3.095 sec.
40.000% 3.116 sec.
50.000% 3.135 sec.
60.000% 3.155 sec.
70.000% 3.191 sec.
80.000% 3.301 sec.
90.000% 3.370 sec.
95.000% 3.414 sec.
99.000% 3.469 sec.
99.900% 3.551 sec.
99.990% 3.551 sec.
+ kill 39470
+ wait
gwp-asan-36826 [1] {elapsed: 2479s}$ ./bench.sh
+ config_directives=(--tcp_port=19000 --mlock_executable=true)
+ benchmark_args=(-d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0)
+ pid=44547
+ sleep 5
+ ./clickhouse-upstream server -- --tcp_port=19000 --mlock_executable=true
+ ./clickhouse-pr benchmark -d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0 -q 'SELECT concat(toString(number%1e6), '\'''\'') k,
count() FROM numbers_mt(1000000000) GROUP BY k'
Loaded 1 queries.
Queries executed: 200.
localhost:19000, queries 200, QPS: 0.322, RPS: 321609829.132, MiB/s: 2453.688, result RPS: 321609.829, result MiB/s: 7.020.
0.000% 2.920 sec.
10.000% 2.968 sec.
20.000% 3.021 sec.
30.000% 3.057 sec.
40.000% 3.075 sec.
50.000% 3.101 sec.
60.000% 3.120 sec.
70.000% 3.152 sec.
80.000% 3.176 sec.
90.000% 3.207 sec.
95.000% 3.236 sec.
99.000% 3.497 sec.
99.900% 4.183 sec.
99.990% 4.183 sec.
+ kill 44547
+ wait
+ pid=3216
+ sleep 5
+ CLICKHOUSE_GWP_ASAN_OPTIONS=enabled=0
+ ./clickhouse-pr server -- --tcp_port=19000 --mlock_executable=true
+ ./clickhouse-pr benchmark -d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0 -q 'SELECT concat(toString(number%1e6), '\'''\'') k,
count() FROM numbers_mt(1000000000) GROUP BY k'
Loaded 1 queries.
Queries executed: 200.
localhost:19000, queries 200, QPS: 0.332, RPS: 331963213.202, MiB/s: 2532.678, result RPS: 331963.213, result MiB/s: 7.246.
0.000% 2.873 sec.
10.000% 2.925 sec.
20.000% 2.952 sec.
30.000% 2.973 sec.
40.000% 2.990 sec.
50.000% 3.005 sec.
60.000% 3.019 sec.
70.000% 3.029 sec.
80.000% 3.048 sec.
90.000% 3.068 sec.
95.000% 3.106 sec.
99.000% 3.332 sec.
99.900% 4.437 sec.
99.990% 4.437 sec.
+ kill 3216
+ wait
+ pid=5798
+ sleep 5
+ CLICKHOUSE_GWP_ASAN_OPTIONS=sample_rate=100000,slot_size=1,max_simultaneous_allocations=32,enabled=1
+ ./clickhouse-pr server -- --tcp_port=19000 --mlock_executable=true
+ ./clickhouse-pr benchmark -d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0 -q 'SELECT concat(toString(number%1e6), '\'''\'') k,
count() FROM numbers_mt(1000000000) GROUP BY k'
Loaded 1 queries.
Queries executed: 200.
localhost:19000, queries 200, QPS: 0.335, RPS: 335497873.646, MiB/s: 2559.646, result RPS: 335497.874, result MiB/s: 7.323.
0.000% 2.861 sec.
10.000% 2.885 sec.
20.000% 2.903 sec.
30.000% 2.923 sec.
40.000% 2.938 sec.
50.000% 2.959 sec.
60.000% 2.976 sec.
70.000% 3.003 sec.
80.000% 3.022 sec.
90.000% 3.096 sec.
95.000% 3.135 sec.
99.000% 3.335 sec.
99.900% 4.270 sec.
99.990% 4.270 sec.
+ kill 5798
+ wait
+ pid=8160
+ sleep 5
+ CLICKHOUSE_GWP_ASAN_OPTIONS=sample_rate=100,slot_size=512,max_simultaneous_allocations=512,enabled=1
+ ./clickhouse-pr server -- --tcp_port=19000 --mlock_executable=true
+ ./clickhouse-pr benchmark -d 0 -i 200 --port 19000 --query_profiler_cpu_time_period_ns=0 --query_profiler_real_time_period_ns=0 -q 'SELECT concat(toString(number%1e6), '\'''\'') k,
count() FROM numbers_mt(1000000000) GROUP BY k'
Loaded 1 queries.
Queries executed: 200.
localhost:19000, queries 200, QPS: 0.310, RPS: 309587062.073, MiB/s: 2361.962, result RPS: 309587.062, result MiB/s: 6.758.
0.000% 3.006 sec.
10.000% 3.065 sec.
20.000% 3.093 sec.
30.000% 3.121 sec.
40.000% 3.150 sec.
50.000% 3.198 sec.
60.000% 3.274 sec.
70.000% 3.319 sec.
80.000% 3.361 sec.
90.000% 3.409 sec.
95.000% 3.442 sec.
99.000% 3.542 sec.
99.900% 4.334 sec.
99.990% 4.334 sec.
+ kill 8160
+ wait
-- Memory pattern of used query:
SELECT
concat(toString(number % 1000000.), '') AS k,
count()
FROM numbers_mt(1000000000)
GROUP BY k
SETTINGS
memory_profiler_sample_probability = 1, /* sample every allocation */
max_untracked_memory = 0 /* note that this is required, since guarded allocator may be called for allocations < max_untracked_memory */
;
Query id: f54b140b-35f9-4e53-a080-152550e0d422
1000000 rows in set. Elapsed: 7.373 sec. Processed 1.00 billion rows, 8.00 GB (135.64 million rows/s., 1.09 GB/s.)
-- yes, it is slower, because of max_untracked_memory=0, here, not a problem.
SELECT
count(),
max(size),
min(size),
avg(size),
median(size)
FROM system.trace_log
WHERE (query_id = 'f54b140b-35f9-4e53-a080-152550e0d422') AND (trace_type = 'MemorySample') AND (size > 0)
Query id: 2f5f46e7-88ac-4a83-8dc5-caa1847019eb
┌─count()─┬─max(size)─┬─min(size)─┬─────────avg(size)─┬─median(size)─┐
│ 993119 │ 4194304 │ 8 │ 59478.30274518965 │ 48 │
└─────────┴───────────┴───────────┴───────────────────┴──────────────┘
@azat
Copy link
Author

azat commented Jun 2, 2022

$ awk '/sleep/ { env=""; } /server/ { server=$2; gsub(/\.\/clickhouse-/, "", server); } /CLICKHOUSE_GWP_ASAN_OPTIONS/ { env=$2; gsub(/CLICKHOUSE_GWP_ASAN_OPTIONS=/, "", env); } /.000%/ { printf("\"%s\",\"%s\",\"%s\",%s\n", $1, server, env, $(NF-1)); }' /tmp/gwp-asan.log | clickhouse-local -S 'quantile String, server String, env String, q Double' --input-format CSV -q "select quantile, server, env, round(avg(q), 2) avg, round(varSamp(q), 6) dev from table where quantile in ('90.000%', '95.000%') group by quantile, server, env order by quantile, server='upstream' desc, env" --format Markdown
quantile server env avg dev
90.000% upstream 3.21 0.000036
90.000% pr enabled=0 3.07 0.000274
90.000% pr sample_rate=100,slot_size=512,max_simultaneous_allocations=512,enabled=1 3.36 0.003614
90.000% pr sample_rate=100000,slot_size=1,max_simultaneous_allocations=32,enabled=1 3.12 0.000469
95.000% upstream 3.23 0.000149
95.000% pr enabled=0 3.09 0.000352
95.000% pr sample_rate=100,slot_size=512,max_simultaneous_allocations=512,enabled=1 3.4 0.002172
95.000% pr sample_rate=100000,slot_size=1,max_simultaneous_allocations=32,enabled=1 3.16 0.000397

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment