Skip to content

Instantly share code, notes, and snippets.

@filimonov
Forked from akuzm/analyze-traces.sh
Created July 1, 2020 06:15
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save filimonov/b76de14a3e27a01a62f7735a2405d4ae to your computer and use it in GitHub Desktop.
Save filimonov/b76de14a3e27a01a62f7735a2405d4ae to your computer and use it in GitHub Desktop.
#!/bin/bash
set -ex
set -o pipefail
trap "exit" INT TERM
trap "kill $(jobs -pr) ||:" EXIT
stage=${stage:-}
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
rm -rf data {affected-queries,shm-traces,trace-filtered,flamegraph-query-runs}.tsv {interesting-addrs-,stacks.}{left,right}.{tsv,rep} ||:
for version in right
do
rm -rf data
clickhouse-local --stacktrace --verbose --query "
create table addresses_src($(cat "$version-addresses.tsv.columns"))
engine File(TSVWithNamesAndTypes, '$version-addresses.tsv');
create table addresses_join engine Join(any, left, addr) as
select addr, name from addresses_src;
create table interesting_addrs engine File(TSVWithNamesAndTypes, 'interesting-addrs-$version.tsv') as
select distinct addr from addresses_src
where multiSearchAny(name,
['arena_maybe_decay']
--['madvise', 'mmap', 'pages_commit_impl', 'arena_maybe_decay']
)
;
select count(*) from file('$version-trace-log.tsv', TSVWithNamesAndTypes, '$(cat "$version-trace-log.tsv.columns")')
where query_id = ''
;
create table stacks engine File(TSV, 'stacks.$version.rep') as
select
arrayStringConcat(
arrayMap(
x -> joinGet(addresses_join, 'name', x),
trace
),
';'
) readable_trace,
count()
from file('$version-trace-log.tsv', TSVWithNamesAndTypes,
'$(cat "$version-trace-log.tsv.columns")') trace_log
where arrayJoin(trace) in interesting_addrs
and query_id != ''
group by trace
;
"
~/fg/flamegraph.pl < "stacks.$version.rep" > "$version.svg"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment