Summary
VMs such as SAP HANA and other big databases and critical applications run with large resource footprints and often have strict requirements around latency. Setting core and NUMA node affinities is recommended for such large critical applications where low latency is important.
While admins may configure large critical VMs with affinities to unique logical cores or NUMA nodes, maintenance and HA events can change this unique mapping. An HA event would migrate VMs to other hosts with spare capacity and those hosts may already be running VMs affined to the same cores or sockets. This results in multiple VMs constrained/scheduled to the same set of logical cores. These overlapping affinities may result in a CPU contention and/or non-local allocation of memory.
The NUMA Observer Fling scans your VM inventory and identifies VMs with overlapping core/NUMA affinities and generates alerts. Additionally, the Fling also collects statistics on remote memory usage and CPU starvation of critical VMs and raises alerts.




Requirements
- Java 8
- ESXi
- vCenter
Instructions
Running the tool:
* Everything comes packaged in a jar and you just need to trigger the jar with java -jar name_of_the_jar.
* Once launched, the tool UI can be accessed by pointing the browser to localhost:8443
Note:
* When connecting to VC/ESX instances that provide a self-signed certificate from NUMA Observer, please use the "-sslNoVerify" command line argument.
* Please use java -jar NUMA-Observer-version.jar -h, for instructions.
Configuration:
The tool can be configured from the UI or can be configured with a file config.json that is placed in the same directory as the jar.
Following is the sample config.json provided,
{
"runMode": "VC",
"credentials": [
{
"ip": "xxx",
"pwd": "xxx",
"user": "xxxx"
}
],
"numThreads": 64,
"minMonsterVmMemGB": 1,
"maxRemoteMemGB": 1,
"maxRemoteMemPercent": 1,
"maxCpuReadyTime": 100,
"definedMonsterVmTags": {
"HANA" : true
},
"customMonsterVmTagList": [
{
"label": "Cassandra",
"matchCriteria": {
"vmNamePattern": "cas-[0-9]+-*"
}
},
{
"label": "Oracle",
"matchCriteria": {
"vmNamePattern": "orc-*"
}
},
{
"label": "HANA_Simulated",
"matchCriteria": {
"vmNamePattern": "[Hh]ana.*"
}
},
{
"label": "HANA_Template",
"matchCriteria": {
"vmNamePattern": "HanaTemplate"
}
}
]
}
* runMode - supports 2 modes namely VC and ESX
* credentials - list of credentials (one entry for VC mode, one or more for ESX mode)
* numThreads - Concurrency of the tool
* maxRemoteMemGB - NUMA remote memory usage threshold for generating alerts (GB)
* maxRemoteMemPercent - % of NUMA remote memory usage threshold for generating alerts
* maxCpuReadyTime - Average CPU ready time threshold for generating alerts (ms)
* minMonsterVmMemGB - Configured memory threshold to check if a VM is Monster VM (GB)
* definedMonsterVmTagList - Pre-defined tags (do not modify this)
* customMonsterVmTagList - List of custom defined tags
Contributors
Similar Flings

ESXi Embedded Host Client
This version of the ESXi Embedded Host Client is written purely in HTML and JavaScript, and is served directly from your ESXi host and should perform much better than any of the existing solutions.

USB Network Native Driver for ESXi
This Fling supports the most popular USB network adapter chipsets found in the market.

Virtual Machine Desired State Configuration
Virtual Machine Desired State Configuration (VMDSC) allows virtual administrators to specify VM CPU/Memory desired state which will take effect upon the next Guest OS reboot. This removes the burden of having to schedule a downtime window with the business/app owners.