Merge pull request #1187 from MihaelaStoica/CP-19060

CP-19060: Port vCPU hotplug code to master and add license key
This commit is contained in:
Stephen Turner 2016-09-30 16:33:56 +01:00 committed by GitHub
commit 3e8f052117
17 changed files with 1638 additions and 870 deletions

View File

@ -34,6 +34,8 @@ namespace XenAdmin.SettingsPanels
this.lblSliderLowest = new System.Windows.Forms.Label();
this.lblPriority = new System.Windows.Forms.Label();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.comboBoxInitialVCPUs = new System.Windows.Forms.ComboBox();
this.labelInitialVCPUs = new System.Windows.Forms.Label();
this.labelInvalidVCPUWarning = new System.Windows.Forms.Label();
this.comboBoxTopology = new XenAdmin.Controls.CPUTopologyComboBox();
this.labelTopology = new System.Windows.Forms.Label();
@ -80,21 +82,35 @@ namespace XenAdmin.SettingsPanels
//
this.tableLayoutPanel1.BackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.comboBoxInitialVCPUs, 1, 6);
this.tableLayoutPanel1.Controls.Add(this.labelInitialVCPUs, 0, 6);
this.tableLayoutPanel1.Controls.Add(this.labelInvalidVCPUWarning, 1, 5);
this.tableLayoutPanel1.Controls.Add(this.comboBoxTopology, 1, 4);
this.tableLayoutPanel1.Controls.Add(this.labelTopology, 0, 4);
this.tableLayoutPanel1.Controls.Add(this.MemWarningLabel, 2, 8);
this.tableLayoutPanel1.Controls.Add(this.panel2, 1, 8);
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 7);
this.tableLayoutPanel1.Controls.Add(this.lblPriority, 0, 6);
this.tableLayoutPanel1.Controls.Add(this.MemWarningLabel, 2, 9);
this.tableLayoutPanel1.Controls.Add(this.panel2, 1, 9);
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 8);
this.tableLayoutPanel1.Controls.Add(this.lblPriority, 0, 7);
this.tableLayoutPanel1.Controls.Add(this.lblVCPUs, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.lblVcpuWarning, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.lblMemory, 0, 8);
this.tableLayoutPanel1.Controls.Add(this.lblMemory, 0, 9);
this.tableLayoutPanel1.Controls.Add(this.VCPUWarningLabel, 2, 2);
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.comboBoxVCPUs, 1, 2);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// comboBoxInitialVCPUs
//
this.comboBoxInitialVCPUs.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxInitialVCPUs.FormattingEnabled = true;
resources.ApplyResources(this.comboBoxInitialVCPUs, "comboBoxInitialVCPUs");
this.comboBoxInitialVCPUs.Name = "comboBoxInitialVCPUs";
//
// labelInitialVCPUs
//
resources.ApplyResources(this.labelInitialVCPUs, "labelInitialVCPUs");
this.labelInitialVCPUs.Name = "labelInitialVCPUs";
//
// labelInvalidVCPUWarning
//
resources.ApplyResources(this.labelInvalidVCPUWarning, "labelInvalidVCPUWarning");
@ -255,5 +271,7 @@ namespace XenAdmin.SettingsPanels
private XenAdmin.Controls.CPUTopologyComboBox comboBoxTopology;
private System.Windows.Forms.Label labelInvalidVCPUWarning;
private System.Windows.Forms.ComboBox comboBoxVCPUs;
private System.Windows.Forms.ComboBox comboBoxInitialVCPUs;
private System.Windows.Forms.Label labelInitialVCPUs;
}
}

View File

@ -32,6 +32,7 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using XenAdmin.Actions;
@ -46,13 +47,20 @@ namespace XenAdmin.SettingsPanels
{
private VM vm;
bool ShowMemory = false; // If this VM has DMC, we don't show the memory controls on this page.
bool MROrGreater = true; // If Midnight Ride or greater, we only show the VCPU controls when the VM is halted.
private bool _ValidToSave = true;
private decimal _OrigMemory;
private decimal _OrigVCPUs;
private long _OrigVCPUs;
private long _OrigVCPUsMax;
private long _OrigVCPUsAtStartup;
private decimal _OrigVCPUWeight;
private decimal _CurrentVCPUWeight;
private bool isVcpuHotplugSupported;
// Please note that the comboBoxVCPUs control can represent two different VM properties, depending whether the VM supports vCPU hotplug or not:
// If vCPU hotplug is supported, comboBoxVCPUs represents the maximum number of vCPUs (VCPUs_max). And the initial number of vCPUs is represented in comboBoxInitialVCPUs (which is only visible in this case)
// If vCPU hotplug is not supported, comboBoxVCPUs represents the initial number of vCPUs (VCPUs_at_startup). In this case we will also set the VM property VCPUs_max to the same value.
// We use the _OrigVCPUs variable to store the original value that populates this combo box (VCPUs_max if hotplug is allowed, otherwise VCPUs_at_startup)
private ChangeMemorySettingsAction memoryAction;
public bool ValidToSave
@ -64,7 +72,7 @@ namespace XenAdmin.SettingsPanels
// Also confirm whether the user wants to save memory changes.
// If not, don't close the properties dialog.
if (MROrGreater && HasMemoryChanged)
if (HasMemoryChanged)
{
long mem = Convert.ToInt64(this.nudMemory.Value * Util.BINARY_MEGA);
memoryAction = BallooningDialogBase.ConfirmAndReturnAction(Program.MainWindow, vm, mem, mem, mem, (long)vm.memory_static_max, false);
@ -158,7 +166,7 @@ namespace XenAdmin.SettingsPanels
Text = ShowMemory ? Messages.CPU_AND_MEMORY : Messages.CPU;
if (!ShowMemory)
lblMemory.Visible = panel2.Visible = MemWarningLabel.Visible = false;
else if (MROrGreater && vm.power_state != vm_power_state.Halted && vm.power_state != vm_power_state.Running)
else if (vm.power_state != vm_power_state.Halted && vm.power_state != vm_power_state.Running)
{
panel2.Enabled = false;
MemWarningLabel.Text = Messages.MEM_NOT_WHEN_SUSPENDED;
@ -166,15 +174,6 @@ namespace XenAdmin.SettingsPanels
MemWarningLabel.Visible = true;
}
if (MROrGreater && vm.power_state != vm_power_state.Halted)
{
comboBoxVCPUs.Enabled = false;
comboBoxTopology.Enabled = false;
VCPUWarningLabel.Text = Messages.VCPU_ONLY_WHEN_HALTED;
VCPUWarningLabel.ForeColor = SystemColors.ControlText;
VCPUWarningLabel.Visible = true;
}
// Since updates come in dribs and drabs, avoid error if new max and min arrive
// out of sync and maximum < minimum.
if (vm.memory_dynamic_max >= vm.memory_dynamic_min &&
@ -193,9 +192,6 @@ namespace XenAdmin.SettingsPanels
this.nudMemory.Text = (this.nudMemory.Value = value).ToString();
}
_CurrentVCPUWeight = Convert.ToDecimal(vm.VCPUWeight);
this.transparentTrackBar1.Value = Convert.ToInt32(Math.Log(Convert.ToDouble(vm.VCPUWeight)) / Math.Log(4.0d));
Host currentHost = Helpers.GetMaster(this.vm.Connection);
if (currentHost != null)
{
@ -220,39 +216,107 @@ namespace XenAdmin.SettingsPanels
lblVcpuWarning.Visible = false;
}
isVcpuHotplugSupported = vm.SupportsVcpuHotplug;
label1.Text = GetRubric();
_OrigMemory = nudMemory.Value;
_OrigVCPUs = vm.VCPUs_at_startup > 0 ? vm.VCPUs_at_startup : 1;
_OrigVCPUsMax = vm.VCPUs_max > 0 ? vm.VCPUs_max : 1;
_OrigVCPUsAtStartup = vm.VCPUs_at_startup > 0 ? vm.VCPUs_at_startup : 1;
_OrigVCPUWeight = _CurrentVCPUWeight;
_OrigVCPUs = isVcpuHotplugSupported ? _OrigVCPUsMax : _OrigVCPUsAtStartup;
_prevVCPUsMax = _OrigVCPUsMax; // we use variable in RefreshCurrentVCPUs for checking if VcpusAtStartup and VcpusMax were equal before VcpusMax changed
_CurrentVCPUWeight = Convert.ToDecimal(vm.VCPUWeight);
InitializeVcpuControls();
_ValidToSave = true;
}
private void InitializeVcpuControls()
{
lblVCPUs.Text = isVcpuHotplugSupported
? Messages.VM_CPUMEMPAGE_MAX_VCPUS_LABEL
: Messages.VM_CPUMEMPAGE_VCPUS_LABEL;
labelInitialVCPUs.Text = vm.power_state == vm_power_state.Halted
? Messages.VM_CPUMEMPAGE_INITIAL_VCPUS_LABEL
: Messages.VM_CPUMEMPAGE_CURRENT_VCPUS_LABEL;
labelInitialVCPUs.Visible = comboBoxInitialVCPUs.Visible = isVcpuHotplugSupported;
comboBoxInitialVCPUs.Enabled = isVcpuHotplugSupported &&
(vm.power_state == vm_power_state.Halted ||
vm.power_state == vm_power_state.Running);
comboBoxVCPUs.Enabled = comboBoxTopology.Enabled = vm.power_state == vm_power_state.Halted;
comboBoxTopology.Populate(vm.VCPUs_at_startup, vm.VCPUs_max, vm.CoresPerSocket, vm.MaxCoresPerSocket);
// CA-12941
// We set a sensible maximum based on the template, but if the user sets something higher
// from the CLI then use that as the maximum.
long maxVCPUs = vm.MaxVCPUsAllowed < vm.VCPUs_at_startup ? vm.VCPUs_at_startup : vm.MaxVCPUsAllowed;
PopulateVCPUs(maxVCPUs, (long)_OrigVCPUs);
long maxVCPUs = vm.MaxVCPUsAllowed < _OrigVCPUs ? _OrigVCPUs : vm.MaxVCPUsAllowed;
PopulateVCPUs(maxVCPUs, _OrigVCPUs);
_ValidToSave = true;
if (isVcpuHotplugSupported)
PopulateVCPUsAtStartup(_OrigVCPUsMax, _OrigVCPUsAtStartup);
transparentTrackBar1.Value = Convert.ToInt32(Math.Log(Convert.ToDouble(vm.VCPUWeight)) / Math.Log(4.0d));
panel1.Enabled = vm.power_state == vm_power_state.Halted;
}
private void PopulateVCPUComboBox(ComboBox comboBox, long min, long max, long currentValue, Predicate<long> isValid)
{
comboBox.BeginUpdate();
comboBox.Items.Clear();
for (long i = min; i <= max; ++i)
{
if (i == currentValue || isValid(i))
comboBox.Items.Add(i);
}
if (currentValue > max)
comboBox.Items.Add(currentValue);
comboBox.SelectedItem = currentValue;
comboBox.EndUpdate();
}
private void PopulateVCPUs(long maxVCPUs, long currentVCPUs)
{
comboBoxVCPUs.BeginUpdate();
comboBoxVCPUs.Items.Clear();
for (long i = 1; i <= maxVCPUs; ++i)
PopulateVCPUComboBox(comboBoxVCPUs, 1, maxVCPUs, currentVCPUs, i => comboBoxTopology.IsValidVCPU(i));
}
private void PopulateVCPUsAtStartup(long max, long currentValue)
{
long min = vm.power_state == vm_power_state.Halted ? 1 : _OrigVCPUsAtStartup;
PopulateVCPUComboBox(comboBoxInitialVCPUs, min, max, currentValue, i => true);
}
private string GetRubric()
{
StringBuilder sb = new StringBuilder();
sb.Append(Messages.VM_CPUMEMPAGE_RUBRIC);
// add hotplug text
if (isVcpuHotplugSupported)
sb.Append(Messages.VM_CPUMEMPAGE_RUBRIC_HOTPLUG);
// add power state warning
if (vm.power_state != vm_power_state.Halted)
{
if (i == currentVCPUs || comboBoxTopology.IsValidVCPU(i))
comboBoxVCPUs.Items.Add(i);
sb.AppendLine();
sb.AppendLine();
sb.Append(isVcpuHotplugSupported ? Messages.VM_CPUMEMPAGE_MAX_VCPUS_READONLY : Messages.VCPU_ONLY_WHEN_HALTED);
}
if (currentVCPUs > maxVCPUs)
comboBoxVCPUs.Items.Add(currentVCPUs);
comboBoxVCPUs.SelectedItem = currentVCPUs;
comboBoxVCPUs.EndUpdate();
// add power state warning for Current number of vCPUs
if (isVcpuHotplugSupported && vm.power_state != vm_power_state.Halted && vm.power_state != vm_power_state.Running)
{
sb.Append(Messages.VM_CPUMEMPAGE_CURRENT_VCPUS_READONLY);
}
return sb.ToString();
}
public bool HasChanged
{
get { return HasVCPUChanged || HasMemoryChanged || HasTopologyChanged; }
get { return HasVCPUChanged || HasMemoryChanged || HasTopologyChanged || HasVCPUsAtStartupChanged || HasVCPUWeightChanged; }
}
private bool HasMemoryChanged
@ -267,7 +331,23 @@ namespace XenAdmin.SettingsPanels
{
get
{
return _OrigVCPUs != (long)comboBoxVCPUs.SelectedItem || _OrigVCPUWeight != _CurrentVCPUWeight;
return _OrigVCPUs != (long)comboBoxVCPUs.SelectedItem;
}
}
private bool HasVCPUWeightChanged
{
get
{
return _OrigVCPUWeight != _CurrentVCPUWeight;
}
}
private bool HasVCPUsAtStartupChanged
{
get
{
return isVcpuHotplugSupported && _OrigVCPUsAtStartup != (long)comboBoxInitialVCPUs.SelectedItem;
}
}
@ -279,15 +359,34 @@ namespace XenAdmin.SettingsPanels
}
}
private long SelectedVcpusMax
{
get
{
return (long)comboBoxVCPUs.SelectedItem;
}
}
private long SelectedVcpusAtStartup
{
get
{
return isVcpuHotplugSupported ? (long)comboBoxInitialVCPUs.SelectedItem : (long)comboBoxVCPUs.SelectedItem;
}
}
public AsyncAction SaveSettings()
{
List<AsyncAction> actions = new List<AsyncAction>();
if (HasVCPUChanged)
if (HasVCPUWeightChanged)
{
vm.VCPUWeight = Convert.ToInt32(_CurrentVCPUWeight);
if (_OrigVCPUs != (long)comboBoxVCPUs.SelectedItem)
actions.Add(new ChangeVCPUSettingsAction(vm, (long)comboBoxVCPUs.SelectedItem));
}
if (HasVCPUChanged || HasVCPUsAtStartupChanged)
{
actions.Add(new ChangeVCPUSettingsAction(vm, SelectedVcpusMax, SelectedVcpusAtStartup));
}
if (HasTopologyChanged)
@ -295,29 +394,9 @@ namespace XenAdmin.SettingsPanels
vm.CoresPerSocket = comboBoxTopology.CoresPerSocket;
}
if (HasMemoryChanged)
if (HasMemoryChanged)
{
if (MROrGreater)
actions.Add(memoryAction); // Calculated in ValidToSave
else
vm.Memory = Convert.ToInt64(this.nudMemory.Value * Util.BINARY_MEGA);
}
if (!Program.RunInAutomatedTestMode && vm.power_state != vm_power_state.Halted)
{
if (!HasMemoryChanged)
using (var dlg = new ThreeButtonDialog(new ThreeButtonDialog.Details(SystemIcons.Information, Messages.VM_VCPU_CHANGES_NOT_SUPPORTED_MESSAGE, Messages.VM_LIVE_CHANGES_NOT_SUPPORTED_TITLE)))
{
dlg.ShowDialog();
}
else if (!MROrGreater)
using (var dlg = new ThreeButtonDialog(new ThreeButtonDialog.Details(SystemIcons.Information, Messages.VM_VCPU_CHANGES_NOT_SUPPORTED_MESSAGE, Messages.VM_LIVE_CHANGES_NOT_SUPPORTED_TITLE)))
{
dlg.ShowDialog();
}
// If it is >= Midnight Ride, and memory has changed (which can only happen in the free version),
// we have already given a message in ValidToSave that the VM will be forcibly rebooted, so no
// further message is needed here.
actions.Add(memoryAction); // Calculated in ValidToSave
}
if (actions.Count == 0)
@ -383,6 +462,7 @@ namespace XenAdmin.SettingsPanels
ShowVcpuError(false, true);
comboBoxTopology.Update((long)comboBoxVCPUs.SelectedItem);
ValidateVCPUSettings();
RefreshCurrentVCPUs();
}
private void ShowVcpuError(bool showAlways, bool testValue)
@ -403,13 +483,36 @@ namespace XenAdmin.SettingsPanels
}
}
private long _prevVCPUsMax;
private void RefreshCurrentVCPUs()
{
// refresh comboBoxInitialVCPUs if it's visible and populated
if (comboBoxInitialVCPUs.Visible && comboBoxInitialVCPUs.Items.Count > 0)
{
// VcpusAtStartup is always <= VcpusMax
// So if VcpusMax is decreased below VcpusAtStartup, then VcpusAtStartup is decreased to that number too
// If VcpusAtStartup and VcpusMax are equal, and VcpusMax is changed, then VcpusAtStartup is changed to match
// But if the numbers are unequal, and VcpusMax is changed but is still higher than VcpusAtStartup, then VcpusAtStartup is unchanged
var newValue = SelectedVcpusAtStartup;
if (SelectedVcpusMax < SelectedVcpusAtStartup)
newValue = SelectedVcpusMax;
else if (SelectedVcpusAtStartup == _prevVCPUsMax && SelectedVcpusMax != _prevVCPUsMax)
newValue = SelectedVcpusMax;
PopulateVCPUsAtStartup(SelectedVcpusMax, newValue);
_prevVCPUsMax = SelectedVcpusMax;
}
}
public String SubText
{
get
{
return ShowMemory ?
String.Format(Messages.CPU_AND_MEMORY_SUB, comboBoxVCPUs.SelectedItem, nudMemory.Value) :
String.Format(Messages.CPU_SUB, comboBoxVCPUs.SelectedItem);
String.Format(Messages.CPU_AND_MEMORY_SUB, SelectedVcpusAtStartup, nudMemory.Value) :
String.Format(Messages.CPU_SUB, SelectedVcpusAtStartup);
}
}

View File

