Every time I need to recall or reference a specific ESXi Advanced or Kernel Setting for a customer or field inquiry, I typically need to look at a live ESXi host to see whether a given setting is defined for that version of ESXi and also how to access and/or update the settings. Depending on the interface (vSphere API, vSphere UI, ESXCLI, etc.) that you are using, you may only be able to see a subset of these properties.
For example, some ESXi Advanced Settings are only available using the vSphere API/UI while others are available in both the vSphere API/UI and ESXCLI, with the latter being a common utility for customers to view or update these settings. Similarly, for ESXi Kernel Settings, not only are there new options that are introduced with each ESXi release, but being able to easily check the default values and minimums and maximums can also be useful. I should also mention using the vSphere API/UI, you can also accessed the ESXi Kernel Settings which are prefixed with VMkernel.
As a huge VMware Automation person, I was surprised that I had not thought about creating a reference for the ESXi Advanced and Kernel Settings for recent ESXi releases? I figure this would benefit more than just myself and I have put together the following Github repo: https://github.com/lamw/esxi-advanced-and-kernel-settings where you can see all the default ESXi Advanced and Kernel Settings for ESXi releases across 6.0, 6.5, 7.0 and 8.0.
For those interested, this was generated using some PowerCLI automation and below are the two snippets for pulling the ESXi Advanced Settings (supported and runtime values) using the vSphere API and the ESXi Kernel Settings, which I used the ESXCLI interface that is exposed through the PowerCLI Get-EsxCli cmdlet.
UPDATE (08/13/24) - vCenter Server Advanced Settings Reference is now available.
Note: If you are accessing advanced or kernel settings using vSphere API/UI, the keys are using forward slash (/) notation where as accessing them using ESXCLI, they are using dot (.) notation as the separator. For example, UserVars.ESXiShellTimeOut is key when using the vSphere API/UI and /UserVars/ESXiShellTimeOut is the key for using ESXCLI. This way you can use the table in Github repo to easily translate the keys between the two interfaces. For customers that want a single interface to manage all advanced and kernel settings, definitely use the vSphere API or UI.
ESXi Advanced Settings
$optionManager = Get-View (Get-VMHost).ExtensionData.ConfigManager.AdvancedOption $supportedSettings = $optionManager.SupportedOption $runtimeSettings = $optionManager.Setting
ESXi Kernel Settings
$esxcli = Get-EsxCli $kernelSettings = $esxcli.system.settings.kernel.list()
Nicholas Kulkarni says
Thank you, this is a lovely resource.
Steffen Richter says
Such a gem William! A decade ago already I craved for such a thing but didnt really got to an useful or even up-to-date result. Thank you!
Gopi says
Thanks for the info William. Quick question regarding option "NetNetqRxQueueFeatPairEnable", which I can't see listed.
The same was referenced in one of your old doc here, https://s3.amazonaws.com/virtuallyghetto-download/complete_vsish_config_500ga.html and in a white paper, https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/vmware-tuning-telco-nfv-workloads-vsphere-white-paper.pdf
Thoughts? Is this still a valid adv. settings?