| 0c2b10f2 | 27-Apr-2022 |
Konrad Sztyber <konrad.sztyber@intel.com> |
sma: initial support for volume connection via discovery
This patch adds support for connecting volumes via discovery service. The user specifies a volume UUID/GUID and a list of discovery endpoints
sma: initial support for volume connection via discovery
This patch adds support for connecting volumes via discovery service. The user specifies a volume UUID/GUID and a list of discovery endpoints, which are then used to start the discovery service on and attach the volume to a device.
SMA will keep track of the attached volumes and will also refcount the connections to discovery services. So if two volumes are attached using the same discovery endpoint, it'll be disconnected only after both of them are detached.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: Ie8ea50a2a784cf0db8a5953234c6bb2b68685d7c Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12413 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
show more ...
|
| 20e3fb36 | 17-May-2022 |
Konrad Sztyber <konrad.sztyber@intel.com> |
sma: pass config to StorageManagementAgent's __init__
This will make it easier to control various options through config file.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I1
sma: pass config to StorageManagementAgent's __init__
This will make it easier to control various options through config file.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I19ab9c020d536521f5985227bc43965bd04d2707 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12724 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
show more ...
|
| 4ee3d468 | 23-Feb-2022 |
Konrad Sztyber <konrad.sztyber@intel.com> |
sma: handle SIGINT and SIGTERM signals
If the app is killed with either one of these signals, it'll shutdown gracefully and exit with zero.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com>
sma: handle SIGINT and SIGTERM signals
If the app is killed with either one of these signals, it'll shutdown gracefully and exit with zero.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I630f9e34c3ccb382c8e1b53d0f589f3ec4d1483b Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11727 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
show more ...
|
| c77f17a5 | 19-May-2022 |
wanghailiangx <hailiangx.e.wang@intel.com> |
bdev_malloc and bdev_null : remove support for deprecated RPC names
These were deprecated in 2019, it's time to remove support for them now.
Change-Id: Ic80ce74344b24814dad792cfff6a4791d0430527 Sig
bdev_malloc and bdev_null : remove support for deprecated RPC names
These were deprecated in 2019, it's time to remove support for them now.
Change-Id: Ic80ce74344b24814dad792cfff6a4791d0430527 Signed-off-by: wanghailiangx <hailiangx.e.wang@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12741 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
| c802dbe9 | 18-Feb-2022 |
Konrad Sztyber <konrad.sztyber@intel.com> |
sma: add device protocol name
A device can now be identified by a protocol and a name. This allows to have multiple types of devices providing the same protocol. The selection of which device mana
sma: add device protocol name
A device can now be identified by a protocol and a name. This allows to have multiple types of devices providing the same protocol. The selection of which device manager to use for specific protocol will be added in following patches.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: Ib4a6c323ba6a2a5d36ff958ddc40631fd9329cb1 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11683 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
| e5e43f96 | 15-Nov-2021 |
Konrad Sztyber <konrad.sztyber@intel.com> |
sma: add golang package definitions
It makes it possible to generate golang code from the SMA's protobuf definitions.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I6f03bc2b60
sma: add golang package definitions
It makes it possible to generate golang code from the SMA's protobuf definitions.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I6f03bc2b602f93ea608597e863cb9e016b68f12e Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10279 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
| ae60344e | 05-Nov-2021 |
Konrad Sztyber <konrad.sztyber@intel.com> |
sma: volume attach/detach
This patch implements the Volume(Attach|Detach) methods.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I639f1e7b6d4d5a3e52795f9c8b1ae890407e2375 Revi
sma: volume attach/detach
This patch implements the Volume(Attach|Detach) methods.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I639f1e7b6d4d5a3e52795f9c8b1ae890407e2375 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10277 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
| 2ea87479 | 28-Oct-2021 |
Konrad Sztyber <konrad.sztyber@intel.com> |
sma: device deletion
This patch implements the generic DeleteDevice method as well as its NVMe/TCP implementation.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: Ie7aea6b12c399
sma: device deletion
This patch implements the generic DeleteDevice method as well as its NVMe/TCP implementation.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: Ie7aea6b12c399aec242746e5fae108623a3a161a Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10274 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
| 509241ce | 05-Jan-2022 |
Konrad Sztyber <konrad.sztyber@intel.com> |
configure: add switch for enabling SMA
The SMA requires some extra python packages during the build to generate the protobuf interface, so this option will select whether it's enabled or not. Addit
configure: add switch for enabling SMA
The SMA requires some extra python packages during the build to generate the protobuf interface, so this option will select whether it's enabled or not. Additionally, the dependencies are added to `pkgdep.sh` in this patch.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: Ib0d75c86d4d8575ec1245b219b4e96edb773b366 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10974 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Dong Yi <dongx.yi@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Monica Kenguva <monica.kenguva@intel.com> Reviewed-by: Karol Latecki <karol.latecki@intel.com>
show more ...
|
| 048fb36a | 05-Jan-2022 |
Konrad Sztyber <konrad.sztyber@intel.com> |
sma: initial Storage Management Agent structures
Storage Management Agent is a gRPC server that provides an abstraction layer above the SPDK RPC interface. The interface aims to provide a set of me
sma: initial Storage Management Agent structures
Storage Management Agent is a gRPC server that provides an abstraction layer above the SPDK RPC interface. The interface aims to provide a set of methods for managing various protocols (e.g. NVMe, virtio-blk) while hiding the details of a particular transport.
The external API is defined by `lib/python/spdk/sma/proto/sma.proto` protobuf file. It defines the generic gRPC service methods and their requests/responses. Device-specific messages are defined in their own files. This patch also defines messages for creating NVMe and NVMe/TCP devices.
This patch implements a gRPC service that delegates the work to a specific device type. A DeviceManager is a class that implements some of the methods defined by the service for a given type of devices (e.g. NVMe, virtio-blk, NVMe/TCP, etc.). For now, only the RPC for creating a device is implemented, others are added in subsequent patches.
The series implements the generic calls as well as their NVMe/TCP implementation. Support for other devce types could be easily added by creating a new device manager and defining its protobuf parameter definition.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I17cde3b31d3514878f1027cfcd112b48848f6123 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10273 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
| e5f9e822 | 12-May-2022 |
Konrad Sztyber <konrad.sztyber@intel.com> |
bdev/nvme: add timeout option to start_discovery
It's now possible to specify a time to wait until a connection to the discovery controller and the NVM controllers it exposes is made.
Whenever that
bdev/nvme: add timeout option to start_discovery
It's now possible to specify a time to wait until a connection to the discovery controller and the NVM controllers it exposes is made.
Whenever that time is exceeded, a callback is immediately executed. However, depending on the stage of the discovery process, we might need to wait a while before actually stopping it (e.g. because a controller attach is in progress). That means that a discovery service might be visible for a while after it timed out.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I2d01837b581e0fa24c8e777730d88d990c94b1d8 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12684 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
| 00d46b80 | 02-May-2022 |
Shuhei Matsumoto <smatsumoto@nvidia.com> |
bdev/nvme: Disable automatic failback in multipath mode
By default, failback to the preferred I/O path is done automatically if it is restored. Some users may want to keep using the backup I/O path
bdev/nvme: Disable automatic failback in multipath mode
By default, failback to the preferred I/O path is done automatically if it is restored. Some users may want to keep using the backup I/O path even if the preferred I/O path is restored. In this case, bdev_nvme_set_preferred_path can be used to do manual failback.
We may be able to clear/fill I/O path cache more strictly but it will be complicated and have bugs. This patch does the minimal change, just skips an apparent case.
Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Change-Id: I78fe5faee6ff04e88ae3d7c6be6da1c20637c912 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12431 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
show more ...
|
| 14273794 | 10-May-2022 |
wanghailiangx <hailiangx.e.wang@intel.com> |
nvmf: remove support for deprecated RPC names
These were deprecated in 2019, it's time to remove support for them now.
Change-Id: I3b75eea83bd7d700d20a6189e8fb6d1f066dc9b4 Signed-off-by: wanghailia
nvmf: remove support for deprecated RPC names
These were deprecated in 2019, it's time to remove support for them now.
Change-Id: I3b75eea83bd7d700d20a6189e8fb6d1f066dc9b4 Signed-off-by: wanghailiangx <hailiangx.e.wang@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12603 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
| d8d29ec0 | 10-May-2022 |
wanghailiangx <hailiangx.e.wang@intel.com> |
log: remove support for deprecated RPC names
These were deprecated in 2019, it's time to remove support for them now.
Change-Id: I32dd9960bc397244d8e3d0a384fc8b67e907bf68 Signed-off-by: wanghailian
log: remove support for deprecated RPC names
These were deprecated in 2019, it's time to remove support for them now.
Change-Id: I32dd9960bc397244d8e3d0a384fc8b67e907bf68 Signed-off-by: wanghailiangx <hailiangx.e.wang@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12601 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
| 10ba9348 | 07-May-2022 |
wanghailiangx <hailiangx.e.wang@intel.com> |
nbd: remove support for deprecated RPC names
These were deprecated in 2019, it's time to remove support for them now.
Change-Id: I6931e80c836b568dec8989dad2a7be4e112c42b4 Signed-off-by: wanghailian
nbd: remove support for deprecated RPC names
These were deprecated in 2019, it's time to remove support for them now.
Change-Id: I6931e80c836b568dec8989dad2a7be4e112c42b4 Signed-off-by: wanghailiangx <hailiangx.e.wang@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12577 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
| 47bc5870 | 11-Apr-2022 |
Jim Harris <james.r.harris@intel.com> |
bdev: remove support for deprecated RPC names
These were deprecated in 2019, it's time to remove support for them now.
Fix ocf test script that was still using the deprecated get_bdevs RPC name - c
bdev: remove support for deprecated RPC names
These were deprecated in 2019, it's time to remove support for them now.
Fix ocf test script that was still using the deprecated get_bdevs RPC name - change it to bdev_get_bdevs.
Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: I7f8caedc250b80503671a0236694181613f63860 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12553 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
show more ...
|
| febe9002 | 11-Apr-2022 |
Jim Harris <james.r.harris@intel.com> |
iscsi, scsi: remove support for deprecated RPC names
These were deprecated in 2019, it's time to remove support for them now.
Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: I2c9918
iscsi, scsi: remove support for deprecated RPC names
These were deprecated in 2019, it's time to remove support for them now.
Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: I2c9918ed0296f644b0728c5106c47d93e3c7ec30 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12552 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
show more ...
|
| f331ae16 | 26-Apr-2022 |
Konrad Sztyber <konrad.sztyber@intel.com> |
bdev/nvme: add RPC returning information about discovery service
The RPC returns a list of active discovery service connections. Each discovery service is described by a name, its trid, and a list
bdev/nvme: add RPC returning information about discovery service
The RPC returns a list of active discovery service connections. Each discovery service is described by a name, its trid, and a list of discovery service trids it refers to.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: Ifa4b9501dd353e7b4948ad830575a6c94dafd86b Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12380 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
show more ...
|
| 8f9b9775 | 29-Apr-2022 |
Shuhei Matsumoto <smatsumoto@nvidia.com> |
bdev/nvme: Add active/active policy for multipath mode
The NVMe bdev module supported active-passive policy for multipath mode first. By this patch, the NVMe bdev module supports active-active polic
bdev/nvme: Add active/active policy for multipath mode
The NVMe bdev module supported active-passive policy for multipath mode first. By this patch, the NVMe bdev module supports active-active policy for multipath node next. Following the Linux kernel native NVMe multipath, the NVMe bdev module supports round robin algorithm for active-active policy.
The multipath policy, active-passive or active-active, is managed per nvme_bdev. The multipath policy is copied to all corresponding nvme_bdev_channels.
Different from active-passive, active-active caches even non_optimized path to provide load balance across multiple paths.
Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Change-Id: Ie18b24db60d3da1ce2f83725b6cd3079f628f95b Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12001 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
show more ...
|
| 22b77a3c | 13-Apr-2022 |
Shuhei Matsumoto <smatsumoto@nvidia.com> |
bdev/nvme: Set preferred I/O path in multipath mode
If we specify a preferred path manually for each NVMe bdev, we will be able to realize a simple static load balancing and make the failover more c
bdev/nvme: Set preferred I/O path in multipath mode
If we specify a preferred path manually for each NVMe bdev, we will be able to realize a simple static load balancing and make the failover more controllable in the multipath mode.
The idea is to move I/O path to the NVMe-oF controller to the head of the list and then clear the I/O path cache for each NVMe bdev channel. We can set the I/O path to the I/O path cache directly but it must be conditional and make the code very complex. Hence, let find_io_path() do that.
However, a NVMe bdev channel may be acquired after setting the preferred path. To cover such case, sort the nvme_ns list of the NVMe bdev too.
This feature supports only multipath mode. The NVMe bdev module supports failover mode too. However, to support the latter, the new RPC needs to have trid as parameters and the code and the usage will be come very complex. Add a note for such limitation.
To verify one by one exactly, add unit test.
Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Change-Id: Ia51c74f530d6d7dc1f73d5b65f854967363e76b0 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12262 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Reviewed-by: <tanl12@chinatelecom.cn> Reviewed-by: GangCao <gang.cao@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
| 88653b4f | 02-May-2022 |
Boris Glimcher <Boris.Glimcher@emc.com> |
sock: fix typo
`enable_dynamic_zerocopy` is not even defined anywhere
Signed-off-by: Boris Glimcher <Boris.Glimcher@emc.com> Change-Id: I5c7a97bf661db233a5bf62f8eb00170685790cee Signed-off-by: Bori
sock: fix typo
`enable_dynamic_zerocopy` is not even defined anywhere
Signed-off-by: Boris Glimcher <Boris.Glimcher@emc.com> Change-Id: I5c7a97bf661db233a5bf62f8eb00170685790cee Signed-off-by: Boris Glimcher <Boris.Glimcher@emc.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12436 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
| 9bff828f | 07-Dec-2021 |
Richael Zhuang <richael.zhuang@arm.com> |
sock: introduce dynamic zerocopy according to data size
MSG_ZEROCOPY is not always effective as mentioned in https://www.kernel.org/doc/html/v4.15/networking/msg_zerocopy.html.
Currently in spdk, o
sock: introduce dynamic zerocopy according to data size
MSG_ZEROCOPY is not always effective as mentioned in https://www.kernel.org/doc/html/v4.15/networking/msg_zerocopy.html.
Currently in spdk, once we enable sendmsg zerocopy, then all data transferred through _sock_flush are sent with zerocopy, and vice versa. Here dynamic zerocopy is introduced to allow data sent with MSG_ZEROCOPY or not according to its size, which can be enabled by setting "enable_dynamic_zerocopy" as true.
Test with 16 P4610 NVMe SSD, 2 initiators, target's and initiators' configurations are the same as spdk report: https://ci.spdk.io/download/performance-reports/SPDK_tcp_perf_report_2104.pdf
For posix socket, rw_percent=0(randwrite), it has 1.9%~8.3% performance boost tested with target 1~40 cpu cores and qdepth=128,256,512. And it has no obvious influence when read percentage is greater than 50%.
For uring socket, rw_percent=0(randwrite), it has 1.8%~7.9% performance boost tested with target 1~40 cpu cores and qdepth=128,256,512. And it still has 1%~7% improvement when read percentage is greater than 50%.
The following is part of the detailed data.
posix: qdepth=128 rw_percent 0 | 30 cpu origin thisPatch opt | origin thisPatch opt 1 286.5 298.5 4.19% 307 304.15 -0.93% 4 1042.5 1107 6.19% 1135.5 1136 0.04% 8 1952.5 2058 5.40% 2170.5 2170.5 0.00% 12 2658.5 2879 8.29% 3042 3046 0.13% 16 3247.5 3460.5 6.56% 3793.5 3775 -0.49% 24 4232.5 4459.5 5.36% 4614.5 4756.5 3.08% 32 4810 5095 5.93% 4488 4845 7.95% 40 5306.5 5435 2.42% 4427.5 4902 10.72%
qdepth=512 rw_percent 0 | 30 cpu origin thisPatch opt | origin thisPatch opt 1 275 287 4.36% 294.4 295.45 0.36% 4 979 1041 6.33% 1073 1083.5 0.98% 8 1822.5 1914.5 5.05% 2030.5 2018.5 -0.59% 12 2441 2598.5 6.45% 2808.5 2779.5 -1.03% 16 2920.5 3109.5 6.47% 3455 3411.5 -1.26% 24 3709 3972.5 7.10% 4483.5 4502.5 0.42% 32 4225.5 4532.5 7.27% 4463.5 4733 6.04% 40 4790.5 4884.5 1.96% 4427 4904.5 10.79%
uring: qdepth=128 rw_percent 0 | 30 cpu origin thisPatch opt | origin thisPatch opt 1 270.5 287.5 6.28% 295.75 304.75 3.04% 4 1018.5 1089.5 6.97% 1119.5 1156.5 3.31% 8 1907 2055 7.76% 2127 2211.5 3.97% 12 2614 2801 7.15% 2982.5 3061.5 2.65% 16 3169.5 3420 7.90% 3654.5 3781.5 3.48% 24 4109.5 4414 7.41% 4691.5 4750.5 1.26% 32 4752.5 4908 3.27% 4494 4825.5 7.38% 40 5233.5 5327 1.79% 4374.5 4891 11.81%
qdepth=512 rw_percent 0 | 30 cpu origin thisPatch opt | origin thisPatch opt 1 259.95 276 6.17% 286.65 294.8 2.84% 4 955 1021 6.91% 1070.5 1100 2.76% 8 1772 1903.5 7.42% 1992.5 2077.5 4.27% 12 2380.5 2543.5 6.85% 2752.5 2860 3.91% 16 2920.5 3099 6.11% 3391.5 3540 4.38% 24 3697 3912 5.82% 4401 4637 5.36% 32 4256.5 4454.5 4.65% 4516 4777 5.78% 40 4707 4968.5 5.56% 4400.5 4933 12.10%
Signed-off-by: Richael Zhuang <richael.zhuang@arm.com> Change-Id: I730dcf89ed2bf3efe91586421a89045fc11c81f0 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12210 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
show more ...
|
| 2a6a6448 | 06-Apr-2022 |
Shuhei Matsumoto <smatsumoto@nvidia.com> |
bdev/nvme: Add bdev_nvme_get_io_paths RPC to monitor I/O path states
Add an new RPC bdev_nvme_get_io_paths to query all active I/O paths.
One io_path belongs to One nvme_bdev_channel. Each nvme_bde
bdev/nvme: Add bdev_nvme_get_io_paths RPC to monitor I/O path states
Add an new RPC bdev_nvme_get_io_paths to query all active I/O paths.
One io_path belongs to One nvme_bdev_channel. Each nvme_bdev_channel is associated with one nvme_bdev.
If the RPC bdev_nvme_get_io_paths has a bdev name as a parameter it can use spdk_for_each_channel() simply for the corresponding nvme_bdev.
However, users will want to know I/O paths of all nvme_bdevs like the RPC bdev_get_bdevs.
One io_path has one nvme_qpair. One nvme_qpair belongs to one nvme_poll_group. By relying on these relationships, the RPC bdev_nvme_get_io_paths traverses all nvme_poll_groups by using spdk_for_each_channel() to g_bdev_nvme_ctrlrs.
The RPC bdev_nvme_get_io_paths has two modes, display all or the specified NVMe bdev's active I/O paths.
The specified bdev name is used just for comparison and empty array is returned if no matched io_path is found.
Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Change-Id: I4a0dbf3ef7aaa9a7b7345fc03dc493cc6d37bc99 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12146 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
| 3b047a61 | 02-Mar-2022 |
Andreas Economides <andreas.economides@nutanix.com> |
nvmf/vfio-user: support shadow doorbells
As per the NVMe specification, a host can identify two areas of guest memory: one of which is used for the host-written doorbells, and one of which contains
nvmf/vfio-user: support shadow doorbells
As per the NVMe specification, a host can identify two areas of guest memory: one of which is used for the host-written doorbells, and one of which contains event indexes. The host writes to the shadow doorbell area, but also writes to the controller's BAR0 doorbell area if the corresponding event index is crossed by the update. This avoids many mmio exits in interrupt mode, where BAR0 doorbells are not directly mapped into the guest VM, with greatly improved performance.
This isn't a useful feature in BAR0 doorbells are mapped into the VM, so we explicitly disable support in that case.
NB: the Windows NVMe driver doesn't yet support this feature.
Although the specification says that the admin queues should also engage in this behaviour, in practice, no VM does, so have to include some hacks to account for this.
Co-authored-by: John Levon <john.levon@nutanix.com> Signed-off-by: John Levon <john.levon@nutanix.com> Change-Id: I0646b234d31fbbf9a6b85572042c6cdaf8366659 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11492 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
show more ...
|
| 31db7b13 | 11-Apr-2022 |
zhangduan <zhangd28@chinatelecom.cn> |
nvme_tcp: set transport_ack_timeout to ack_timeout
The value of ack_timeout is calculated according to the formula 2^(transport_ack_timeout) msec.
Signed-off-by: zhangduan <zhangd28@chinatelecom.cn
nvme_tcp: set transport_ack_timeout to ack_timeout
The value of ack_timeout is calculated according to the formula 2^(transport_ack_timeout) msec.
Signed-off-by: zhangduan <zhangd28@chinatelecom.cn> Change-Id: I5a938635d70693ddd405fa5907555bb745b4df0f Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12215 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|