@ -228,6 +228,69 @@
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="comboBoxInitialVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>126, 143</value>
</data>
<data name="comboBoxInitialVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 0, 13</value>
</data>
<data name="comboBoxInitialVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="comboBoxInitialVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.Name" xml:space="preserve">
<value>comboBoxInitialVCPUs</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelInitialVCPUs.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelInitialVCPUs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelInitialVCPUs.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelInitialVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 140</value>
</data>
<data name="labelInitialVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 3, 13</value>
</data>
<data name="labelInitialVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 24</value>
</data>
<data name="labelInitialVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="labelInitialVCPUs.Text" xml:space="preserve">
<value>Initial number of v&amp;CPUs:</value>
</data>
<data name="labelInitialVCPUs.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.Name" xml:space="preserve">
<value>labelInitialVCPUs</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="labelInvalidVCPUWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
@ -238,13 +301,13 @@
<value>NoControl</value>
</data>
<data name="labelInvalidVCPUWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>101, 120</value>
<value>126, 120</value>
</data>
<data name="labelInvalidVCPUWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 3, 0</value>
</data>
<data name="labelInvalidVCPUWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>396, 20</value>
<value>371, 20</value>
</data>
<data name="labelInvalidVCPUWarning.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
@ -259,13 +322,13 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelInvalidVCPUWarning.ZOrder" xml:space="preserve">
<value>0</value>
<value>2</value>
</data>
<data name="comboBoxTopology.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value>
</data>
<data name="comboBoxTopology.Location" type="System.Drawing.Point, System.Drawing">
<value>101, 93</value>
<value>126, 93</value>
</data>
<data name="comboBoxTopology.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 6, 0, 6</value>
@ -286,7 +349,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxTopology.ZOrder" xml:space="preserve">
<value>1</value>
<value>3</value>
</data>
<data name="labelTopology.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -301,7 +364,7 @@
<value>3, 87</value>
</data>
<data name="labelTopology.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 33</value>
<value>120, 33</value>
</data>
<data name="labelTopology.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
@ -322,7 +385,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelTopology.ZOrder" xml:space="preserve">
<value>2</value>
<value>4</value>
</data>
<data name="MemWarningLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -334,10 +397,10 @@
<value>NoControl</value>
</data>
<data name="MemWarningLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>199, 232</value>
<value>224, 269</value>
</data>
<data name="MemWarningLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>298, 47</value>
<value>273, 60</value>
</data>
<data name="MemWarningLabel.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
@ -358,7 +421,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;MemWarningLabel.ZOrder" xml:space="preserve">
<value>3</value>
<value>5</value>
</data>
<data name="panel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -366,6 +429,372 @@
<data name="panel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="&gt;&gt;lblMB.Name" xml:space="preserve">
<value>lblMB</value>
</data>
<data name="&gt;&gt;lblMB.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblMB.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;lblMB.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;nudMemory.Name" xml:space="preserve">
<value>nudMemory</value>
</data>
<data name="&gt;&gt;nudMemory.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nudMemory.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;nudMemory.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>126, 269</value>
</data>
<data name="panel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 20</value>
</data>
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;panel2.Name" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;panel2.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="panel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;transparentTrackBar1.Name" xml:space="preserve">
<value>transparentTrackBar1</value>
</data>
<data name="&gt;&gt;transparentTrackBar1.Type" xml:space="preserve">
<value>XenAdmin.Controls.TransparentTrackBar, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;transparentTrackBar1.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;transparentTrackBar1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 203</value>
</data>
<data name="panel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 24</value>
</data>
<data name="panel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 6</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>494, 42</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="lblVCPUs.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblVCPUs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="lblVCPUs.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 60</value>
</data>
<data name="lblVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 27</value>
</data>
<data name="lblVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="lblVCPUs.Text" xml:space="preserve">
<value>&amp;Number of vCPUs:</value>
</data>
<data name="lblVCPUs.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;lblVCPUs.Name" xml:space="preserve">
<value>lblVCPUs</value>
</data>
<data name="&gt;&gt;lblVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblVCPUs.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="lblVcpuWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblVcpuWarning.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblVcpuWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 41</value>
</data>
<data name="lblVcpuWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 3, 6</value>
</data>
<data name="lblVcpuWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>183, 13</value>
</data>
<data name="lblVcpuWarning.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="lblVcpuWarning.Text" xml:space="preserve">
<value>How can I improve VM performance?</value>
</data>
<data name="lblVcpuWarning.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.Name" xml:space="preserve">
<value>lblVcpuWarning</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="lblMemory.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblMemory.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="lblMemory.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblMemory.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 271</value>
</data>
<data name="lblMemory.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 2, 3, 0</value>
</data>
<data name="lblMemory.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 18</value>
</data>
<data name="lblMemory.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="lblMemory.Text" xml:space="preserve">
<value>&amp;VM memory:</value>
</data>
<data name="&gt;&gt;lblMemory.Name" xml:space="preserve">
<value>lblMemory</value>
</data>
<data name="&gt;&gt;lblMemory.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblMemory.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblMemory.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="VCPUWarningLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="VCPUWarningLabel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="VCPUWarningLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="VCPUWarningLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>224, 60</value>
</data>
<data name="VCPUWarningLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>273, 27</value>
</data>
<data name="VCPUWarningLabel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="VCPUWarningLabel.Text" xml:space="preserve">
<value>More vCPUs than physical CPUs may lead to reduced VM performance</value>
</data>
<data name="VCPUWarningLabel.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="VCPUWarningLabel.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.Name" xml:space="preserve">
<value>VCPUWarningLabel</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="label1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 15</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>494, 41</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>The number of vCPUs available to your VM and their topology can be adjusted, as well as the priority to assign to them over other vCPUs.</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="comboBoxVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>126, 63</value>
</data>
<data name="comboBoxVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 0, 3</value>
</data>
<data name="comboBoxVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="comboBoxVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.Name" xml:space="preserve">
<value>comboBoxVCPUs</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.ZOrder" xml:space="preserve">
<value>14</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>500, 329</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="comboBoxInitialVCPUs" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelInitialVCPUs" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelInvalidVCPUWarning" Row="5" RowSpan="1" Column="1" ColumnSpan="2" /&gt;&lt;Control Name="comboBoxTopology" Row="4" RowSpan="1" Column="1" ColumnSpan="2" /&gt;&lt;Control Name="labelTopology" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="MemWarningLabel" Row="9" RowSpan="2" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="panel2" Row="9" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="panel1" Row="8" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="lblPriority" Row="7" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="lblVCPUs" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="lblVcpuWarning" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="lblMemory" Row="9" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="VCPUWarningLabel" Row="2" RowSpan="2" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="comboBoxVCPUs" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20,AutoSize,20,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="lblPriority.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblPriority.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 177</value>
</data>
<data name="lblPriority.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 10, 0, 0</value>
</data>
<data name="lblPriority.Size" type="System.Drawing.Size, System.Drawing">
<value>179, 23</value>
</data>
<data name="lblPriority.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="lblPriority.Text" xml:space="preserve">
<value>vCPU priority for this virtual machine:</value>
</data>
<data name="lblPriority.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;lblPriority.Name" xml:space="preserve">
<value>lblPriority</value>
</data>
<data name="&gt;&gt;lblPriority.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblPriority.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblPriority.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="lblMB.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
@ -426,36 +855,6 @@
<data name="&gt;&gt;nudMemory.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>101, 232</value>
</data>
<data name="panel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 20</value>
</data>
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;panel2.Name" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;panel2.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="panel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="transparentTrackBar1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
@ -480,306 +879,6 @@
<data name="&gt;&gt;transparentTrackBar1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 166</value>
</data>
<data name="panel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 24</value>
</data>
<data name="panel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 6</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>494, 42</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="lblVCPUs.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblVCPUs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="lblVCPUs.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 60</value>
</data>
<data name="lblVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 27</value>
</data>
<data name="lblVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="lblVCPUs.Text" xml:space="preserve">
<value>&amp;Number of vCPUs:</value>
</data>
<data name="lblVCPUs.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;lblVCPUs.Name" xml:space="preserve">
<value>lblVCPUs</value>
</data>
<data name="&gt;&gt;lblVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblVCPUs.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="lblVcpuWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblVcpuWarning.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblVcpuWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 41</value>
</data>
<data name="lblVcpuWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 3, 6</value>
</data>
<data name="lblVcpuWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>183, 13</value>
</data>
<data name="lblVcpuWarning.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="lblVcpuWarning.Text" xml:space="preserve">
<value>How can I improve VM performance?</value>
</data>
<data name="lblVcpuWarning.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.Name" xml:space="preserve">
<value>lblVcpuWarning</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="lblMemory.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblMemory.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="lblMemory.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblMemory.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 234</value>
</data>
<data name="lblMemory.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 2, 3, 0</value>
</data>
<data name="lblMemory.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 18</value>
</data>
<data name="lblMemory.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="lblMemory.Text" xml:space="preserve">
<value>&amp;VM memory:</value>
</data>
<data name="&gt;&gt;lblMemory.Name" xml:space="preserve">
<value>lblMemory</value>
</data>
<data name="&gt;&gt;lblMemory.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblMemory.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblMemory.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="VCPUWarningLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="VCPUWarningLabel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="VCPUWarningLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="VCPUWarningLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>199, 60</value>
</data>
<data name="VCPUWarningLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>298, 27</value>
</data>
<data name="VCPUWarningLabel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="VCPUWarningLabel.Text" xml:space="preserve">
<value>More vCPUs than physical CPUs may lead to reduced VM performance</value>
</data>
<data name="VCPUWarningLabel.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="VCPUWarningLabel.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.Name" xml:space="preserve">
<value>VCPUWarningLabel</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="label1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 15</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>494, 41</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>The number of vCPUs available to your VM and their topology can be adjusted, as well as the priority to assign to them over other vCPUs.</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="comboBoxVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>101, 63</value>
</data>
<data name="comboBoxVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 0, 3</value>
</data>
<data name="comboBoxVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="comboBoxVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.Name" xml:space="preserve">
<value>comboBoxVCPUs</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>500, 279</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="labelInvalidVCPUWarning" Row="5" RowSpan="1" Column="1" ColumnSpan="2" /&gt;&lt;Control Name="comboBoxTopology" Row="4" RowSpan="1" Column="1" ColumnSpan="2" /&gt;&lt;Control Name="labelTopology" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="MemWarningLabel" Row="8" RowSpan="2" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="panel2" Row="8" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="panel1" Row="7" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="lblPriority" Row="6" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="lblVCPUs" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="lblVcpuWarning" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="lblMemory" Row="8" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="VCPUWarningLabel" Row="2" RowSpan="2" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="comboBoxVCPUs" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="lblPriority.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblPriority.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 140</value>
</data>
<data name="lblPriority.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 10, 0, 0</value>
</data>
<data name="lblPriority.Size" type="System.Drawing.Size, System.Drawing">
<value>179, 23</value>
</data>
<data name="lblPriority.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="lblPriority.Text" xml:space="preserve">
<value>vCPU priority for this virtual machine:</value>
</data>
<data name="lblPriority.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;lblPriority.Name" xml:space="preserve">
<value>lblPriority</value>
</data>
<data name="&gt;&gt;lblPriority.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblPriority.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblPriority.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>

View File

