1

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.

joscul
  • 11
  • 2

0 Answers0