Last active
June 9, 2022 08:40
-
-
Save azat/76bceb23b051a24fa6d3e06cb113f680 to your computer and use it in GitHub Desktop.
measure GWP ASan performance in ClickHouse (https://github.com/ClickHouse/ClickHouse/pull/36826/#issuecomment-1145301202)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- 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 │ | |
└─────────┴───────────┴───────────┴───────────────────┴──────────────┘ |
Author
azat
commented
Jun 2, 2022
•
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