@ -130,10 +130,10 @@
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="lblSliderHighest.Location" type="System.Drawing.Point, System.Drawing">
<value>396, 23</value>
<value>381, 23</value>
</data>
<data name="lblSliderHighest.Size" type="System.Drawing.Size, System.Drawing">
<value>29, 17</value>
<value>43, 13</value>
</data>
<data name="lblSliderHighest.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
@ -163,10 +163,10 @@
<value>NoControl</value>
</data>
<data name="lblSliderNormal.Location" type="System.Drawing.Point, System.Drawing">
<value>199, 23</value>
<value>194, 23</value>
</data>
<data name="lblSliderNormal.Size" type="System.Drawing.Size, System.Drawing">
<value>29, 17</value>
<value>40, 13</value>
</data>
<data name="lblSliderNormal.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
@ -199,7 +199,7 @@
<value>3, 23</value>
</data>
<data name="lblSliderLowest.Size" type="System.Drawing.Size, System.Drawing">
<value>29, 17</value>
<value>41, 13</value>
</data>
<data name="lblSliderLowest.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@ -228,6 +228,69 @@
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="comboBoxInitialVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>126, 143</value>
</data>
<data name="comboBoxInitialVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 0, 13</value>
</data>
<data name="comboBoxInitialVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="comboBoxInitialVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.Name" xml:space="preserve">
<value>comboBoxInitialVCPUs</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelInitialVCPUs.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelInitialVCPUs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelInitialVCPUs.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelInitialVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 140</value>
</data>
<data name="labelInitialVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 3, 13</value>
</data>
<data name="labelInitialVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 24</value>
</data>
<data name="labelInitialVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="labelInitialVCPUs.Text" xml:space="preserve">
<value>Initial number of v&amp;CPUs:</value>
</data>
<data name="labelInitialVCPUs.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.Name" xml:space="preserve">
<value>labelInitialVCPUs</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="labelInvalidVCPUWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
@ -238,13 +301,13 @@
<value>NoControl</value>
</data>
<data name="labelInvalidVCPUWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>104, 131</value>
<value>126, 120</value>
</data>
<data name="labelInvalidVCPUWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 3, 0</value>
</data>
<data name="labelInvalidVCPUWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>393, 20</value>
<value>371, 20</value>
</data>
<data name="labelInvalidVCPUWarning.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
@ -259,13 +322,13 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelInvalidVCPUWarning.ZOrder" xml:space="preserve">
<value>0</value>
<value>2</value>
</data>
<data name="comboBoxTopology.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value>
</data>
<data name="comboBoxTopology.Location" type="System.Drawing.Point, System.Drawing">
<value>104, 104</value>
<value>126, 93</value>
</data>
<data name="comboBoxTopology.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 6, 0, 6</value>
@ -286,7 +349,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxTopology.ZOrder" xml:space="preserve">
<value>1</value>
<value>3</value>
</data>
<data name="labelTopology.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -298,10 +361,10 @@
<value>NoControl</value>
</data>
<data name="labelTopology.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 98</value>
<value>3, 87</value>
</data>
<data name="labelTopology.Size" type="System.Drawing.Size, System.Drawing">
<value>98, 33</value>
<value>120, 33</value>
</data>
<data name="labelTopology.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
@ -322,7 +385,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelTopology.ZOrder" xml:space="preserve">
<value>2</value>
<value>4</value>
</data>
<data name="MemWarningLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -334,10 +397,10 @@
<value>NoControl</value>
</data>
<data name="MemWarningLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>158, 178</value>
<value>224, 269</value>
</data>
<data name="MemWarningLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>339, 87</value>
<value>273, 60</value>
</data>
<data name="MemWarningLabel.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
@ -358,7 +421,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;MemWarningLabel.ZOrder" xml:space="preserve">
<value>3</value>
<value>5</value>
</data>
<data name="panel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -366,6 +429,372 @@
<data name="panel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="&gt;&gt;lblMB.Name" xml:space="preserve">
<value>lblMB</value>
</data>
<data name="&gt;&gt;lblMB.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblMB.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;lblMB.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;nudMemory.Name" xml:space="preserve">
<value>nudMemory</value>
</data>
<data name="&gt;&gt;nudMemory.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nudMemory.Parent" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;nudMemory.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>126, 269</value>
</data>
<data name="panel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 20</value>
</data>
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;panel2.Name" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;panel2.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="panel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;transparentTrackBar1.Name" xml:space="preserve">
<value>transparentTrackBar1</value>
</data>
<data name="&gt;&gt;transparentTrackBar1.Type" xml:space="preserve">
<value>XenAdmin.Controls.TransparentTrackBar, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;transparentTrackBar1.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;transparentTrackBar1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 203</value>
</data>
<data name="panel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 24</value>
</data>
<data name="panel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 6</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>494, 42</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="lblVCPUs.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblVCPUs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="lblVCPUs.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 60</value>
</data>
<data name="lblVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 27</value>
</data>
<data name="lblVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="lblVCPUs.Text" xml:space="preserve">
<value>vCPU 数(&amp;N):</value>
</data>
<data name="lblVCPUs.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;lblVCPUs.Name" xml:space="preserve">
<value>lblVCPUs</value>
</data>
<data name="&gt;&gt;lblVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblVCPUs.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="lblVcpuWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblVcpuWarning.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblVcpuWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 41</value>
</data>
<data name="lblVcpuWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 3, 6</value>
</data>
<data name="lblVcpuWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>183, 13</value>
</data>
<data name="lblVcpuWarning.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="lblVcpuWarning.Text" xml:space="preserve">
<value>如何提高 VM 性能?</value>
</data>
<data name="lblVcpuWarning.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.Name" xml:space="preserve">
<value>lblVcpuWarning</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="lblMemory.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblMemory.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="lblMemory.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblMemory.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 271</value>
</data>
<data name="lblMemory.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 2, 3, 0</value>
</data>
<data name="lblMemory.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 18</value>
</data>
<data name="lblMemory.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="lblMemory.Text" xml:space="preserve">
<value>VM 内存(&amp;V):</value>
</data>
<data name="&gt;&gt;lblMemory.Name" xml:space="preserve">
<value>lblMemory</value>
</data>
<data name="&gt;&gt;lblMemory.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblMemory.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblMemory.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="VCPUWarningLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="VCPUWarningLabel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="VCPUWarningLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="VCPUWarningLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>224, 60</value>
</data>
<data name="VCPUWarningLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>273, 27</value>
</data>
<data name="VCPUWarningLabel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="VCPUWarningLabel.Text" xml:space="preserve">
<value>vCPU 数超过物理 CPU 数可能会导致 VM 性能下降</value>
</data>
<data name="VCPUWarningLabel.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="VCPUWarningLabel.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.Name" xml:space="preserve">
<value>VCPUWarningLabel</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="label1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 15</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>494, 41</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>可以调整您的 VM 及其拓扑可用的 vCPU 数以及要分配给 vCPU 的优先级。</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="comboBoxVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>126, 63</value>
</data>
<data name="comboBoxVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 0, 3</value>
</data>
<data name="comboBoxVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="comboBoxVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.Name" xml:space="preserve">
<value>comboBoxVCPUs</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.ZOrder" xml:space="preserve">
<value>14</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>500, 329</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="comboBoxInitialVCPUs" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelInitialVCPUs" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelInvalidVCPUWarning" Row="5" RowSpan="1" Column="1" ColumnSpan="2" /&gt;&lt;Control Name="comboBoxTopology" Row="4" RowSpan="1" Column="1" ColumnSpan="2" /&gt;&lt;Control Name="labelTopology" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="MemWarningLabel" Row="9" RowSpan="2" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="panel2" Row="9" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="panel1" Row="8" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="lblPriority" Row="7" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="lblVCPUs" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="lblVcpuWarning" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="lblMemory" Row="9" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="VCPUWarningLabel" Row="2" RowSpan="2" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="comboBoxVCPUs" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20,AutoSize,20,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="lblPriority.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblPriority.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 177</value>
</data>
<data name="lblPriority.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 10, 0, 0</value>
</data>
<data name="lblPriority.Size" type="System.Drawing.Size, System.Drawing">
<value>179, 23</value>
</data>
<data name="lblPriority.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="lblPriority.Text" xml:space="preserve">
<value>此虚拟机的 vCPU 优先级:</value>
</data>
<data name="lblPriority.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;lblPriority.Name" xml:space="preserve">
<value>lblPriority</value>
</data>
<data name="&gt;&gt;lblPriority.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblPriority.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblPriority.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="lblMB.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
@ -379,7 +808,7 @@
<value>0, 0, 0, 0</value>
</data>
<data name="lblMB.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 17</value>
<value>23, 13</value>
</data>
<data name="lblMB.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@ -409,7 +838,7 @@
<value>0, 0, 0, 0</value>
</data>
<data name="nudMemory.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 19</value>
<value>71, 20</value>
</data>
<data name="nudMemory.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -426,36 +855,6 @@
<data name="&gt;&gt;nudMemory.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>61, 178</value>
</data>
<data name="panel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 19</value>
</data>
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;panel2.Name" xml:space="preserve">
<value>panel2</value>
</data>
<data name="&gt;&gt;panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;panel2.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="panel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="transparentTrackBar1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
@ -480,306 +879,6 @@
<data name="&gt;&gt;transparentTrackBar1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 112</value>
</data>
<data name="panel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 24</value>
</data>
<data name="panel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 6</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>494, 42</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="lblVCPUs.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblVCPUs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="lblVCPUs.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 55</value>
</data>
<data name="lblVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 21</value>
</data>
<data name="lblVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="lblVCPUs.Text" xml:space="preserve">
<value>vCPU 数(&amp;N):</value>
</data>
<data name="lblVCPUs.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;lblVCPUs.Name" xml:space="preserve">
<value>lblVCPUs</value>
</data>
<data name="&gt;&gt;lblVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblVCPUs.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="lblVcpuWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblVcpuWarning.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblVcpuWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 32</value>
</data>
<data name="lblVcpuWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 3, 6</value>
</data>
<data name="lblVcpuWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>109, 17</value>
</data>
<data name="lblVcpuWarning.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="lblVcpuWarning.Text" xml:space="preserve">
<value>如何提高 VM 性能?</value>
</data>
<data name="lblVcpuWarning.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.Name" xml:space="preserve">
<value>lblVcpuWarning</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblVcpuWarning.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="lblMemory.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblMemory.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="lblMemory.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblMemory.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 180</value>
</data>
<data name="lblMemory.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 2, 3, 0</value>
</data>
<data name="lblMemory.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 17</value>
</data>
<data name="lblMemory.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="lblMemory.Text" xml:space="preserve">
<value>VM 内存(&amp;V):</value>
</data>
<data name="&gt;&gt;lblMemory.Name" xml:space="preserve">
<value>lblMemory</value>
</data>
<data name="&gt;&gt;lblMemory.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblMemory.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblMemory.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="VCPUWarningLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="VCPUWarningLabel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="VCPUWarningLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="VCPUWarningLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>158, 55</value>
</data>
<data name="VCPUWarningLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>339, 21</value>
</data>
<data name="VCPUWarningLabel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="VCPUWarningLabel.Text" xml:space="preserve">
<value>vCPU 数超过物理 CPU 数可能会导致 VM 性能下降</value>
</data>
<data name="VCPUWarningLabel.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="VCPUWarningLabel.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.Name" xml:space="preserve">
<value>VCPUWarningLabel</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;VCPUWarningLabel.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="label1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 15</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>494, 32</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>可以调整您的 VM 及其拓扑可用的 vCPU 数以及要分配给 vCPU 的优先级。</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="comboBoxVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>101, 63</value>
</data>
<data name="comboBoxVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 0, 3</value>
</data>
<data name="comboBoxVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="comboBoxVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.Name" xml:space="preserve">
<value>comboBoxVCPUs</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>500, 265</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="labelInvalidVCPUWarning" Row="5" RowSpan="1" Column="1" ColumnSpan="2" />&lt;Control Name="comboBoxTopology" Row="4" RowSpan="1" Column="1" ColumnSpan="2" />&lt;Control Name="labelTopology" Row="4" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="MemWarningLabel" Row="8" RowSpan="2" Column="2" ColumnSpan="1" />&lt;Control Name="panel2" Row="8" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="panel1" Row="7" RowSpan="1" Column="0" ColumnSpan="3" />&lt;Control Name="lblPriority" Row="6" RowSpan="1" Column="0" ColumnSpan="2" />&lt;Control Name="lblVCPUs" Row="2" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="lblVcpuWarning" Row="1" RowSpan="1" Column="0" ColumnSpan="2" />&lt;Control Name="lblMemory" Row="8" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="VCPUWarningLabel" Row="2" RowSpan="2" Column="2" ColumnSpan="1" />&lt;Control Name="label1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" />&lt;Control Name="comboBoxVCPUs" Row="2" RowSpan="1" Column="1" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,AutoSize,0,Percent,100" />&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" />&lt;/TableLayoutSettings></value>
</data>
<data name="lblPriority.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblPriority.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 76</value>
</data>
<data name="lblPriority.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 16, 0, 0</value>
</data>
<data name="lblPriority.Size" type="System.Drawing.Size, System.Drawing">
<value>145, 33</value>
</data>
<data name="lblPriority.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="lblPriority.Text" xml:space="preserve">
<value>此虚拟机的 vCPU 优先级:</value>
</data>
<data name="lblPriority.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;lblPriority.Name" xml:space="preserve">
<value>lblPriority</value>
</data>
<data name="&gt;&gt;lblPriority.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblPriority.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;lblPriority.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>

