diff options
author | Siri Hansen <[email protected]> | 2017-09-07 15:56:18 +0200 |
---|---|---|
committer | Siri Hansen <[email protected]> | 2017-09-15 09:57:25 +0200 |
commit | ae089c72fb06b069675cbebcec10f0820cf16112 (patch) | |
tree | d1ba5bc2e8ec4f230af3b86b6d0578a9d5ce2a1e /lib/observer/src/cdv_gen_cb.erl | |
parent | 903a289213aa22b5c9c42ead2599174c2cf15b95 (diff) | |
download | otp-ae089c72fb06b069675cbebcec10f0820cf16112.tar.gz otp-ae089c72fb06b069675cbebcec10f0820cf16112.tar.bz2 otp-ae089c72fb06b069675cbebcec10f0820cf16112.zip |
cdv: Optimize reading of crashdump with many binaries
Earlier, crashdump_viewer stored an index of all binaries in a gb_tree
on startup. The binary index was also stored in the
cdv_dump_index_table along with all other "=xxx" tags from the
dump. The difference between the indices was that the ets table
contained the addresses of the binaries as strings (the hex address
found after the "=binary:" tag) and in the gb_tree this hex address
was instead converted to its integer value. The index in the ets table
was only used once - when creating the gb_tree. The gb_tree was used
for all later looups (to map integer address to file position).
This commit replaces the two storages with one new ets table,
cdv_binary_index_table, using the integer value of the hex address as
key, and the position in the crashdump file as value. In the case of
many binaries, this makes the start of crashdump viewer faster (only
one place to write), and the data usage smaller (hex address strings
are no longer stored). And it avoids the gc of the gb_tree.
Diffstat (limited to 'lib/observer/src/cdv_gen_cb.erl')
0 files changed, 0 insertions, 0 deletions