• D. Wythe's avatar
    net/smc: use read semaphores to reduce unnecessary blocking in smc_buf_create() & smcr_buf_unuse() · f6421014
    D. Wythe authored
    Following is part of Off-CPU graph during frequent SMC-R short-lived
    processing:
    
    process_one_work				(51.19%)
    smc_close_passive_work			(28.36%)
    	smcr_buf_unuse				(28.34%)
    	rwsem_down_write_slowpath		(28.22%)
    
    smc_listen_work				(22.83%)
    	smc_clc_wait_msg			(1.84%)
    	smc_buf_create				(20.45%)
    		smcr_buf_map_usable_links
    		rwsem_down_write_slowpath	(20.43%)
    	smcr_lgr_reg_rmbs			(0.53%)
    		rwsem_down_write_slowpath	(0.43%)
    		smc_llc_do_confirm_rkey		(0.08%)
    
    We can clearly see that during the connection establishment time,
    waiting time of connections is not on IO, but on llc_conf_mutex.
    
    What is more important, the core critical area (smcr_buf_unuse() &
    smc_buf_create()) only perfroms read semantics on links, we can
    easily replace it with read semaphore.
    Signed-off-by: default avatarD. Wythe <alibuda@linux.alibaba.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f6421014
smc_core.c 68 KB