ฉันกำลังสร้างเซิร์ฟเวอร์ใน c ++ ที่อ่านได้มากจากแผ่นดิสก์ เมื่อบันทึกด้วย perf ฉันได้รับรายงานนี้:
เซิร์ฟเวอร์ 28.20% [kernel.kallsyms] [k] copy_user_generic_string
เซิร์ฟเวอร์ 18.14% [kernel.kallsyms] [k] clear_page_rep
เซิร์ฟเวอร์เซิร์ฟเวอร์ 7.31% [.] SearchEngine::value_intersection<FullTextRecord>
เซิร์ฟเวอร์เซิร์ฟเวอร์ 5.64% [.] SearchEngine::value_intersection<DomainLinkFullTextRecord>
เซิร์ฟเวอร์ 4.20% libz.so.1.2.11 [.] ขยายตัว
เซิร์ฟเวอร์ 1.63% [kernel.kallsyms] [k] rmqueue
เซิร์ฟเวอร์เซิร์ฟเวอร์ 1.39% [.] SearchEngine::value_intersection<LinkFullTextRecord>
เซิร์ฟเวอร์ 1.23% [kernel.kallsyms] [k] page_fault
เซิร์ฟเวอร์ 1.15% [kernel.kallsyms] [k] native_queued_spin_lock_slowpath
เซิร์ฟเวอร์ 1.04% [kernel.kallsyms] [k] xas_load
เซิร์ฟเวอร์ 0.87% [kernel.kallsyms] [k] __pagevec_lru_add_fn
เซิร์ฟเวอร์ 0.81% [kernel.kallsyms] [k] find_get_entry
เซิร์ฟเวอร์ 0.80% libz.so.1.2.11 [.] crc32_z
เซิร์ฟเวอร์ 0.65% [kernel.kallsyms] [k] down_read_trylock
เซิร์ฟเวอร์ 0.61% [kernel.kallsyms] [k] workingset_activation
เซิร์ฟเวอร์ 0.56% [kernel.kallsyms] [k] iommu_map_page
เซิร์ฟเวอร์ 0.51% [kernel.kallsyms] [k] generic_file_buffered_read
เซิร์ฟเวอร์ 0.50% libc-2.31.so [.] __memmove_avx_unaligned_erms
มีวิธีใดบ้างที่จะรู้ว่าส่วนใดของรหัสของฉันทำให้เกิด copy_user_generic_string และ clear_page_rep สูง
พยายามหาข้อมูลเกี่ยวกับทั้งสองทางออนไลน์ แต่ไม่พบเอกสารที่ดี