fling logo of NUMA Observer

NUMA Observer

version 1.0 — August 19, 2021

Contributors 3

View All

Comments 11

  • profile picture of Patrick Kremer
  • profile picture of Venu Uppalapati
  • profile picture of Viswanadharaju
  • profile picture of Venu Uppalapati
  • profile picture of Venu Uppalapati
  • profile picture of Venu Uppalapati
  • profile picture of Viswanadharaju
  • profile picture of Venu Uppalapati
View All

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

Similar Flings

Feb 05, 2019
fling logo of ESXi Embedded Host Client

ESXi Embedded Host Client

version 1.33.1

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.

Apr 26, 2023
fling logo of USB Network Native Driver for ESXi

USB Network Native Driver for ESXi

version 1.12

This Fling supports the most popular USB network adapter chipsets found in the market.

May 23, 2022
fling logo of Virtual Machine Desired State Configuration

Virtual Machine Desired State Configuration

version 1.1.3 (4092207)

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.