numam-spdk/lib
Tomasz Zawadzki 062da7a08a nvme/pcie: reduce physically contiguous memory for CQ/SQ
Following patch made sure that CQ/SQ are allocated in
physically contiguous manner:
(64db67) nvme/pcie: make sure sq and cq are physically contiguous

Using MAX_IO_QUEUE_ENTRIES is enough to make sure that either
queue does not span multiple hugepages.

Yet the patch made sure that whole page is occupied only
by the queue. Which unnecessarily increases memory consumption
up to two hugepages per each qpair.

This patch changes it so that each queue alignment is limited
up to its size.

Changes in hugepages consumed when allocating io_qpair in hello_world
application:
io_queue_size		Without patch	With patch
256			8MiB		0MiB
1024			12MiB		4MiB
4096			24MiB		16MiB
Note: 0MiB means no new hugepages were required and qpair fits into
previously allocated hugepages (see all steps before io_qpair
allocation in hello_world).

Intersting result of this patch is that since we required alignment
up to the hugepage size this resulted in reserving even two 2MiB
hugepages to account for DPDK internal malloc trailing element.
See alloc_sz in try_expand_heap_primary() within malloc_heap.c

This patch not only reduces overall memory reserved for the
queues, but decreases increase in heap consumption on DPDK side.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2244 (master)

(cherry picked from commit d3cf561199)
Change-Id: I75bf86e93674b4822d8204df3fb99458dec61e9c
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2510
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2020-05-28 08:55:44 +00:00
..
bdev nvme: fix command specific status code 2020-03-19 08:09:53 +00:00
blob lib/blob: queue up blob persists when one already is ongoing 2020-03-19 08:09:53 +00:00
blobfs blobfs: write IO directly if it is lba aligned 2020-01-07 12:19:14 +00:00
conf string: spdk_strtol to delegate additional error checking 2019-01-29 00:10:57 +00:00
copy lib/copy: move ioat subdir to module directory. 2019-08-22 16:29:49 +00:00
env_dpdk env_dpdk: dont treat NULL as error in spdk_map_bar_rte() 2020-03-19 08:09:53 +00:00
env_ocf lib/bdev/ocf: update of ocf library to version 19.06 2019-10-22 17:22:41 +00:00
event lib/app: Change signal handler to use spdk_thread_send_critical_msg 2020-01-13 12:42:49 +00:00
ftl lib/ftl: Change "lbk" name to "block" 2020-01-17 08:59:08 +00:00
ioat lib/ioat: Fix the error message when enabling ioat during application shutdown. 2019-12-30 03:09:01 +00:00
iscsi lib/iscsi: Return when connection state is already exited at login completion 2020-03-19 08:09:53 +00:00
json json_util: fix typo in debug message. 2019-05-31 14:39:53 +00:00
jsonrpc json: increase the json rpc client value limit 2019-11-18 13:16:49 +00:00
log lib/log: passing va_list to user-provided log call 2019-10-09 14:35:51 +00:00
log_rpc RPC: rename get_log_flags to log_get_flags 2019-09-24 16:42:41 +00:00
lvol lib/blob: store clear_method in per blob metadata 2020-01-20 09:57:16 +00:00
nbd rpc: Rename get_nbd_disks to nbd_get_disks 2019-09-19 20:56:35 +00:00
net net: add the check for the add and delete IP operation 2019-12-09 17:39:50 +00:00
notify RPC: rename get_notifications to notify_get_notifications 2019-09-24 16:42:41 +00:00
nvme nvme/pcie: reduce physically contiguous memory for CQ/SQ 2020-05-28 08:55:44 +00:00
nvmf rdma: Fix Segmentation fault when not sufficient memory for RDMA queue. 2020-03-19 08:09:53 +00:00
reduce lib/reduce: move _alloc_zero_buf earlier in init stage. 2019-12-19 11:04:57 +00:00
rocksdb RocksDB: Remove static and assert for SpdkInitializeThread 2019-07-05 04:19:11 +00:00
rpc RPC: properly set the address in error cases 2019-12-04 15:11:55 +00:00
rte_vhost vhost: make SPDK internal vhost library can work compatible with live recovery 2020-01-22 13:54:19 +00:00
scsi lib/scsi: Move scsi_task_free_data() in a file to remove function declaration 2019-11-21 08:01:29 +00:00
sock sock/posix: Block recursive calls to spdk_sock_flush 2020-01-31 09:42:34 +00:00
thread thread: free message event after executing the callback successfully 2020-01-22 01:25:03 +00:00
trace trace: fix calculation of histories_size 2019-11-06 15:19:48 +00:00
ut_mock test: Add mocks for sendmsg and recvmsg 2019-11-01 17:56:16 +00:00
util util: Add spdk_iovcpy, an iovec to iovec copy function. 2019-11-20 09:35:32 +00:00
vhost vhost: Fix the issue of virtual machine device parameter max_segments always equal to 1 2020-05-25 15:42:26 +00:00
virtio virtio_user: use correct #ifndef for the internal vhost.h header 2020-01-10 08:45:45 +00:00
vmd lib/vmd: track hotplug memory usage 2019-12-12 14:52:59 +00:00
Makefile make: add dependencies for the rte_vhost build. 2019-09-09 22:15:24 +00:00