05e32e93 | 12-Aug-2024 |
Anisa Su <anisa.su@samsung.com> |
test/unit: add poller_get_stats unit test
Change-Id: Ibf94c19643ba2ae33998dd3b6e5fad174872c9c6 Signed-off-by: Anisa Su <anisa.su@samsung.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+
test/unit: add poller_get_stats unit test
Change-Id: Ibf94c19643ba2ae33998dd3b6e5fad174872c9c6 Signed-off-by: Anisa Su <anisa.su@samsung.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24526 Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <jim.harris@samsung.com> Community-CI: Mellanox Build Bot
show more ...
|
9c56fc47 | 12-Aug-2024 |
Anisa Su <anisa.su@samsung.com> |
test/unit: add poller_get_period_ticks unit test
Change-Id: I76f9f517dd2e16fd9091735575985910ff42cbad Signed-off-by: Anisa Su <anisa.su@samsung.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk
test/unit: add poller_get_period_ticks unit test
Change-Id: I76f9f517dd2e16fd9091735575985910ff42cbad Signed-off-by: Anisa Su <anisa.su@samsung.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24525 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <jim.harris@samsung.com> Community-CI: Mellanox Build Bot Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
show more ...
|
4b534e73 | 12-Aug-2024 |
Anisa Su <anisa.su@samsung.com> |
test/unit: add poller_get_state_str unit test
Change-Id: I469afb87a0626fa70701f2b0ab57811584093952 Signed-off-by: Anisa Su <anisa.su@samsung.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/sp
test/unit: add poller_get_state_str unit test
Change-Id: I469afb87a0626fa70701f2b0ab57811584093952 Signed-off-by: Anisa Su <anisa.su@samsung.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24524 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Reviewed-by: Jim Harris <jim.harris@samsung.com>
show more ...
|
1513b044 | 12-Aug-2024 |
Anisa Su <anisa.su@samsung.com> |
test/unit: add poller_get_id unit test
Change-Id: I2e040a19b9358e33934bafa314bb0f9a5725f550 Signed-off-by: Anisa Su <anisa.su@samsung.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24
test/unit: add poller_get_id unit test
Change-Id: I2e040a19b9358e33934bafa314bb0f9a5725f550 Signed-off-by: Anisa Su <anisa.su@samsung.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24523 Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <jim.harris@samsung.com> Community-CI: Mellanox Build Bot
show more ...
|
f1e8c9ce | 17-Jan-2023 |
Ben Walker <benjamin.walker@intel.com> |
thread: iobuf now grabs from the central pool in batches
This is much more efficient, but it is a slight behavior change. See the unit test change in this patch.
Change-Id: I5eaa49a5bf7a0131d599258
thread: iobuf now grabs from the central pool in batches
This is much more efficient, but it is a slight behavior change. See the unit test change in this patch.
Change-Id: I5eaa49a5bf7a0131d59925806c47aaf03b7c207e Signed-off-by: Ben Walker <benjamin.walker@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16280 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
36df38c0 | 23-Nov-2022 |
Konrad Sztyber <konrad.sztyber@intel.com> |
thread: cache a number of iobuf buffers on each channel
Users can now specify a number of small/large buffers to be cached on each iobuf channel. Previously, we relied on the cache of the underlyin
thread: cache a number of iobuf buffers on each channel
Users can now specify a number of small/large buffers to be cached on each iobuf channel. Previously, we relied on the cache of the underlying spdk_mempool, which has per-core caches. However, since iobuf channels are tied to a module and an SPDK thread, each module and each thread is now guaranteed to have a number of buffers available, so it won't be starved by other modules/threads.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I1e29fe29f78a13de371ab21d3e40bf55fbc9c639 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15634 Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot
show more ...
|
3aceb2da | 26-Oct-2022 |
Konrad Sztyber <konrad.sztyber@intel.com> |
thread: introduce iobuf buffer pools
The idea behind "iobuf" is to have a single place for allocating data buffers across different libraries. That way, each library won't need to allocate its own
thread: introduce iobuf buffer pools
The idea behind "iobuf" is to have a single place for allocating data buffers across different libraries. That way, each library won't need to allocate its own mempools, therefore decreasing the memory footprint of the whole application.
There are two reasons for putting these kind of functions in the thread library. Firstly, the code is pretty small, so it doesn't make sense to create a new library. Secondly, it relies on the IO channel abstraction, so users will need to pull in the thread library anyway.
It's very much inspired by the way bdev layer handles data buffers (much of the code was directly copied over). There are two global mempools, one for small and one for large buffers, and per-thread queues that hold requests waiting for a buffer. The main difference is that we also need to track which module requested a buffer in order to allow users to iterate over its pending requests.
The usage is fairly simple:
``` /* Embed spdk_iobuf_channel into an existing IO channel */ struct foo_channel { ... struct spdk_iobuf_channel iobuf; };
/* Embed spdk_iobuf_entry into objects that will request buffers */ struct foo_object { ... struct spdk_iobuf_entry entry; };
/* Register the module as iobuf user */ spdk_iobuf_register_module("foo");
/* Initialize iobuf channel in foo_channel's create cb */ spdk_iobuf_channel_init(&foo_channel->iobuf, "foo", 0, 0);
/* Finally, request a buffer... */ buf = spdk_iobuf_get(&foo_channel->iobuf, length, &foo_objet.entry, buf_get_cb);
...
/* ...and release it */ spdk_iobuf_put(&foo_channel->iobuf, buf, length);
```
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: Ifaa6934c03ed6587ddba972198e606921bd85008 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15326 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|