-
Task
-
Resolution: Done
-
Undefined
-
None
-
None
-
False
-
None
-
False
-
-
This task is about testing the impact of changes to Asynchronous Buffer Counts to see if there is impact to the datastore read rate, and overall migraiton time.
Please create an initial benchmark in your env using forklift upstream with no changes, running 1 vm of 50G, and 10Vm's of 50G
Next please adjust VixDiskLib.nfcAio.Session.BufSizeIn64KB=16 and nvixDiskLib.nfcAio.Session.BufCount=4
To do this please use Arik's instructions which can be found in the mail 'asynchronous I/O buffers for NBD transport'
I am pasting these steps from mail, but follow that email thread incase these steps change or get updated.
1. deploy latest Forklift
1.1. run:
cat << EOF | oc apply -f -
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
name: forklift-devel
namespace: openshift-marketplace
spec:
displayName: Forklift (devel)
publisher: Konveyor
sourceType: grpc
image: quay.io/kubev2v/forklift-operator-index:latest
EOF
1.2. install the community operator "Forklift (devel)" from the OperatorHub (it will show you version 2.7.0)
2. update images
2.1. "oc -n konveyor-forklift edit csv forklift-operator.v2.7.0"
2.2. in order to get the modified image of forklift-controller, replace the value of "CONTROLLER_IMAGE" with: quay.io/ahadas/forklift-controller:perf
2.3. in order to avoid pulling the image of forklift-virt-v2v every time, replace the value of "VIRT_V2V_IMAGE" with: quay.io/kubev2v/forklift-virt-v2v:perf
3. configure a configmap named 'perf' on the target namespace
3.1. create a configmap: oc -n konveyor-forklift create cm perf
3.2. convert the content of a file to base64
3.2.1. For example: echo -e "VixDiskLib.nfcAio.Session.BufSizeIn64KB=16\nvixDiskLib.nfcAio.Session.BufCount=4" | base64
3.3. edit the configmap: oc -n konveyor-forklift edit cm perf
3.4. add a key-value pair to the configmap
3.4.1. for example, see the 'binaryData' section in:
apiVersion: v1
kind: ConfigMap
binaryData:
input.conf: Vml4RGlza0xpYi5uZmNBaW8uU2Vzc2lvbi5CdWZTaXplSW42NEtCPTE2CnZpeERpc2tMaWIubmZjQWlvLlNlc3Npb24uQnVmQ291bnQ9NAo=
metadata:
creationTimestamp: "2024-06-20T10:11:44Z"
name: perf
namespace: konveyor-forklift
resourceVersion: "2854262"
uid: 1fb6671b-7190-47da-a719-b41cc49315a8
4. set the parameter for virt-v2v that refers to the file that was created at the previous step
4.1. edit 'ForkliftController': oc -n konveyor-forklift edit forkliftcontroller forklift-controller
4.2. set the additional parameter in virt_v2v_extra_args
4.2.1 for example:
apiVersion: forklift.konveyor.io/v1beta1
kind: ForkliftController
metadata:
creationTimestamp: "2024-06-20T09:03:51Z"
generation: 1
name: forklift-controller
namespace: konveyor-forklift
resourceVersion: "2826378"
uid: 15c97a54-60e5-424d-a989-d06312d7c77e
spec:
feature_ui_plugin: "true"
feature_validation: "true"
feature_volume_populator: "true"
virt_v2v_extra_args: "--vddk-config /mnt/perf/input.conf"
5. check that the forklift-controller pod was restarted and the value of "VIRT_V2V_EXTRA_ARGS" in its environment variables is set according to what you defined in the previous step
6. run a migration
6.1. check that the new parameter was passed to virt-v2v by checking the second line in the log
6.1.1. for example:
exec: /usr/bin/virt-v2v v -x --root first -i libvirt -ic vpx://administrator%40vsphere.local@rhev-node-05.rdu2.scalelab.redhat.com/Datacenter/host/auto-test/MTV/f01-h27-000-r640.rdu2.scalelab.redhat.com -o local -os /var/tmp/v2v -ip /etc/secret/secretKey -it vddk -io vddk-libdir=/opt/vmware-vix-disklib-distrib -io vddk-thumbprint=31:14:EB:9E:F1:78:68:10:A5:78:D1:A7:DF:BB:54:B7:1B:91:9F:30 --vddk-config /mnt/perf/input.conf - mtv-win2016-sanity
6.2. you can inspect the files that are set in the configmap by connecting to the container and browse /mnt/perf/
1) No tunings
2) Increase Hostd memory:
3) vixDiskLib.nfcAio.Session.BufSizeIn64KB=16
vixDiskLib.nfcAio.Session.BufCount=4