scripts/vagrant: Add support for configuring FDP per nvme
Change-Id: Id647a02b82f7ede25496bbbbc420ef7d13d8f9af Signed-off-by: Michal Berger <michal.berger@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17771 Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
3023e70585
commit
10c815f76c
30
scripts/vagrant/Vagrantfile
vendored
30
scripts/vagrant/Vagrantfile
vendored
@ -146,15 +146,37 @@ def setup_nvme_disk(libvirt, disk, index)
|
||||
nvme_pmrs=(ENV['NVME_PMR'] || "").split(',')
|
||||
nvme_zns=(ENV['NVME_ZNS'] || "").split(',')
|
||||
nvme_ms=(ENV['NVME_MS'] || "").split(',')
|
||||
|
||||
nvme_fdp=(ENV['NVME_FDP'] || "").split(',')
|
||||
|
||||
namespace_disks = []
|
||||
pmr_cmdline = ""
|
||||
nvme_controller = ""
|
||||
fdp_subsys = ""
|
||||
fdp_subsys_id = ""
|
||||
|
||||
# Define controller
|
||||
nvme_controller = "nvme,id=#{nvme_disk_id},serial=1234#{index}"
|
||||
|
||||
# For the FDP, we need to hook our nvme into a dedicated subsystem
|
||||
if !nvme_fdp[index].nil? && nvme_fdp[index] != ""
|
||||
fdp_subsys_id = "fdp-subsys#{index}"
|
||||
fdp = nvme_fdp[index].split(':')[0..3]
|
||||
fdp_ruhs = (nvme_fdp[index].split(':')[4..]) # fdp.ruhs per ns
|
||||
|
||||
# Put some defaults in place if needed
|
||||
fdp_enable = "#{fdp[0] != nil && fdp[0] != '' ? fdp[0] : 'off'}"
|
||||
fdp_runs = "#{fdp[1] != nil && fdp[1] != '' ? fdp[1] : '96M'}"
|
||||
fdp_nrg = "#{fdp[2] != nil && fdp[2] != '' ? fdp[2] : 2}"
|
||||
fdp_nruh = "#{fdp[3] != nil && fdp[3] != '' ? fdp[3] : 8}"
|
||||
|
||||
fdp_subsys = "nvme-subsys,id=#{fdp_subsys_id},fdp=#{fdp_enable}"
|
||||
fdp_subsys << ",fdp.runs=#{fdp_runs},fdp.nrg=#{fdp_nrg},fdp.nruh=#{fdp_nruh}"
|
||||
|
||||
nvme_controller << ",subsys=#{fdp_subsys_id}"
|
||||
|
||||
libvirt.qemuargs :value => "-device"
|
||||
libvirt.qemuargs :value => fdp_subsys
|
||||
end
|
||||
# Gather all drives - each namespace requires separate drive
|
||||
if nvme_namespaces[index].nil?
|
||||
namespace_disks = namespace_disks + nvme_disk.split()
|
||||
@ -195,10 +217,14 @@ def setup_nvme_disk(libvirt, disk, index)
|
||||
end
|
||||
zoned = nvme_zns[index].nil? ? "false" : "true"
|
||||
ms = nvme_ms[index].nil? ? "" : ",ms=64"
|
||||
ns = "nvme-ns,drive=#{nvme_disk_id}-drive#{nsid},bus=#{nvme_disk_id},nsid=#{nsid + 1},zoned=#{zoned},logical_block_size=4096,physical_block_size=4096#{ms}"
|
||||
if !fdp_ruhs.nil? && !fdp_ruhs[nsid].nil? && fdp_ruhs[nsid] != ""
|
||||
ns << ",fdp.ruhs=#{fdp_ruhs[nsid]}"
|
||||
end
|
||||
libvirt.qemuargs :value => "-drive"
|
||||
libvirt.qemuargs :value => "format=raw,file=#{disk},if=none,id=#{nvme_disk_id}-drive#{nsid}"
|
||||
libvirt.qemuargs :value => "-device"
|
||||
libvirt.qemuargs :value => "nvme-ns,drive=#{nvme_disk_id}-drive#{nsid},bus=#{nvme_disk_id},nsid=#{nsid + 1},zoned=#{zoned},logical_block_size=4096,physical_block_size=4096#{ms}"
|
||||
libvirt.qemuargs :value => ns
|
||||
}
|
||||
|
||||
end
|
||||
|
@ -34,13 +34,16 @@ display_help() {
|
||||
echo " If no -b option is specified then this option defaults to emulating single"
|
||||
echo " NVMe with 1 namespace and assumes path: /var/lib/libvirt/images/nvme_disk.img"
|
||||
echo " -b option can be used multiple times for attaching multiple files to the VM"
|
||||
echo " Parameters for -b option: <path>,<type>,<ns_path1[:ns_path1:...]>,<cmb>,<pmr_file[:pmr_size]>,<zns>,<ms>"
|
||||
echo " Parameters for -b option: <path>,<type>,<ns_path1[:ns_path1:...]>,<cmb>,<pmr_file[:pmr_size]>,<zns>,<ms>,<fdp>"
|
||||
echo " Available types: nvme"
|
||||
echo " Default pmr size: 16M"
|
||||
echo " Default cmb: false"
|
||||
echo " Default zns: false"
|
||||
echo " Default ms: none"
|
||||
echo " type, ns_path, cmb, pmr, zns and ms can be empty"
|
||||
echo " Default fdp: 96M:2:8[:1;2;3:1...] (fdp.runs:fdp.nrg:fdp.nruh:fdp.ruhs)"
|
||||
echo " type, ns_path, cmb, pmr, zns, ms and fdp can be empty"
|
||||
echo " fdp.ruhs defines fdp.ruhs per ns, e.g.: 4;5;6:1 would set 4;5;6 for ns=1,"
|
||||
echo " and 1 for ns=2."
|
||||
echo " -c Create all above disk, default 0"
|
||||
echo " -H Use hugepages for allocating VM memory. Only for libvirt provider. Default: false."
|
||||
echo " -u Use password authentication to the VM instead of SSH keys."
|
||||
@ -204,7 +207,7 @@ if [ -z "$NVME_FILE" ]; then
|
||||
else
|
||||
TMP=""
|
||||
for args in $NVME_FILE; do
|
||||
while IFS=, read -r path type namespace cmb pmr zns ms; do
|
||||
while IFS=, read -r path type namespace cmb pmr zns ms fdp; do
|
||||
TMP+="$path,"
|
||||
if [ -z "$type" ]; then
|
||||
type="nvme"
|
||||
@ -215,6 +218,7 @@ else
|
||||
NVME_DISKS_TYPE+="$type,"
|
||||
NVME_DISKS_NAMESPACES+="$namespace,"
|
||||
NVME_MS+="$ms,"
|
||||
NVME_FDP+="$fdp,"
|
||||
if [ ${NVME_AUTO_CREATE} = 1 ]; then
|
||||
$SPDK_DIR/scripts/vagrant/create_nvme_img.sh -n $path
|
||||
fi
|
||||
@ -238,6 +242,7 @@ if [ ${VERBOSE} = 1 ]; then
|
||||
echo NVME_PMR=$NVME_PMR
|
||||
echo NVME_ZNS=$NVME_ZNS
|
||||
echo NVME_MS=$NVME_MS
|
||||
echo NVME_FDP=$NVME_FDP
|
||||
echo SPDK_VAGRANT_DISTRO=$SPDK_VAGRANT_DISTRO
|
||||
echo SPDK_VAGRANT_VMCPU=$SPDK_VAGRANT_VMCPU
|
||||
echo SPDK_VAGRANT_VMRAM=$SPDK_VAGRANT_VMRAM
|
||||
@ -265,6 +270,7 @@ export NVME_CMB
|
||||
export NVME_PMR
|
||||
export NVME_ZNS
|
||||
export NVME_MS
|
||||
export NVME_FDP
|
||||
export NVME_DISKS_TYPE
|
||||
export NVME_DISKS_NAMESPACES
|
||||
export NVME_FILE
|
||||
|
Loading…
Reference in New Issue
Block a user