cloudstack-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CLOUDSTACK-9428) Fix for CLOUDSTACK-9211 - Improve performance
Date Tue, 23 Aug 2016 03:14:20 GMT

    [ https://issues.apache.org/jira/browse/CLOUDSTACK-9428?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15432054#comment-15432054
] 

ASF GitHub Bot commented on CLOUDSTACK-9428:
--------------------------------------------

Github user serg38 commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1605#discussion_r75796954
  
    --- Diff: plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
---
    @@ -2042,49 +2043,46 @@ protected void postVideoCardMemoryConfigBeforeStart(VirtualMachineMO
vmMo, Virtu
          * Search for vm video card iterating through vm device list
          * @param vmMo virtual machine mo
          * @param svgaVmramSize new svga vram size (in KB)
    +     * @param vmConfigSpec virtual machine config spec
          */
    -    private void setNewVRamSizeVmVideoCard(VirtualMachineMO vmMo, long svgaVmramSize)
throws Exception {
    +    protected void setNewVRamSizeVmVideoCard(VirtualMachineMO vmMo, long svgaVmramSize,
VirtualMachineConfigSpec vmConfigSpec) throws Exception {
             for (VirtualDevice device : vmMo.getAllDeviceList()){
                 if (device instanceof VirtualMachineVideoCard){
                     VirtualMachineVideoCard videoCard = (VirtualMachineVideoCard) device;
    -                modifyVmVideoCardVRamSize(videoCard, vmMo, svgaVmramSize);
    +                modifyVmVideoCardVRamSize(videoCard, vmMo, svgaVmramSize, vmConfigSpec);
                 }
             }
         }
     
         /**
    -     * Modifies vm vram size if it was set to a different size to the one provided in
svga.vramSize (user_vm_details or template_vm_details)
    +     * Modifies vm vram size if it was set to a different size to the one provided in
svga.vramSize (user_vm_details or template_vm_details) on {@code vmConfigSpec}
          * @param videoCard vm's video card device
          * @param vmMo virtual machine mo
          * @param svgaVmramSize new svga vram size (in KB)
    +     * @param vmConfigSpec virtual machine config spec
          */
    -    private void modifyVmVideoCardVRamSize(VirtualMachineVideoCard videoCard, VirtualMachineMO
vmMo, long svgaVmramSize) throws Exception {
    +    private void modifyVmVideoCardVRamSize(VirtualMachineVideoCard videoCard, VirtualMachineMO
vmMo, long svgaVmramSize, VirtualMachineConfigSpec vmConfigSpec) throws Exception {
             if (videoCard.getVideoRamSizeInKB().longValue() != svgaVmramSize){
                 s_logger.info("Video card memory was set " + videoCard.getVideoRamSizeInKB().longValue()
+ "kb instead of " + svgaVmramSize + "kb");
    -            VirtualMachineConfigSpec newSizeSpecs = configSpecVideoCardNewVRamSize(videoCard,
svgaVmramSize);
    -            boolean res = vmMo.configureVm(newSizeSpecs);
    -            if (res) {
    -                s_logger.info("Video card memory successfully updated to " + svgaVmramSize
+ "kb");
    -            }
    +            configSpecVideoCardNewVRamSize(videoCard, svgaVmramSize, vmConfigSpec);
             }
         }
     
         /**
    -     * Returns a VirtualMachineConfigSpec to edit its svga vram size
    +     * Add edit spec on {@code vmConfigSpec} to modify svga vram size
          * @param videoCard video card device to edit providing the svga vram size
          * @param svgaVmramSize new svga vram size (in KB)
    +     * @param vmConfigSpec virtual machine spec
          */
    -    private VirtualMachineConfigSpec configSpecVideoCardNewVRamSize(VirtualMachineVideoCard
videoCard, long svgaVmramSize){
    +    private void configSpecVideoCardNewVRamSize(VirtualMachineVideoCard videoCard, long
svgaVmramSize, VirtualMachineConfigSpec vmConfigSpec){
             videoCard.setVideoRamSizeInKB(svgaVmramSize);
             videoCard.setUseAutoDetect(false);
     
             VirtualDeviceConfigSpec arrayVideoCardConfigSpecs = new VirtualDeviceConfigSpec();
             arrayVideoCardConfigSpecs.setDevice(videoCard);
             arrayVideoCardConfigSpecs.setOperation(VirtualDeviceConfigSpecOperation.EDIT);
     
    -        VirtualMachineConfigSpec changeVideoCardSpecs = new VirtualMachineConfigSpec();
    -        changeVideoCardSpecs.getDeviceChange().add(arrayVideoCardConfigSpecs);
    -        return changeVideoCardSpecs;
    +        vmConfigSpec.getDeviceChange().add(arrayVideoCardConfigSpecs);
    --- End diff --
    
    I don't think so. Device change done in the structure locally  and exception  occurs during
the VM reconfiguration on the hypervisor if anything in the config is wrong. 


> Fix for CLOUDSTACK-9211 - Improve performance
> ---------------------------------------------
>
>                 Key: CLOUDSTACK-9428
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9428
>             Project: CloudStack
>          Issue Type: Improvement
>      Security Level: Public(Anyone can view this level - this is the default.) 
>          Components: VMware
>            Reporter: Nicolas Vazquez
>            Assignee: Nicolas Vazquez
>
> h3. Introduction
> On [CLOUDSTACK-9211|https://issues.apache.org/jira/browse/CLOUDSTACK-9211] passing vRAM
size to support 3D GPU problem was addressed on VMware. It was found out that it could be
improved to increase performance by reducing extra API calls, as we'll describe later
> h3. Improvement
> On WMware, {{VmwareResource}} manages execution of {{StartCommand}}. Before sending power
on command to ESXi hypervisor, vm is configured by calling {{reconfigVMTask}} web method on
vSphere's client {{VimPortType}} web service.
> It was found out that we were using this method 2 times when passing vRAM size, as it
implied creating a new vm config spec only editing video card specs and making an extra call
to {{reconfigVMTask}}.
> We propose reducing the extra web service call by adjusting vm's config spec. This way
video card gets properly configured (when passing vRAM size) in the same configure call, increasing
performance.
> h3. Use case (passing vRAM size)
> # Deploy a new VM, let its id be X
> # Stop VM
> # Execute SQL, where X is vm's id and Z is vRAM size (in kB): {code:sql}
> INSERT INTO cloud.user_vm_details (vm_id, name, value) VALUES (X, 'mks.enable3d', 'true');
> INSERT INTO cloud.user_vm_details (vm_id, name, value) VALUES (X, 'mks.use3dRenderer',
'automatic');
> INSERT INTO cloud.user_vm_details (vm_id, name, value) VALUES (X, 'svga.autodetect',
'false');
> INSERT INTO cloud.user_vm_details (vm_id, name, value) VALUES (X, 'svga.vramSize', Z);
> {code}
> # Start VM



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message