When zcero copy send is enabled and used by initiator, it could significantly increase latency in some payloads. To enable more fine graing configuration of zero copy send feature, add new parameters enable_zerocopy_send_server and enable_zerocopy_send_client to spdk_sock_impl_opts to enable/disable zcopy for specific type of sockets. Exisiting enable_zerocopy_send parameter affects all types of sockets. Signed-off-by: Alexey Marchuk <alexeymar@mellanox.com> Change-Id: I111c75608f8826980a56e210c076ab8ff16ddbdc Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7457 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Karol Latecki <karol.latecki@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
71 lines
2.7 KiB
Python
71 lines
2.7 KiB
Python
def sock_impl_get_options(client, impl_name=None):
|
|
"""Get parameters for the socket layer implementation.
|
|
|
|
Args:
|
|
impl_name: name of socket implementation, e.g. posix
|
|
"""
|
|
params = {}
|
|
|
|
params['impl_name'] = impl_name
|
|
|
|
return client.call('sock_impl_get_options', params)
|
|
|
|
|
|
def sock_impl_set_options(client,
|
|
impl_name=None,
|
|
recv_buf_size=None,
|
|
send_buf_size=None,
|
|
enable_recv_pipe=None,
|
|
enable_zerocopy_send=None,
|
|
enable_quickack=None,
|
|
enable_placement_id=None,
|
|
enable_zerocopy_send_server=None,
|
|
enable_zerocopy_send_client=None):
|
|
"""Set parameters for the socket layer implementation.
|
|
|
|
Args:
|
|
impl_name: name of socket implementation, e.g. posix
|
|
recv_buf_size: size of socket receive buffer in bytes (optional)
|
|
send_buf_size: size of socket send buffer in bytes (optional)
|
|
enable_recv_pipe: enable or disable receive pipe (optional)
|
|
enable_zerocopy_send: enable or disable zerocopy on send (optional)
|
|
enable_quickack: enable or disable quickack (optional)
|
|
enable_placement_id: option for placement_id. 0:disable,1:incoming_napi,2:incoming_cpu (optional)
|
|
enable_zerocopy_send_server: enable or disable zerocopy on send for server sockets(optional)
|
|
enable_zerocopy_send_client: enable or disable zerocopy on send for client sockets(optional)
|
|
"""
|
|
params = {}
|
|
|
|
params['impl_name'] = impl_name
|
|
if recv_buf_size is not None:
|
|
params['recv_buf_size'] = recv_buf_size
|
|
if send_buf_size is not None:
|
|
params['send_buf_size'] = send_buf_size
|
|
if enable_recv_pipe is not None:
|
|
params['enable_recv_pipe'] = enable_recv_pipe
|
|
if enable_zerocopy_send is not None:
|
|
params['enable_zerocopy_send'] = enable_zerocopy_send
|
|
if enable_quickack is not None:
|
|
params['enable_quickack'] = enable_quickack
|
|
if enable_placement_id is not None:
|
|
params['enable_placement_id'] = enable_placement_id
|
|
if enable_zerocopy_send_server is not None:
|
|
params['enable_zerocopy_send_server'] = enable_zerocopy_send_server
|
|
if enable_zerocopy_send_client is not None:
|
|
params['enable_zerocopy_send_client'] = enable_zerocopy_send_client
|
|
|
|
return client.call('sock_impl_set_options', params)
|
|
|
|
|
|
def sock_set_default_impl(client, impl_name=None):
|
|
"""Set the default socket implementation.
|
|
|
|
Args:
|
|
impl_name: name of socket implementation, e.g. posix
|
|
"""
|
|
params = {}
|
|
|
|
params['impl_name'] = impl_name
|
|
|
|
return client.call('sock_set_default_impl', params)
|