I am building a server in c++ that reads a lot from disc. When recording with perf I get this report:
28.20% server [kernel.kallsyms] [k] copy_user_generic_string
18.14% server [kernel.kallsyms] [k] clear_page_rep
7.31% server server [.] SearchEngine::value_intersection<FullTextRecord>
5.64% server server [.] SearchEngine::value_intersection<DomainLinkFullTextRecord>
4.20% server libz.so.1.2.11 [.] inflate
1.63% server [kernel.kallsyms] [k] rmqueue
1.39% server server [.] SearchEngine::value_intersection<LinkFullTextRecord>
1.23% server [kernel.kallsyms] [k] page_fault
1.15% server [kernel.kallsyms] [k] native_queued_spin_lock_slowpath
1.04% server [kernel.kallsyms] [k] xas_load
0.87% server [kernel.kallsyms] [k] __pagevec_lru_add_fn
0.81% server [kernel.kallsyms] [k] find_get_entry
0.80% server libz.so.1.2.11 [.] crc32_z
0.65% server [kernel.kallsyms] [k] down_read_trylock
0.61% server [kernel.kallsyms] [k] workingset_activation
0.56% server [kernel.kallsyms] [k] iommu_map_page
0.51% server [kernel.kallsyms] [k] generic_file_buffered_read
0.50% server libc-2.31.so [.] __memmove_avx_unaligned_erms
Is there any way to know which part of my code causes the high copy_user_generic_string and clear_page_rep?
Tried finding information about those two online but could not find any good documentation.