Uploaded image for project: 'Migration Toolkit for Virtualization'
  1. Migration Toolkit for Virtualization
  2. MTV-1157

[Scale] Baseline 10 vms with specific host changes [aio buffer counts]

XMLWordPrintable

    • Icon: Task Task
    • Resolution: Done
    • Icon: Undefined Undefined
    • None
    • None
    • Scale&Perf-QE

      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

       

              tzahia Tzahi Ashkenazi
              mlehrer@redhat.com Mordechai Lehrer
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: