Skip to content
This repository has been archived by the owner on Jun 13, 2020. It is now read-only.

vkreplay: too many hash tables in the replayer #6

Open
jyangsh opened this issue Oct 29, 2018 · 0 comments
Open

vkreplay: too many hash tables in the replayer #6

jyangsh opened this issue Oct 29, 2018 · 0 comments

Comments

@jyangsh
Copy link

jyangsh commented Oct 29, 2018

There are many hash tables(std::unordered_map) for remapping the vulkan handles in the replayer. That is causing cpu-bound in some case. From the profile data below, the most cpu time consumed by vkreplay is for remapping the vulkan handles. Is there any plan for improving the cpu overload in vkreplay?

[Process]/{Thread}/Code Total Self % Self Process % Process
[com.example.vkreplay #6150] 12.24%       100.00%
vkReplay::manually_replay_vkUpdateDescriptorSets(packet_vkUpdateDescriptorSets*) 0.42% 158 0.70% 765 3.40%
std::__ndk1::__hash_table<std::__ndk1::__hash_value_type<VkDescriptorSet_T*, VkDescriptorSet_T*>, std::__ndk1::__unordered_map_hasher<VkDescriptorSet_T*, std::__ndk1::__hash_value_type<VkDescriptorSet_T*, VkDescriptorSet_T*>, std::__ndk1::hash<VkDescriptorSet_T*>, (bool)1>, std::__ndk1::__unordered_map_equal<VkDescriptorSet_T*, std::__ndk1::__hash_value_type<VkDescriptorSet_T*, VkDescriptorSet_T*>, std::__ndk1::equal_to<VkDescriptorSet_T*>, (bool)1>, std::__ndk1::allocator<std::__ndk1::__hash_value_type<VkDescriptorSet_T*, VkDescriptorSet_T*>>>::find<VkDescriptorSet_T*>(std::__ndk1::__hash_iterator<std::__ndk1::__hash_node<std::__ndk1::__hash_value_type<VkDescriptorSet_T*, VkDescriptorSet_T*>, void*>*>, const T1&) 0.19% 343 1.52% 343 1.52%
std::__ndk1::__hash_table<std::__ndk1::__hash_value_type<VkImageView_T*, VkImageView_T*>, std::__ndk1::__unordered_map_hasher<VkImageView_T*, std::__ndk1::__hash_value_type<VkImageView_T*, VkImageView_T*>, std::__ndk1::hash<VkImageView_T*>, (bool)1>, std::__ndk1::__unordered_map_equal<VkImageView_T*, std::__ndk1::__hash_value_type<VkImageView_T*, VkImageView_T*>, std::__ndk1::equal_to<VkImageView_T*>, (bool)1>, std::__ndk1::allocator<std::__ndk1::__hash_value_type<VkImageView_T*, VkImageView_T*>>>::find<VkImageView_T*>(std::__ndk1::__hash_iterator<std::__ndk1::__hash_node<std::__ndk1::__hash_value_type<VkImageView_T*, VkImageView_T*>, void*>*>, const T1&) 0.07% 122 0.54% 122 0.54%
std::__ndk1::__hash_table<std::__ndk1::__hash_value_type<VkBuffer_T*, _bufferObj>, std::__ndk1::__unordered_map_hasher<VkBuffer_T*, std::__ndk1::__hash_value_type<VkBuffer_T*, _bufferObj>, std::__ndk1::hash<VkBuffer_T*>, (bool)1>, std::__ndk1::__unordered_map_equal<VkBuffer_T*, std::__ndk1::__hash_value_type<VkBuffer_T*, _bufferObj>, std::__ndk1::equal_to<VkBuffer_T*>, (bool)1>, std::__ndk1::allocator<std::__ndk1::__hash_value_type<VkBuffer_T*, _bufferObj>>>::find<VkBuffer_T*>(std::__ndk1::__hash_iterator<std::__ndk1::__hash_node<std::__ndk1::__hash_value_type<VkBuffer_T*, _bufferObj>, void*>*>, const T1&) 0.04% 65 0.29% 65 0.29%
.plt [libvkreplay.so] 0.02% 43 0.19% 43 0.19%
std::__ndk1::__hash_table<std::__ndk1::__hash_value_type<VkSampler_T*, VkSampler_T*>, std::__ndk1::__unordered_map_hasher<VkSampler_T*, std::__ndk1::__hash_value_type<VkSampler_T*, VkSampler_T*>, std::__ndk1::hash<VkSampler_T*>, (bool)1>, std::__ndk1::__unordered_map_equal<VkSampler_T*, std::__ndk1::__hash_value_type<VkSampler_T*, VkSampler_T*>, std::__ndk1::equal_to<VkSampler_T*>, (bool)1>, std::__ndk1::allocator<std::__ndk1::__hash_value_type<VkSampler_T*, VkSampler_T*>>>::find<VkSampler_T*>(std::__ndk1::__hash_iterator<std::__ndk1::__hash_node<std::__ndk1::__hash_value_type<VkSampler_T*, VkSampler_T*>, void*>*>, const T1&) 0.01% 24 0.11% 24 0.11%
std::__ndk1::__hash_table<std::__ndk1::__hash_value_type<VkDevice_T*, VkDevice_T*>, std::__ndk1::__unordered_map_hasher<VkDevice_T*, std::__ndk1::__hash_value_type<VkDevice_T*, VkDevice_T*>, std::__ndk1::hash<VkDevice_T*>, (bool)1>, std::__ndk1::__unordered_map_equal<VkDevice_T*, std::__ndk1::__hash_value_type<VkDevice_T*, VkDevice_T*>, std::__ndk1::equal_to<VkDevice_T*>, (bool)1>, std::__ndk1::allocator<std::__ndk1::__hash_value_type<VkDevice_T*, VkDevice_T*>>>::find<VkDevice_T*>(std::__ndk1::__hash_iterator<std::__ndk1::__hash_node<std::__ndk1::__hash_value_type<VkDevice_T*, VkDevice_T*>, void*>*>, const T1&) < 0.01% 9 0.04% 9 0.04%
std::__ndk1::__hash_table<std::__ndk1::__hash_value_type<VkBufferView_T*, VkBufferView_T*>, std::__ndk1::__unordered_map_hasher<VkBufferView_T*, std::__ndk1::__hash_value_type<VkBufferView_T*, VkBufferView_T*>, std::__ndk1::hash<VkBufferView_T*>, (bool)1>, std::__ndk1::__unordered_map_equal<VkBufferView_T*, std::__ndk1::__hash_value_type<VkBufferView_T*, VkBufferView_T*>, std::__ndk1::equal_to<VkBufferView_T*>, (bool)1>, std::__ndk1::allocator<std::__ndk1::__hash_value_type<VkBufferView_T*, VkBufferView_T*>>>::find<VkBufferView_T*>(std::__ndk1::__hash_iterator<std::__ndk1::__hash_node<std::__ndk1::__hash_value_type<VkBufferView_T*, VkBufferView_T*>, void*>*>, const T1&) < 0.01% 1 < 0.01% 1 < 0.01%
@KarenGhavam-lunarG KarenGhavam-lunarG transferred this issue from LunarG/VulkanTools Jun 12, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant