Using local file tests/rpcping. Using local file ../profile. Total: 989 samples 321 32.5% 32.5% 321 32.5% svc_rqst_expire_cmpf 149 15.1% 47.5% 475 48.0% opr_rbtree_insert 139 14.1% 61.6% 140 14.2% __writev 56 5.7% 67.2% 66 6.7% __GI___pthread_mutex_lock 32 3.2% 70.5% 32 3.2% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/nptl/../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:371 32 3.2% 73.7% 32 3.2% futex_abstimed_wait_cancelable 23 2.3% 76.0% 23 2.3% __libc_write 21 2.1% 78.2% 23 2.3% __libc_recv 18 1.8% 80.0% 18 1.8% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/misc/../sysdeps/unix/syscall-template.S:84 17 1.7% 81.7% 17 1.7% __libc_read 15 1.5% 83.2% 15 1.5% clnt_req_xid_cmpf 14 1.4% 84.6% 14 1.4% _int_free 14 1.4% 86.0% 14 1.4% futex_wake 11 1.1% 87.2% 13 1.3% __GI_epoll_pwait 8 0.8% 88.0% 9 0.9% _int_malloc 8 0.8% 88.8% 494 49.9% svc_rqst_expire_insert 7 0.7% 89.5% 20 2.0% __libc_calloc 7 0.7% 90.2% 7 0.7% opr_rbtree_first 6 0.6% 90.8% 6 0.6% __GI___libc_free 5 0.5% 91.3% 5 0.5% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/nptl/../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135 5 0.5% 91.8% 150 15.2% svc_vc_recv 5 0.5% 92.3% 470 47.5% work_pool_thread 4 0.4% 92.7% 4 0.4% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/nptl/../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:133 3 0.3% 93.0% 3 0.3% __condvar_dec_grefs 3 0.3% 93.3% 3 0.3% atomic_add_uint64_t 2 0.2% 93.5% 2 0.2% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/inet/../sysdeps/x86_64/htonl.S:29 2 0.2% 93.7% 2 0.2% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/nptl/../sysdeps/unix/sysv/linux/x86_64/cancellation.S:67 2 0.2% 93.9% 34 3.4% __pthread_mutex_unlock_usercnt 2 0.2% 94.1% 2 0.2% _seterr_reply 2 0.2% 94.3% 2 0.2% atomic_add_uint32_t@2665d 2 0.2% 94.5% 9 0.9% clnt_req_release 2 0.2% 94.7% 2 0.2% malloc_consolidate 2 0.2% 94.9% 142 14.4% svc_ioq_flushv 2 0.2% 95.1% 3 0.3% svc_ref_it@401421 2 0.2% 95.3% 255 25.8% svc_rqst_epoll_loop 2 0.2% 95.6% 12 1.2% xdr_ioq_release 2 0.2% 95.8% 6 0.6% xdr_ioq_setup 1 0.1% 95.9% 1 0.1% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/misc/../sysdeps/unix/syscall-template.S:84 1 0.1% 96.0% 1 0.1% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/nptl/../sysdeps/unix/sysv/linux/x86_64/cancellation.S:59 1 0.1% 96.1% 1 0.1% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/nptl/../sysdeps/unix/sysv/linux/x86_64/cancellation.S:60 1 0.1% 96.2% 1 0.1% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/nptl/../sysdeps/unix/sysv/linux/x86_64/cancellation.S:67 1 0.1% 96.3% 1 0.1% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/string/../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:296 1 0.1% 96.4% 1 0.1% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/string/../sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S:158 1 0.1% 96.5% 1 0.1% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/string/../sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S:189 1 0.1% 96.6% 1 0.1% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/string/../sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S:193 1 0.1% 96.7% 1 0.1% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/nptl/../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:138 1 0.1% 96.8% 1 0.1% 0x00007fffde7caa20 1 0.1% 96.9% 1 0.1% 0x00007fffde7caa25 1 0.1% 97.0% 1 0.1% 0x00007fffde7caaa1 1 0.1% 97.1% 1 0.1% __GI___libc_malloc 1 0.1% 97.2% 1 0.1% __condvar_get_private 1 0.1% 97.3% 1 0.1% __pthread_cond_destroy 1 0.1% 97.4% 1 0.1% __pthread_cond_signal 1 0.1% 97.5% 1 0.1% __pthread_cond_wait_common 1 0.1% 97.6% 1 0.1% _init 1 0.1% 97.7% 1 0.1% alloc_perturb 1 0.1% 97.8% 1 0.1% atomic_add_uint32_t@401377 1 0.1% 97.9% 1 0.1% atomic_dec_uint32_t@e3d8 1 0.1% 98.0% 2 0.2% atomic_inc_uint32_t@401394 1 0.1% 98.1% 4 0.4% atomic_inc_uint64_t 1 0.1% 98.2% 1 0.1% atomic_postclear_uint32_t_bits 1 0.1% 98.3% 1 0.1% atomic_postset_uint16_t_bits 1 0.1% 98.4% 1 0.1% atomic_sub_uint32_t 1 0.1% 98.5% 507 51.3% clnt_req_callback 1 0.1% 98.6% 9 0.9% clnt_req_setup 1 0.1% 98.7% 24 2.4% ev_sig 1 0.1% 98.8% 8 0.8% svc_ioq_write_submit 1 0.1% 98.9% 1 0.1% svc_release_it@268c0 1 0.1% 99.0% 1 0.1% svc_release_it@2ff36 1 0.1% 99.1% 180 18.2% svc_rqst_epoll_events 1 0.1% 99.2% 42 4.2% svc_rqst_expire_remove 1 0.1% 99.3% 257 26.0% svc_rqst_run_task 1 0.1% 99.4% 3 0.3% xdr_dplx_decode 1 0.1% 99.5% 1 0.1% xdr_getenum 1 0.1% 99.6% 1 0.1% xdr_inline_decode 1 0.1% 99.7% 18 1.8% xdr_ioq_create 1 0.1% 99.8% 18 1.8% xdr_ioq_destroy 1 0.1% 99.9% 19 1.9% xdr_ioq_destroy_internal 1 0.1% 100.0% 10 1.0% xdr_ioq_uv_release 0 0.0% 100.0% 989 100.0% ?? /usr/src/debug/glibc-2.26-137-g247c1ddd30/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95 0 0.0% 100.0% 3 0.3% __GI___clock_gettime 0 0.0% 100.0% 1 0.1% atomic_dec_uint32_t@266b9 0 0.0% 100.0% 1 0.1% atomic_inc_uint32_t@2667a 0 0.0% 100.0% 1 0.1% clnt_req_fini 0 0.0% 100.0% 65 6.6% clnt_req_process_reply 0 0.0% 100.0% 1 0.1% clnt_req_reset 0 0.0% 100.0% 12 1.2% clnt_vc_call 0 0.0% 100.0% 17 1.7% consume_ev_sig_nb 0 0.0% 100.0% 83 8.4% decode_request 0 0.0% 100.0% 1 0.1% grow_heap 0 0.0% 100.0% 14 1.4% mem_free 0 0.0% 100.0% 10 1.0% opr_rbtree_lookup 0 0.0% 100.0% 1 0.1% rpc_dplx_rlt 0 0.0% 100.0% 989 100.0% start_thread 0 0.0% 100.0% 157 15.9% svc_ioq_write 0 0.0% 100.0% 157 15.9% svc_ioq_write_callback 0 0.0% 100.0% 1 0.1% svc_ref_it@2684d 0 0.0% 100.0% 18 1.8% svc_rqst_epoll_event 0 0.0% 100.0% 18 1.8% svc_rqst_rearm_events 0 0.0% 100.0% 1 0.1% svc_rqst_release 0 0.0% 100.0% 151 15.3% svc_rqst_xprt_task 0 0.0% 100.0% 68 6.9% svc_vc_decode 0 0.0% 100.0% 14 1.4% tirpc_calloc 0 0.0% 100.0% 18 1.8% tirpc_free 0 0.0% 100.0% 1 0.1% tirpc_malloc 0 0.0% 100.0% 16 1.6% work_pool_submit 0 0.0% 100.0% 519 52.5% worker 0 0.0% 100.0% 10 1.0% worker_cb 0 0.0% 100.0% 1 0.1% xdr_ioq_putbytes 0 0.0% 100.0% 4 0.4% xdr_ioq_uv_create 0 0.0% 100.0% 1 0.1% xdr_reply_decode
I was surprised at how much IO (the expected bottlenecks: recv, write) are completely swamped by two problems! Noting that the top problem is exactly my prediction by knowledge of the code: clnt_req_callback() opr_rbtree_insert() The second is also exactly as expected: svc_rqst_expire_insert() opr_rbtree_insert() svc_rqst_expire_cmpf() These are both inserted in ascending order, sorted in ascending order, and removed in ascending order.... QED: rb_tree is a poor data structure for this purpose. ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Nfs-ganesha-devel mailing list Nfs-ganesha-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel