658d118c06
For the latest TLC NAND, one write buffer unit (rwb batch) needs to be spread over three PUs instead of being allocated to a single PU for better sequential read performance since the optimal write size(ws_opt) of 3D TLC NAND is 3 times bigger than the optimal read size(rs_opt). I added num_interleave_units in 'struct spdk_ftl_conf' to configure the number of interleaving units per ws_opt. If num_interleave_units is set as 1, the whole of the ws_opt blocks are placed sequentially around each PU. If num_interleave_units is set as N, the 1/N of the ws_opt blocks are staggered. So consecutively numbered blocks are separated by ws_opt / num_interleave_units. The sequential read performance is improved from 1.9GiB/s up to 2.97GiB/S with this patch on our system. No performance degradation is observed on sequential writes or 4KB random reads/writes. Please refer to the Trello card for more details. https://trello.com/c/Osol93ZU Change-Id: I371e72067b278ef43c3ac87a3d9ce9010d3fcb15 Signed-off-by: Claire J. In <claire.in@circuitblvd.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/450976 Reviewed-by: Young Tack Jin <youngtack.jin@circuitblvd.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Wojciech Malikowski <wojciech.malikowski@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> |
||
---|---|---|
.. | ||
bdev | ||
blob | ||
blobfs | ||
conf | ||
copy | ||
env_dpdk | ||
event | ||
ftl | ||
ioat | ||
iscsi | ||
json | ||
jsonrpc | ||
log | ||
lvol | ||
nbd | ||
net | ||
notify | ||
nvme | ||
nvmf | ||
reduce | ||
rocksdb | ||
rpc | ||
scsi | ||
sock | ||
thread | ||
trace | ||
ut_mock | ||
util | ||
vhost | ||
virtio | ||
Makefile |