VMware {code} Community
Gavis4569
Enthusiast
Enthusiast

Change number of virtual sockets / cores for VM

Hi,

Have you any idea how to change number of virtual cores for a VM? It is not a problem to assign more virtual sockets to the VM via standard CLI tools, but I need to assign for instance 2 quad core vrtual processors to the VM

Any hint?

Thanks & Regards

Martin Gavanda

Martin Gavanda https://martingavanda.com https://learnvmware.online
Tags (3)
0 Kudos
3 Replies
lamw
Community Manager
Community Manager

Yes. Just like with any VM reconfiguration operation, you need to use ReconfigVM_Task() http://vijava.sourceforge.net/vSphereAPIDoc/ver5/ReferenceGuide/vim.VirtualMachine.html#reconfigure and you can change the # of cores per socket and sockets by looking at numCPUs and coresPerSocket properties in the VM spec http://vijava.sourceforge.net/vSphereAPIDoc/ver5/ReferenceGuide/vim.vm.ConfigSpec.html

You can use this script as a reference - http://vghetto.svn.sourceforge.net/viewvc/vghetto/scripts/updateVMReservations.pl?view=log

0 Kudos
mrhank
Contributor
Contributor

Hi William,

I've been trying to use updateVMReservations.pl script, however I'm getting this error:

./updateVMReservations.pl --server myServer --username myUser --password myPass -vmlist myVM --cpu_rsv somenumber
Error: Couldn't open the myVM! at ./updateVMReservations.pl line 134.

I'm able to use other VM configuration scripts such as addVMAnnotation, but VMreservation script is not working. What might be the problem?

Another question is, sharesmanager.pl script provided with the vCLI library works for me but it takes around 8 seconds to complete. Is there any way to make these kind of reconfigurations to VMs faster? When I use vSphere client to change the cpu reservatation, it takes 1-2 seconds to reconfigure the VMs. Why using scripts is much slower than using vSphere client? Is it the remote connection overhead?

I'd appreciate if you can give me some pointers about these issues. Thanks a lot.

0 Kudos
lamw
Community Manager
Community Manager

It looks like the file you're passing in can not be open, is it in the same directory as the script? If not, you should pass in the full path.

Regarding the sharesmanager.pl, if you have a large vSphere Inventory, it may take sometime to filter out the specific VM before it actually makes the changes.You could further optimize by only extracting only properties that are needed, which you will need to go through the script to see what is being accesesd.

An example of this is:

// this will give you the entire VirtualMachine managed object

my $vm_views = Vim::find_entity_views(view_type => 'VirtualMachine', filter => {"config.name" => $vmname});

//where as this will only filter out the name and the resourceConfig->cpuAllocatioin->shares properties of the VM managed object

my $vm_views = Vim::find_entity_views(view_type => 'VirtualMachine', filter => {"config.name" => $vmname}, properties => ['name','resourceConfig.cpuAllocation.shares']);
0 Kudos