View File

@ -1107,7 +1107,7 @@ namespace XenAdmin.TabPages
PDSection s = pdSectionVCPUs;
s.AddEntry(FriendlyName("VM.VCPUs"), vm.VCPUs_at_startup.ToString());
if (vm.VCPUs_at_startup != vm.VCPUs_max)
if (vm.VCPUs_at_startup != vm.VCPUs_max || vm.SupportsVcpuHotplug)
s.AddEntry(FriendlyName("VM.MaxVCPUs"), vm.VCPUs_max.ToString());
s.AddEntry(FriendlyName("VM.Topology"), vm.Topology);
}

View File

@ -166,7 +166,8 @@ namespace XenAdmin.Wizards.NewVMWizard
page_3_InstallationMedia.SelectedCD,
page_3_InstallationMedia.SelectedUrl,
m_affinity,
page_5_CpuMem.SelectedVcpus,
page_5_CpuMem.SelectedVcpusMax,
page_5_CpuMem.SelectedVcpusAtStartup,
(long)page_5_CpuMem.SelectedMemoryDynamicMin,
(long)page_5_CpuMem.SelectedMemoryDynamicMax,
(long)page_5_CpuMem.SelectedMemoryStaticMax,

View File

@ -38,6 +38,8 @@ namespace XenAdmin.Wizards.NewVMWizard
this.spinnerDynMax = new XenAdmin.Controls.Ballooning.MemorySpinner();
this.spinnerStatMax = new XenAdmin.Controls.Ballooning.MemorySpinner();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.comboBoxInitialVCPUs = new System.Windows.Forms.ComboBox();
this.labelInitialVCPUs = new System.Windows.Forms.Label();
this.labelInvalidVCPUWarning = new System.Windows.Forms.Label();
this.comboBoxTopology = new XenAdmin.Controls.CPUTopologyComboBox();
this.labelTopology = new System.Windows.Forms.Label();
@ -54,8 +56,8 @@ namespace XenAdmin.Wizards.NewVMWizard
//
// label5
//
this.tableLayoutPanel1.SetColumnSpan(this.label5, 2);
resources.ApplyResources(this.label5, "label5");
this.tableLayoutPanel1.SetColumnSpan(this.label5, 2);
this.label5.Name = "label5";
//
// pictureBox1
@ -104,17 +106,31 @@ namespace XenAdmin.Wizards.NewVMWizard
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.comboBoxInitialVCPUs, 1, 4);
this.tableLayoutPanel1.Controls.Add(this.labelInitialVCPUs, 0, 4);
this.tableLayoutPanel1.Controls.Add(this.labelInvalidVCPUWarning, 1, 3);
this.tableLayoutPanel1.Controls.Add(this.comboBoxTopology, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.label5, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.spinnerStatMax, 0, 6);
this.tableLayoutPanel1.Controls.Add(this.spinnerStatMax, 0, 7);
this.tableLayoutPanel1.Controls.Add(this.labelVCPUs, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.spinnerDynMax, 0, 5);
this.tableLayoutPanel1.Controls.Add(this.spinnerDynMin, 0, 4);
this.tableLayoutPanel1.Controls.Add(this.spinnerDynMax, 0, 6);
this.tableLayoutPanel1.Controls.Add(this.spinnerDynMin, 0, 5);
this.tableLayoutPanel1.Controls.Add(this.labelTopology, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.comboBoxVCPUs, 1, 1);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// comboBoxInitialVCPUs
//
this.comboBoxInitialVCPUs.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxInitialVCPUs.FormattingEnabled = true;
resources.ApplyResources(this.comboBoxInitialVCPUs, "comboBoxInitialVCPUs");
this.comboBoxInitialVCPUs.Name = "comboBoxInitialVCPUs";
//
// labelInitialVCPUs
//
resources.ApplyResources(this.labelInitialVCPUs, "labelInitialVCPUs");
this.labelInitialVCPUs.Name = "labelInitialVCPUs";
//
// labelInvalidVCPUWarning
//
resources.ApplyResources(this.labelInvalidVCPUWarning, "labelInvalidVCPUWarning");
@ -173,5 +189,7 @@ namespace XenAdmin.Wizards.NewVMWizard
private Controls.CPUTopologyComboBox comboBoxTopology;
private System.Windows.Forms.Label labelInvalidVCPUWarning;
private System.Windows.Forms.ComboBox comboBoxVCPUs;
private System.Windows.Forms.ComboBox comboBoxInitialVCPUs;
private System.Windows.Forms.Label labelInitialVCPUs;
}
}

View File

@ -31,6 +31,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using XenAPI;
using XenAdmin.Controls;
@ -46,6 +47,11 @@ namespace XenAdmin.Wizards.NewVMWizard
int memoryMode = 1; // number of spinners to show: 1 for just "memory", 2 for "minimum" and "maximum", 3 for "static max" too
double memoryRatio = 0.0; // the permitted ratio of dynamic_min / static_max
bool initialising = true;
private bool isVcpuHotplugSupported;
// Please note that the comboBoxVCPUs control can represent two different VM properties, depending whether the VM supports vCPU hotplug or not:
// When vCPU hotplug is not supported, comboBoxVCPUs represents the initial number of vCPUs (VCPUs_at_startup). In this case we will also set the VM property VCPUs_max to the same value.
// When vCPU hotplug is supported, comboBoxVCPUs represents the maximum number of vCPUs (VCPUs_max). And the initial number of vCPUs is represented in comboBoxInitialVCPUs (which is only visible in this case)
public Page_CpuMem()
{
@ -106,8 +112,12 @@ namespace XenAdmin.Wizards.NewVMWizard
spinnerStatMax.Visible = false;
}
comboBoxTopology.Populate(Template.VCPUs_at_startup, Template.VCPUs_max, Template.CoresPerSocket, Template.MaxCoresPerSocket);
PopulateVCPUs(Template.MaxVCPUsAllowed, Template.VCPUs_at_startup);
isVcpuHotplugSupported = Template.SupportsVcpuHotplug;
_prevVCPUsMax = Template.VCPUs_max; // we use variable in RefreshCurrentVCPUs for checking if VcpusAtStartup and VcpusMax were equal before VcpusMax changed
label5.Text = GetRubric();
InitialiseVcpuControls();
SetSpinnerLimitsAndIncrement();
@ -116,19 +126,55 @@ namespace XenAdmin.Wizards.NewVMWizard
initialising = false;
}
private void InitialiseVcpuControls()
{
labelVCPUs.Text = isVcpuHotplugSupported
? Messages.VM_CPUMEMPAGE_MAX_VCPUS_LABEL
: Messages.VM_CPUMEMPAGE_VCPUS_LABEL;
labelInitialVCPUs.Text = Messages.VM_CPUMEMPAGE_INITIAL_VCPUS_LABEL;
labelInitialVCPUs.Visible = comboBoxInitialVCPUs.Visible = isVcpuHotplugSupported;
comboBoxTopology.Populate(Template.VCPUs_at_startup, Template.VCPUs_max, Template.CoresPerSocket, Template.MaxCoresPerSocket);
PopulateVCPUs(Template.MaxVCPUsAllowed, isVcpuHotplugSupported ? Template.VCPUs_max : Template.VCPUs_at_startup);
if (isVcpuHotplugSupported)
PopulateVCPUsAtStartup(Template.VCPUs_max, Template.VCPUs_at_startup);
}
private void PopulateVCPUComboBox(ComboBox comboBox, long min, long max, long currentValue, Predicate<long> isValid)
{
comboBox.BeginUpdate();
comboBox.Items.Clear();
for (long i = min; i <= max; ++i)
{
if (i == currentValue || isValid(i))
comboBox.Items.Add(i);
}
if (currentValue > max)
comboBox.Items.Add(currentValue);
comboBox.SelectedItem = currentValue;
comboBox.EndUpdate();
}
private void PopulateVCPUs(long maxVCPUs, long currentVCPUs)
{
comboBoxVCPUs.BeginUpdate();
comboBoxVCPUs.Items.Clear();
for (long i = 1; i <= maxVCPUs; ++i)
{
if (i == currentVCPUs || comboBoxTopology.IsValidVCPU(i))
comboBoxVCPUs.Items.Add(i);
}
if (currentVCPUs > maxVCPUs)
comboBoxVCPUs.Items.Add(currentVCPUs);
comboBoxVCPUs.SelectedItem = currentVCPUs;
comboBoxVCPUs.EndUpdate();
PopulateVCPUComboBox(comboBoxVCPUs, 1, maxVCPUs, currentVCPUs, i => comboBoxTopology.IsValidVCPU(i));
}
private void PopulateVCPUsAtStartup(long max, long currentValue)
{
PopulateVCPUComboBox(comboBoxInitialVCPUs, 1, max, currentValue, i => true);
}
private string GetRubric()
{
StringBuilder sb = new StringBuilder();
sb.Append(Messages.NEWVMWIZARD_CPUMEMPAGE_RUBRIC);
// add hotplug text
if (isVcpuHotplugSupported)
sb.Append(Messages.VM_CPUMEMPAGE_RUBRIC_HOTPLUG);
return sb.ToString();
}
public VM SelectedTemplate { private get; set; }
@ -210,7 +256,7 @@ namespace XenAdmin.Wizards.NewVMWizard
}
}
public long SelectedVcpus
public long SelectedVcpusMax
{
get
{
@ -218,6 +264,14 @@ namespace XenAdmin.Wizards.NewVMWizard
}
}
public long SelectedVcpusAtStartup
{
get
{
return isVcpuHotplugSupported ? (long)comboBoxInitialVCPUs.SelectedItem : (long)comboBoxVCPUs.SelectedItem;
}
}
public long SelectedCoresPerSocket
{
get
@ -231,7 +285,16 @@ namespace XenAdmin.Wizards.NewVMWizard
get
{
List<KeyValuePair<string, string>> sum = new List<KeyValuePair<string, string>>();
sum.Add(new KeyValuePair<string, string>(Messages.NEWVMWIZARD_CPUMEMPAGE_VCPUS, SelectedVcpus.ToString()));
if (isVcpuHotplugSupported)
{
sum.Add(new KeyValuePair<string, string>(Messages.NEWVMWIZARD_CPUMEMPAGE_MAX_VCPUS, SelectedVcpusMax.ToString()));
sum.Add(new KeyValuePair<string, string>(Messages.NEWVMWIZARD_CPUMEMPAGE_INITIAL_VCPUS, SelectedVcpusAtStartup.ToString()));
}
else
{
sum.Add(new KeyValuePair<string, string>(Messages.NEWVMWIZARD_CPUMEMPAGE_VCPUS, SelectedVcpusAtStartup.ToString()));
}
sum.Add(new KeyValuePair<string, string>(Messages.NEWVMWIZARD_CPUMEMPAGE_TOPOLOGY, comboBoxTopology.Text));
if (memoryMode == 1)
sum.Add(new KeyValuePair<string, string>(Messages.MEMORY, Util.MemorySizeStringSuitableUnits(SelectedMemoryStaticMax, false)));
@ -308,7 +371,7 @@ namespace XenAdmin.Wizards.NewVMWizard
ErrorPanel.Visible = true;
ErrorLabel.Text = string.Format(Messages.NEWVMWIZARD_CPUMEMPAGE_MEMORYWARN2, Helpers.GetName(max_mem_free_host), Util.MemorySizeStringSuitableUnits(max_mem_free, false));
}
else if (max_vcpus_host != null && SelectedVcpus > max_vcpus)
else if (max_vcpus_host != null && SelectedVcpusMax > max_vcpus)
{
ErrorPanel.Visible = true;
ErrorLabel.Text = string.Format(Messages.NEWVMWIZARD_CPUMEMPAGE_VCPUSWARN, Helpers.GetName(max_vcpus_host), max_vcpus);
@ -324,6 +387,7 @@ namespace XenAdmin.Wizards.NewVMWizard
comboBoxTopology.Update((long)comboBoxVCPUs.SelectedItem);
ValuesUpdated();
ValidateVCPUSettings();
RefreshCurrentVCPUs();
}
private void memory_ValueChanged(object sender, EventArgs e)
@ -341,6 +405,29 @@ namespace XenAdmin.Wizards.NewVMWizard
labelInvalidVCPUWarning.Text = VM.ValidVCPUConfiguration((long)comboBoxVCPUs.SelectedItem, comboBoxTopology.CoresPerSocket);
}
private long _prevVCPUsMax;
private void RefreshCurrentVCPUs()
{
// refresh comboBoxInitialVCPUs if it's visible and populated
if (comboBoxInitialVCPUs.Visible && comboBoxInitialVCPUs.Items.Count > 0)
{
// VcpusAtStartup is always <= VcpusMax
// So if VcpusMax is decreased below VcpusAtStartup, then VcpusAtStartup is decreased to that number too
// If VcpusAtStartup and VcpusMax are equal, and VcpusMax is changed, then VcpusAtStartup is changed to match
// But if the numbers are unequal, and VcpusMax is changed but is still higher than VcpusAtStartup, then VcpusAtStartup is unchanged
var newValue = SelectedVcpusAtStartup;
if (SelectedVcpusMax < SelectedVcpusAtStartup)
newValue = SelectedVcpusMax;
else if (SelectedVcpusAtStartup == _prevVCPUsMax && SelectedVcpusMax != _prevVCPUsMax)
newValue = SelectedVcpusMax;
PopulateVCPUsAtStartup(SelectedVcpusMax, newValue);
_prevVCPUsMax = SelectedVcpusMax;
}
}
private void comboBoxTopology_SelectedIndexChanged(object sender, EventArgs e)
{
ValidateVCPUSettings();

View File

@ -118,18 +118,21 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelVCPUs.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
<data name="labelVCPUs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelVCPUs.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="labelVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>24, 41</value>
<value>26, 40</value>
</data>
<data name="labelVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>10, 0, 0, 0</value>
<value>26, 0, 0, 0</value>
</data>
<data name="labelVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>131, 25</value>
<value>164, 27</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelVCPUs.TabIndex" type="System.Int32, mscorlib">
@ -151,11 +154,74 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelVCPUs.ZOrder" xml:space="preserve">
<value>4</value>
<value>6</value>
</data>
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="comboBoxInitialVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>190, 122</value>
</data>
<data name="comboBoxInitialVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 0, 20</value>
</data>
<data name="comboBoxInitialVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="comboBoxInitialVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.Name" xml:space="preserve">
<value>comboBoxInitialVCPUs</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelInitialVCPUs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelInitialVCPUs.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelInitialVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>26, 119</value>
</data>
<data name="labelInitialVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>26, 0, 0, 17</value>
</data>
<data name="labelInitialVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 27</value>
</data>
<data name="labelInitialVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="labelInitialVCPUs.Text" xml:space="preserve">
<value>Initial number of v&amp;CPUs:</value>
</data>
<data name="labelInitialVCPUs.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.Name" xml:space="preserve">
<value>labelInitialVCPUs</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="labelInvalidVCPUWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
@ -166,13 +232,13 @@
<value>NoControl</value>
</data>
<data name="labelInvalidVCPUWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>170, 97</value>
<value>190, 100</value>
</data>
<data name="labelInvalidVCPUWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 3, 6</value>
</data>
<data name="labelInvalidVCPUWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>342, 13</value>
<value>322, 13</value>
</data>
<data name="labelInvalidVCPUWarning.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
@ -187,16 +253,16 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelInvalidVCPUWarning.ZOrder" xml:space="preserve">
<value>0</value>
<value>2</value>
</data>
<data name="comboBoxTopology.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value>
</data>
<data name="comboBoxTopology.Location" type="System.Drawing.Point, System.Drawing">
<value>170, 70</value>
<value>190, 73</value>
</data>
<data name="comboBoxTopology.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 0, 6</value>
<value>0, 6, 0, 6</value>
</data>
<data name="comboBoxTopology.Size" type="System.Drawing.Size, System.Drawing">
<value>250, 21</value>
@ -214,16 +280,16 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxTopology.ZOrder" xml:space="preserve">
<value>1</value>
<value>3</value>
</data>
<data name="spinnerStatMax.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 178</value>
<value>0, 225</value>
</data>
<data name="spinnerStatMax.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="spinnerStatMax.Size" type="System.Drawing.Size, System.Drawing">
<value>280, 31</value>
<value>298, 31</value>
</data>
<data name="spinnerStatMax.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
@ -238,16 +304,16 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;spinnerStatMax.ZOrder" xml:space="preserve">
<value>3</value>
<value>5</value>
</data>
<data name="spinnerDynMax.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 147</value>
<value>0, 194</value>
</data>
<data name="spinnerDynMax.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="spinnerDynMax.Size" type="System.Drawing.Size, System.Drawing">
<value>280, 31</value>
<value>298, 31</value>
</data>
<data name="spinnerDynMax.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
@ -262,16 +328,16 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;spinnerDynMax.ZOrder" xml:space="preserve">
<value>5</value>
<value>7</value>
</data>
<data name="spinnerDynMin.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 116</value>
<value>0, 163</value>
</data>
<data name="spinnerDynMin.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="spinnerDynMin.Size" type="System.Drawing.Size, System.Drawing">
<value>280, 31</value>
<value>298, 31</value>
</data>
<data name="spinnerDynMin.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
@ -286,22 +352,22 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;spinnerDynMin.ZOrder" xml:space="preserve">
<value>6</value>
<value>8</value>
</data>
<data name="labelTopology.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
<data name="labelTopology.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelTopology.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelTopology.Location" type="System.Drawing.Point, System.Drawing">
<value>24, 69</value>
<value>26, 67</value>
</data>
<data name="labelTopology.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>10, 0, 0, 0</value>
<value>26, 0, 0, 0</value>
</data>
<data name="labelTopology.Size" type="System.Drawing.Size, System.Drawing">
<value>131, 25</value>
<value>164, 33</value>
</data>
<data name="labelTopology.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
@ -322,10 +388,10 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelTopology.ZOrder" xml:space="preserve">
<value>7</value>
<value>9</value>
</data>
<data name="comboBoxVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>170, 43</value>
<value>190, 43</value>
</data>
<data name="comboBoxVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 0, 3</value>
@ -346,7 +412,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.ZOrder" xml:space="preserve">
<value>8</value>
<value>10</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
@ -355,10 +421,10 @@
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>7</value>
<value>9</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>515, 223</value>
<value>515, 255</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
@ -376,7 +442,7 @@
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="labelInvalidVCPUWarning" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="comboBoxTopology" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="label5" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="spinnerStatMax" Row="6" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="labelVCPUs" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="spinnerDynMax" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="spinnerDynMin" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="labelTopology" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="comboBoxVCPUs" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Absolute,170,Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /&gt;&lt;/TableLayoutSettings&gt;</value>
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="comboBoxInitialVCPUs" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelInitialVCPUs" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelInvalidVCPUWarning" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="comboBoxTopology" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="label5" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="spinnerStatMax" Row="7" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="labelVCPUs" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="spinnerDynMax" Row="6" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="spinnerDynMin" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="labelTopology" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="comboBoxVCPUs" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Absolute,190,Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="label5.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
@ -384,8 +450,11 @@
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 0</value>
</data>
<data name="label5.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 3, 14</value>
</data>
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
<value>509, 40</value>
<value>509, 26</value>
</data>
<data name="label5.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -403,7 +472,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label5.ZOrder" xml:space="preserve">
<value>2</value>
<value>4</value>
</data>
<data name="pictureBox1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -463,7 +532,7 @@
<value>Bottom</value>
</data>
<data name="ErrorPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 223</value>
<value>0, 255</value>
</data>
<data name="ErrorPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>515, 112</value>
@ -493,7 +562,7 @@
<value>96, 96</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>515, 335</value>
<value>515, 367</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>Page_CpuMem</value>

View File

@ -117,21 +117,24 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="labelVCPUs.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelVCPUs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="labelVCPUs.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="labelVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 40</value>
<value>38, 27</value>
</data>
<data name="labelVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>10, 0, 0, 0</value>
<value>38, 0, 0, 0</value>
</data>
<data name="labelVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>111, 25</value>
<value>166, 27</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
@ -151,11 +154,74 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelVCPUs.ZOrder" xml:space="preserve">
<value>4</value>
<value>6</value>
</data>
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="comboBoxInitialVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>204, 109</value>
</data>
<data name="comboBoxInitialVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 0, 20</value>
</data>
<data name="comboBoxInitialVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 21</value>
</data>
<data name="comboBoxInitialVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.Name" xml:space="preserve">
<value>comboBoxInitialVCPUs</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxInitialVCPUs.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelInitialVCPUs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelInitialVCPUs.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelInitialVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>38, 106</value>
</data>
<data name="labelInitialVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>38, 0, 0, 17</value>
</data>
<data name="labelInitialVCPUs.Size" type="System.Drawing.Size, System.Drawing">
<value>166, 27</value>
</data>
<data name="labelInitialVCPUs.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="labelInitialVCPUs.Text" xml:space="preserve">
<value>Initial number of v&amp;CPUs:</value>
</data>
<data name="labelInitialVCPUs.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.Name" xml:space="preserve">
<value>labelInitialVCPUs</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelInitialVCPUs.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="labelInvalidVCPUWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
@ -166,13 +232,13 @@
<value>NoControl</value>
</data>
<data name="labelInvalidVCPUWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>170, 96</value>
<value>204, 87</value>
</data>
<data name="labelInvalidVCPUWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 3, 6</value>
</data>
<data name="labelInvalidVCPUWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>342, 30</value>
<value>308, 13</value>
</data>
<data name="labelInvalidVCPUWarning.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
@ -187,16 +253,16 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelInvalidVCPUWarning.ZOrder" xml:space="preserve">
<value>0</value>
<value>2</value>
</data>
<data name="comboBoxTopology.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value>
</data>
<data name="comboBoxTopology.Location" type="System.Drawing.Point, System.Drawing">
<value>170, 69</value>
<value>204, 60</value>
</data>
<data name="comboBoxTopology.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 0, 6</value>
<value>0, 6, 0, 6</value>
</data>
<data name="comboBoxTopology.Size" type="System.Drawing.Size, System.Drawing">
<value>250, 21</value>
@ -214,16 +280,16 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxTopology.ZOrder" xml:space="preserve">
<value>1</value>
<value>3</value>
</data>
<data name="spinnerStatMax.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 182</value>
<value>0, 212</value>
</data>
<data name="spinnerStatMax.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="spinnerStatMax.Size" type="System.Drawing.Size, System.Drawing">
<value>265, 25</value>
<value>298, 31</value>
</data>
<data name="spinnerStatMax.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
@ -238,16 +304,16 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;spinnerStatMax.ZOrder" xml:space="preserve">
<value>3</value>
<value>5</value>
</data>
<data name="spinnerDynMax.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 157</value>
<value>0, 181</value>
</data>
<data name="spinnerDynMax.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="spinnerDynMax.Size" type="System.Drawing.Size, System.Drawing">
<value>265, 25</value>
<value>298, 31</value>
</data>
<data name="spinnerDynMax.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
@ -262,16 +328,16 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;spinnerDynMax.ZOrder" xml:space="preserve">
<value>5</value>
<value>7</value>
</data>
<data name="spinnerDynMin.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 132</value>
<value>0, 150</value>
</data>
<data name="spinnerDynMin.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="spinnerDynMin.Size" type="System.Drawing.Size, System.Drawing">
<value>265, 25</value>
<value>298, 31</value>
</data>
<data name="spinnerDynMin.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
@ -286,22 +352,22 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;spinnerDynMin.ZOrder" xml:space="preserve">
<value>6</value>
<value>8</value>
</data>
<data name="labelTopology.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
<data name="labelTopology.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelTopology.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelTopology.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 66</value>
<value>38, 54</value>
</data>
<data name="labelTopology.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>10, 0, 0, 0</value>
<value>38, 0, 0, 0</value>
</data>
<data name="labelTopology.Size" type="System.Drawing.Size, System.Drawing">
<value>111, 25</value>
<value>166, 33</value>
</data>
<data name="labelTopology.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
@ -322,10 +388,10 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelTopology.ZOrder" xml:space="preserve">
<value>7</value>
<value>9</value>
</data>
<data name="comboBoxVCPUs.Location" type="System.Drawing.Point, System.Drawing">
<value>170, 43</value>
<value>204, 30</value>
</data>
<data name="comboBoxVCPUs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 0, 3</value>
@ -346,7 +412,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;comboBoxVCPUs.ZOrder" xml:space="preserve">
<value>8</value>
<value>10</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
@ -355,10 +421,10 @@
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>7</value>
<value>9</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>515, 193</value>
<value>515, 255</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
@ -376,16 +442,19 @@
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="labelInvalidVCPUWarning" Row="3" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="comboBoxTopology" Row="2" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="label5" Row="0" RowSpan="1" Column="0" ColumnSpan="2" />&lt;Control Name="spinnerStatMax" Row="6" RowSpan="1" Column="0" ColumnSpan="2" />&lt;Control Name="labelVCPUs" Row="1" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="spinnerDynMax" Row="5" RowSpan="1" Column="0" ColumnSpan="2" />&lt;Control Name="spinnerDynMin" Row="4" RowSpan="1" Column="0" ColumnSpan="2" />&lt;Control Name="labelTopology" Row="2" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="comboBoxVCPUs" Row="1" RowSpan="1" Column="1" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="Absolute,170,Percent,100" />&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" />&lt;/TableLayoutSettings></value>
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="comboBoxInitialVCPUs" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelInitialVCPUs" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelInvalidVCPUWarning" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="comboBoxTopology" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="label5" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="spinnerStatMax" Row="7" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="labelVCPUs" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="spinnerDynMax" Row="6" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="spinnerDynMin" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="labelTopology" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="comboBoxVCPUs" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Absolute,204,Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="label5.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
<value>3, 0</value>
</data>
<data name="label5.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 3, 14</value>
</data>
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
<value>466, 40</value>
<value>509, 13</value>
</data>
<data name="label5.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -403,7 +472,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label5.ZOrder" xml:space="preserve">
<value>2</value>
<value>4</value>
</data>
<data name="pictureBox1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@ -442,7 +511,7 @@
<value>25, 6</value>
</data>
<data name="ErrorLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>438, 113</value>
<value>487, 106</value>
</data>
<data name="ErrorLabel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -463,10 +532,10 @@
<value>Bottom</value>
</data>
<data name="ErrorPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 150</value>
<value>0, 255</value>
</data>
<data name="ErrorPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>466, 119</value>
<value>515, 112</value>
</data>
<data name="ErrorPanel.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
@ -493,7 +562,7 @@
<value>96, 96</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>466, 269</value>
<value>515, 367</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>Page_CpuMem</value>

View File

@ -35,29 +35,35 @@ namespace XenAdmin.Actions
{
public class ChangeVCPUSettingsAction : PureAsyncAction
{
private long m_VCPUs;
private long m_VCPUs_max;
private long m_VCPUs_at_startup;
private VM m_VM;
public ChangeVCPUSettingsAction(VM vm, long VCPUs)
public ChangeVCPUSettingsAction(VM vm, long VCPUs_max, long VCPUs_at_startup)
: base(vm.Connection, "", true)
{
m_VM = vm;
m_VCPUs=VCPUs;
m_VCPUs_max = VCPUs_max;
m_VCPUs_at_startup = VCPUs_at_startup;
}
protected override void Run()
{
if (m_VM.VCPUs_at_startup > m_VCPUs)
if (m_VM.power_state == vm_power_state.Running) // if the VM is running, we can only change the vCPUs number, not the max.
{
XenAPI.VM.set_VCPUs_at_startup(this.Session, m_VM.opaque_ref, m_VCPUs);
XenAPI.VM.set_VCPUs_max(this.Session, m_VM.opaque_ref, m_VCPUs);
}
else
{
XenAPI.VM.set_VCPUs_max(this.Session, m_VM.opaque_ref, m_VCPUs);
XenAPI.VM.set_VCPUs_at_startup(this.Session, m_VM.opaque_ref, m_VCPUs);
VM.set_VCPUs_number_live(Session, m_VM.opaque_ref, m_VCPUs_at_startup);
return;
}
if (m_VM.VCPUs_at_startup > m_VCPUs_at_startup) // reducing VCPUs_at_startup: we need to change this value first, and then the VCPUs_max
{
VM.set_VCPUs_at_startup(Session, m_VM.opaque_ref, m_VCPUs_at_startup);
VM.set_VCPUs_max(Session, m_VM.opaque_ref, m_VCPUs_max);
}
else // increasing VCPUs_at_startup: we need to change the VCPUs_max first
{
VM.set_VCPUs_max(Session, m_VM.opaque_ref, m_VCPUs_max);
VM.set_VCPUs_at_startup(Session, m_VM.opaque_ref, m_VCPUs_at_startup);
}
}
}
}

View File

@ -57,7 +57,8 @@ namespace XenAdmin.Actions.VMActions
private readonly VDI Cd;
private readonly string Url;
private readonly Host HomeServer;
private readonly long Vcpus;
private readonly long VcpusMax;
private readonly long VcpusAtStartup;
private readonly long MemoryDynamicMin, MemoryDynamicMax, MemoryStaticMax;
private readonly List<DiskDescription> Disks;
private readonly List<VIF> Vifs;
@ -112,7 +113,7 @@ namespace XenAdmin.Actions.VMActions
public CreateVMAction(IXenConnection connection, VM template, Host copyBiosStringsFrom,
string name, string description, InstallMethod installMethod,
string pvArgs, VDI cd, string url, Host homeServer, long vcpus,
string pvArgs, VDI cd, string url, Host homeServer, long vcpusMax, long vcpusAtStartup,
long memoryDynamicMin, long memoryDynamicMax, long memoryStaticMax,
List<DiskDescription> disks, SR fullCopySR, List<VIF> vifs, bool startAfter,
Action<VM, bool> warningDialogHAInvalidConfig,
@ -131,7 +132,8 @@ namespace XenAdmin.Actions.VMActions
Cd = cd;
Url = url;
HomeServer = homeServer;
Vcpus = vcpus;
VcpusMax = vcpusMax;
VcpusAtStartup = vcpusAtStartup;
MemoryDynamicMin = memoryDynamicMin;
MemoryDynamicMax = memoryDynamicMax;
MemoryStaticMax = memoryStaticMax;
@ -299,7 +301,7 @@ namespace XenAdmin.Actions.VMActions
Description = Messages.SETTING_VM_PROPERTIES;
XenAPI.VM.set_name_label(Session, VM.opaque_ref, NameLabel);
XenAPI.VM.set_name_description(Session, VM.opaque_ref, NameDescription);
ChangeVCPUSettingsAction vcpuAction = new ChangeVCPUSettingsAction(VM, Vcpus);
ChangeVCPUSettingsAction vcpuAction = new ChangeVCPUSettingsAction(VM, VcpusMax, VcpusAtStartup);
vcpuAction.RunExternal(Session);
// set cores-per-socket

View File

@ -24013,6 +24013,24 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Initial number of vCPUs.
/// </summary>
public static string NEWVMWIZARD_CPUMEMPAGE_INITIAL_VCPUS {
get {
return ResourceManager.GetString("NEWVMWIZARD_CPUMEMPAGE_INITIAL_VCPUS", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Maximum number of vCPUs.
/// </summary>
public static string NEWVMWIZARD_CPUMEMPAGE_MAX_VCPUS {
get {
return ResourceManager.GetString("NEWVMWIZARD_CPUMEMPAGE_MAX_VCPUS", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The amount of memory allocated to the new VM is greater than the amount of physical memory on any server in the pool.
///
@ -24048,6 +24066,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Specify the number of virtual CPUs, their topology, and the amount of memory that will be allocated to the new virtual machine. .
/// </summary>
public static string NEWVMWIZARD_CPUMEMPAGE_RUBRIC {
get {
return ResourceManager.GetString("NEWVMWIZARD_CPUMEMPAGE_RUBRIC", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Allocate processor and memory resources.
/// </summary>
@ -34250,7 +34277,7 @@ namespace XenAdmin {
}
/// <summary>
/// Looks up a localized string similar to The VCPUs can only be changed when the VM is shut down.
/// Looks up a localized string similar to The VCPUs can only be changed when the VM is shut down..
/// </summary>
public static string VCPU_ONLY_WHEN_HALTED {
get {
@ -34861,6 +34888,78 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to Current number of v&amp;CPUs:.
/// </summary>
public static string VM_CPUMEMPAGE_CURRENT_VCPUS_LABEL {
get {
return ResourceManager.GetString("VM_CPUMEMPAGE_CURRENT_VCPUS_LABEL", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The current number of vCPUs can only be changed when the VM is running or shut down. .
/// </summary>
public static string VM_CPUMEMPAGE_CURRENT_VCPUS_READONLY {
get {
return ResourceManager.GetString("VM_CPUMEMPAGE_CURRENT_VCPUS_READONLY", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Initial number of v&amp;CPUs:.
/// </summary>
public static string VM_CPUMEMPAGE_INITIAL_VCPUS_LABEL {
get {
return ResourceManager.GetString("VM_CPUMEMPAGE_INITIAL_VCPUS_LABEL", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Ma&amp;ximum number of vCPUs:.
/// </summary>
public static string VM_CPUMEMPAGE_MAX_VCPUS_LABEL {
get {
return ResourceManager.GetString("VM_CPUMEMPAGE_MAX_VCPUS_LABEL", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to The maximum number of vCPUs, the topology and the vCPU priority can only be changed when the VM is shut down. .
/// </summary>
public static string VM_CPUMEMPAGE_MAX_VCPUS_READONLY {
get {
return ResourceManager.GetString("VM_CPUMEMPAGE_MAX_VCPUS_READONLY", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Specify the number of vCPUs, their topology, and the priority to assign them over other vCPUs. .
/// </summary>
public static string VM_CPUMEMPAGE_RUBRIC {
get {
return ResourceManager.GetString("VM_CPUMEMPAGE_RUBRIC", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to If the initial number of vCPUs is set lower than the maximum number, more vCPUs can be added to the virtual machine while it is running. .
/// </summary>
public static string VM_CPUMEMPAGE_RUBRIC_HOTPLUG {
get {
return ResourceManager.GetString("VM_CPUMEMPAGE_RUBRIC_HOTPLUG", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Number of v&amp;CPUs:.
/// </summary>
public static string VM_CPUMEMPAGE_VCPUS_LABEL {
get {
return ResourceManager.GetString("VM_CPUMEMPAGE_VCPUS_LABEL", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Container Management.
/// </summary>

View File

@ -8220,6 +8220,12 @@ When you configure an NFS storage repository, you simply provide the hostname or
<data name="NEWVMWIZARD_COPY_BIOS_STRINGS_PAGE_TITLE" xml:space="preserve">
<value>Select the server that will provide the BIOS strings</value>
</data>
<data name="NEWVMWIZARD_CPUMEMPAGE_INITIAL_VCPUS" xml:space="preserve">
<value>Initial number of vCPUs</value>
</data>
<data name="NEWVMWIZARD_CPUMEMPAGE_MAX_VCPUS" xml:space="preserve">
<value>Maximum number of vCPUs</value>
</data>
<data name="NEWVMWIZARD_CPUMEMPAGE_MEMORYWARN1" xml:space="preserve">
<value>The amount of memory allocated to the new VM is greater than the amount of physical memory on any server in the pool.
@ -8237,6 +8243,9 @@ You will not be able to start this VM without freeing some space on one of the s
<data name="NEWVMWIZARD_CPUMEMPAGE_NAME" xml:space="preserve">
<value>CPU &amp;&amp; Memory</value>
</data>
<data name="NEWVMWIZARD_CPUMEMPAGE_RUBRIC" xml:space="preserve">
<value>Specify the number of virtual CPUs, their topology, and the amount of memory that will be allocated to the new virtual machine. </value>
</data>
<data name="NEWVMWIZARD_CPUMEMPAGE_TITLE" xml:space="preserve">
<value>Allocate processor and memory resources</value>
</data>
@ -11886,7 +11895,7 @@ To learn more about the [XenServer] Dynamic Workload Balancing feature or to sta
<value>The disk is attached to a VM that is not in halted state.</value>
</data>
<data name="VCPU_ONLY_WHEN_HALTED" xml:space="preserve">
<value>The VCPUs can only be changed when the VM is shut down</value>
<value>The VCPUs can only be changed when the VM is shut down.</value>
</data>
<data name="VDI" xml:space="preserve">
<value>VDI</value>
@ -12101,6 +12110,30 @@ To learn more about the [XenServer] Dynamic Workload Balancing feature or to sta
<data name="VM_CLOUD_CONFIG_DRIVE_UNAVAILABLE" xml:space="preserve">
<value>The cloud-config parameters could not be retrieved.</value>
</data>
<data name="VM_CPUMEMPAGE_CURRENT_VCPUS_LABEL" xml:space="preserve">
<value>Current number of v&amp;CPUs:</value>
</data>
<data name="VM_CPUMEMPAGE_CURRENT_VCPUS_READONLY" xml:space="preserve">
<value>The current number of vCPUs can only be changed when the VM is running or shut down. </value>
</data>
<data name="VM_CPUMEMPAGE_INITIAL_VCPUS_LABEL" xml:space="preserve">
<value>Initial number of v&amp;CPUs:</value>
</data>
<data name="VM_CPUMEMPAGE_MAX_VCPUS_LABEL" xml:space="preserve">
<value>Ma&amp;ximum number of vCPUs:</value>
</data>
<data name="VM_CPUMEMPAGE_MAX_VCPUS_READONLY" xml:space="preserve">
<value>The maximum number of vCPUs, the topology and the vCPU priority can only be changed when the VM is shut down. </value>
</data>
<data name="VM_CPUMEMPAGE_RUBRIC" xml:space="preserve">
<value>Specify the number of vCPUs, their topology, and the priority to assign them over other vCPUs. </value>
</data>
<data name="VM_CPUMEMPAGE_RUBRIC_HOTPLUG" xml:space="preserve">
<value>If the initial number of vCPUs is set lower than the maximum number, more vCPUs can be added to the virtual machine while it is running. </value>
</data>
<data name="VM_CPUMEMPAGE_VCPUS_LABEL" xml:space="preserve">
<value>Number of v&amp;CPUs:</value>
</data>
<data name="VM_ENLIGHTENMENT" xml:space="preserve">
<value>Container Management</value>
</data>

33
XenModel/Messages.zh-CN.resx Normal file → Executable file
View File

@ -8216,6 +8216,12 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并
<data name="NEWVMWIZARD_COPY_BIOS_STRINGS_PAGE_TITLE" xml:space="preserve">
<value>选择将提供 BIOS 字符串的服务器</value>
</data>
<data name="NEWVMWIZARD_CPUMEMPAGE_INITIAL_VCPUS" xml:space="preserve">
<value>虚拟CPU初始个数</value>
</data>
<data name="NEWVMWIZARD_CPUMEMPAGE_MAX_VCPUS" xml:space="preserve">
<value>虚拟CPU最大个数</value>
</data>
<data name="NEWVMWIZARD_CPUMEMPAGE_MEMORYWARN1" xml:space="preserve">
<value>分配给新 VM 的内存量超过池中任何服务器上的物理内存量。
@ -8233,6 +8239,9 @@ VM 克隆使用文件管理器的快照和克隆功能来实现高性能,并
<data name="NEWVMWIZARD_CPUMEMPAGE_NAME" xml:space="preserve">
<value>CPU 和内存</value>
</data>
<data name="NEWVMWIZARD_CPUMEMPAGE_RUBRIC" xml:space="preserve">
<value>指定虚拟CPU的个数拓扑和分配到新虚机上的内存总的大小。</value>
</data>
<data name="NEWVMWIZARD_CPUMEMPAGE_TITLE" xml:space="preserve">
<value>分配处理器和内存资源</value>
</data>
@ -12100,6 +12109,30 @@ Servers where the selected update cannot be applied appear disabled in this list
<data name="VM_CLOUD_CONFIG_DRIVE_UNAVAILABLE" xml:space="preserve">
<value>无法获取云配置参数。</value>
</data>
<data name="VM_CPUMEMPAGE_CURRENT_VCPUS_LABEL" xml:space="preserve">
<value>当前虚拟CPU的个数(&amp;C):</value>
</data>
<data name="VM_CPUMEMPAGE_CURRENT_VCPUS_READONLY" xml:space="preserve">
<value>当前虚拟CPU的个数仅能虚机在运行或关机时改变。</value>
</data>
<data name="VM_CPUMEMPAGE_INITIAL_VCPUS_LABEL" xml:space="preserve">
<value>虚拟CPU的初始个数(&amp;C):</value>
</data>
<data name="VM_CPUMEMPAGE_MAX_VCPUS_LABEL" xml:space="preserve">
<value>虚拟CPU最大个数(&amp;x):</value>
</data>
<data name="VM_CPUMEMPAGE_MAX_VCPUS_READONLY" xml:space="preserve">
<value>虚拟CPU的最大个数和拓扑仅能在虚机关机时改变。</value>
</data>
<data name="VM_CPUMEMPAGE_RUBRIC" xml:space="preserve">
<value>指定虚拟CPU的个数拓扑和分配它们的优先级。</value>
</data>
<data name="VM_CPUMEMPAGE_RUBRIC_HOTPLUG" xml:space="preserve">
<value>如果设置的虚拟CPU初始个数小于其最大值可以在虚机运行时给它增加新的虚拟CPU。</value>
</data>
<data name="VM_CPUMEMPAGE_VCPUS_LABEL" xml:space="preserve">
<value>虚拟CPU的个数(&amp;C):</value>
</data>
<data name="VM_ENLIGHTENMENT" xml:space="preserve">
<value>容器管理</value>
</data>

View File

@ -541,6 +541,30 @@ namespace XenAPI
return h._RestrictLivePatching;
}
public static bool RestrictVcpuHotplug(Host h)
{
return h._RestrictVcpuHotplug;
}
private bool _RestrictVcpuHotplug
{
get
{
if (Helpers.ElyOrGreater(Connection))
{
return BoolKeyPreferTrue(license_params, "restrict_set_vcpus_number_live");
}
// Pre-Ely hosts:
// allowed on Premium edition only
var hostEdition = GetEdition(edition);
if (hostEdition == Edition.Premium)
{
return LicenseExpiryUTC < DateTime.UtcNow - Connection.ServerTimeOffset; // restrict if the license has expired
}
return true;
}
}
public bool HasPBDTo(SR sr)
{
foreach (XenRef<PBD> pbd in PBDs)

View File

@ -2071,6 +2071,14 @@ namespace XenAPI
get
{
return other_config != null && other_config.ContainsKey("hci-warn-before-shutdown");
}
}
public bool SupportsVcpuHotplug
{
get
{
return !IsWindows && Helpers.TampaOrGreater(Connection) && !Helpers.FeatureForbidden(Connection, Host.RestrictVcpuHotplug);
}
}
}