XCP-ng
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    • Profile
    • Following 8
    • Followers 0
    • Topics 5
    • Posts 33
    • Groups 0
    johnnezeroJ Offline
    1. Home
    2. johnnezero

    johnnezero

    @johnnezero

    16
    Reputation
    26
    Profile views
    33
    Posts
    0
    Followers
    8
    Following
    Joined
    Last Online

    johnnezero Unfollow Follow
    • Server Admin Guide: A Tale of Two Servers: BIOS, GPU, and NUMA Tuning for XCP-ng: Preserving the valuable work done by Tobias Kreidl (@tjkreidl)

      WHAT: This post is dedicated to preserving the valuable server administration guide content produced by @tjkreidl, originally titled "A Tale of Two Servers." These articles were first published in 2019 on the Citrix Blogs, which are unfortunately no longer available.

      KUDOS: Special thanks to @john.c for performing some incredible web sleuthing to recover this content, and to @tjkreidl for creating these essential guides in the first place — as well as for "Breathing Life" back into them by highlighting their importance before they disappeared forever into the ferocious "Bit-Bucket."

      Series Overview & Quick Reference

      If you're looking for a high-level summary of the concepts covered in this series — including specific XCP-ng/XO commands for BIOS power management, GPU scheduling, and NUMA inspection — start here:
      Quick Reference & Summary Guide

      The Complete Series

      =========================================

      Part 1: How BIOS Settings Can Affect Your Apps and GPU Performance:

      A deep dive into CPU Power Management (OS DBPM vs. System DBPM) and Turbo mode.
      Read Article

      Part 2: GPU Settings and Advanced BIOS Tuning

      Exploring Uncore frequency, C1E states, and NVIDIA GPU Scheduler modes (Best Effort vs. Equal Share).
      Read Article

      Part 3: NUMA, CPUs, Sockets/Cores, and VM Performance

      Understanding vNUMA, vCPU oversubscription, and the importance of VM startup order for optimal memory placement.
      Read Article

      Archived for the XCP-ng community. Questions or additional insights? Please discuss below!

      posted in Hardware
      johnnezeroJ
      johnnezero
    • RE: Tag-Based Automation Plugin: Tag-Based VM Performance & Permission Management via assigned tag(s)

      @fohdeesha Thank you very much for the corrections and details, I will be looking into addressing each issue directly....

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: Affinity Manager Plugin: Tag-Based VM placement and grouping control

      @poddingue Hey, it's just fun building stuff, even if it ends up in the bit-bucket (as unfotunately that's the destiny of all things anyway).
      Happy Day 🙂

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: Affinity Manager Plugin: Tag-Based VM placement and grouping control

      @poddingue Thank you for the reply, and correction. I totally missed the fact that the Load Balancer plugin has DRS-Type functionality (as well as many more customizable options and features). I'll have to look into it. Thanks again, and Happy Day 🙂

      posted in Management
      johnnezeroJ
      johnnezero
    • Affinity Manager Plugin: Tag-Based VM placement and grouping control

      PROJECT DECOMMISSIONED

      As noted below, all the functions in this plugin are included in the much fully-featured built-in load-balancer plugin. Please refer to the documentation for more details.


      Affinity Manager Plugin

      WHAT: In keeping with my previous project (Tag-Automation Plugin, found here), I am releasing the Affinity Manager Plugin, which is a fully tag-driven plugin for Xen Orchestra. It works similar to VMware's DRS to ensure continuous uptime and optimal resource allocation of crucial VMs and services.


      PROGRAM FEATURES

      • Host Affinity (RunOn) Run VMs on specific host group (e.g. a particular data center or set of hosts)
      • Host Anti-Affinity (NotOn) Keep VMs off of specific host group
      • VM Keep-Together (KeepTogether) Keep named group of VMs on the same host (follows Leader VM)
      • VM Separation (KeepApart) Spread named group of VMs across unique hosts (best-effort)

      REAL-WORLD EXAMPLES

      Core-Critical Service Protection (AM-RunOn)

      • Example #1: Run core-critical services in sepparate Data Centers
      • Goal: Ensure crucial VMs (i.e. MS AD, DNS, etc.) are protected from possible DC outage
      • VM Tag: AM-RunOn_P1-DC1-HOST (applied to "Primary" crucial service VM)
      • VM Tag: AM-RunOn_P1-DC2-HOST (applied to "Secondary" crucial service VM)
      • Host Tag: P1-DC1-HOST (applied to each POOL-1/Data Center 1 host)
      • Host Tag: P1-DC2-HOST (applied to each POOL-1/Data Center 2 host)
      • Result: The primary service VMs (i.e. MS AD Controller) will run on DC1 host(s), and the secondary service VMs will run on DC2 host(s)

      Database High Availability (KeepApart)

      • Example #2: Run database servers on different physical hosts
      • Goal: Protect critical DB servers from possible host outage
      • VM Tag: AM-KeepApart_DBCluster1 (applied to both DB VMs)
      • VM Tag: AM-RunOn_P1-DC2-HOST (applied to "Secondary" crucial service VM)
      • Result: Ensures DB servers run on different hosts

      Note: Tag rules are soft-enforced. For example, if a data center outage occurs all VMs will automatically run any available hosts.


      VM TAG SYNTAX

      Apply tags to VMs in the XO UI:

      VM TAG / RULE EXAMPLE MEANING
      AM-RunOn_{HostGrpName} AM-RunOn_P1-DC2-HOST VM should run on hosts tagged P1-DC2-HOST
      AM-NotOn_{HostGrpName} AM-NotOn_P2-DC1-HOST VM should NOT run on hosts tagged P2-DC1-HOST
      AM-KeepTogether_{GrpName} AM-KeepTogether_AppStack1 Keep all group VMs on same host (follows Leader VM)
      AM-KeepApart_{GrpName} AM-KeepApart_DBCluster1 Spread group VMs across unique hosts (best effort)

      Note: Multiple rules can be combined on a single VM. For example, a VM can have both
      AM-RunOn_P1-DC1-HOST and AM-KeepTogether_WebCluster simultaneously.


      HOST TAG SYNTAX

      Apply tags to hosts in the XO UI (i.e. to define host groups):

      EXAMPLE HOST TAG POOL LOCATION
      P1-DC2-HOST POOL-1 Data Center 2
      P2-DC1-HOST POOL-2 Data Center 1

      INSTALLATION

      Note: "Airgap" in the tar.gz file below, simply means the bundle includes all required dependencies for both an offline or online installation.

      1. Download the latest airgap release tarball from GitHub:
        {link-removed}

      2. SCP the tarball to your XOA:

        scp xo-affinity-manager-airgap-vX.X.X.tar.gz <xoa-user>@<xoa-ip>:/tmp/
        
      3. Create the plugin folder:

        sudo mkdir -p /usr/local/lib/node_modules/xo-server-affinity-manager
        
      4. Extract directly into the plugin directory:

        sudo tar -xzvf /tmp/xo-affinity-manager-airgap-vX.X.X.tar.gz -C /usr/local/lib/node_modules/xo-server-affinity-manager/ --strip-components=1
        
      5. Restart xo-server:

        sudo systemctl restart xo-server
        
      6. Verify registration:

        sudo journalctl -u xo-server -n 100 --no-pager | grep -A3 "affinity-manager"
        

        You should see:
        [INFO] xo-affinity-manager: Plugin factory called -- xo context: YES
        [INFO] xo-affinity-manager: Plugin loaded -- waiting for core started.
        xo:plugin INFO successfully register affinity-manager

      7. Enable and configure the plugin in XO:
        Settings -> Plugins -> affinity-manager -> Enable


      CONFIGURATION

      (XO > Settings > Plugins)

      • Enforcement Schedule — Run every 15 minutes, hourly, or daily (configurable)

      • Dry Run Mode — Logs all intended actions without migrating anything (default: ON)

      • Log Path — Configurable path to the log (Created automatically if it does not exist).

      • Pool Safety — Cross-pool migration is always blocked (i.e. Plugin only migrates VMs within the same pool)

      • Log Rotatate — Rotate/compress log files at 10 MB (keeping 3 archives)


      LINKS

      GitHub: https://github.com/johnezero/xo-affinity-manager


      STANDARD DISCLAIMER HERE

      This software is provided AS-IS without any express or implied warranty.
      While this plugin is being used in a production environment managing live VMs,
      you should always review the code and test it in a non-production environment
      before full deployment.
      Note: The plugin is designed to ONLY take action on VMs with specific predefined tags assigned -- all other VMs are never touched.
      Use Dry-Run mode to preview all changes before applying them.
      That said, as always - your mileage may vary...

      johnezero-logo-small.png

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: pure-plugin for Xen Orchestra

      @poddingue Oh yes (dumb me). Very good, we'll see if they respond (as now there's two @ refferences). Happy Day 🙂

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: pure-plugin for Xen Orchestra

      @poddingue Sorry for my ignorance on this, but I went to the @Team-Storage page and it appears to be private (with no way to post my question). I hit the "Request Invitation" button, but not sure that's what I need to do to post a question either...

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: Tag-Based Automation Plugin: Tag-Based VM Performance & Permission Management via assigned tag(s)

      @poddingue FYI: I posted the "Feature Request" to the feedback channel here as you suggested.
      Hopefully if enough people were used to the way VMware allowed "multiple granular permissions to be set per VM", it will get some traction. Thanks again for pointing me in the right direction.
      Happy Day 🙂

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: Tag-Based Automation Plugin: Tag-Based VM Performance & Permission Management via assigned tag(s)

      @poddingue Thank you for the feedback, and suggestion. I will post a request regarding the one-ACL-per-VM issue, as I know it's an issue with our current 600+ VM VMware-to-XCP-ng migration project. Happy Day 🙂

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: Tag-Based Automation: Manage VM CPU Priority via assigned tag.

      @tjkreidl Found it. I re-posted the topic back to the hardware category (and linked the pdf's to the #tobiaskreidl github) here:
      Server Admin Guide: A Tale of Two Servers: BIOS, GPU, and NUMA Tuning for XCP-ng: Preserving the valuable work done by Tobias Kreidl (@tjkreidl)

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: Tag-Based Automation Plugin: Tag-Based VM Performance & Permission Management via assigned tag(s)

      @john.c Thank you for all the great ideas, keep em' comming!

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: Tag-Based Automation Plugin: Tag-Based VM Performance & Permission Management via assigned tag(s)

      @john.c Yes, will do! Thanks again for all the input, it is greatly appreciated.
      Happy Day 🙂

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: Tag-Based Automation Plugin: Tag-Based VM Performance & Permission Management via assigned tag(s)

      @fohdeesha Thank you very much for the corrections and details, I will be looking into addressing each issue directly....

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: Affinity Manager Plugin: Tag-Based VM placement and grouping control

      @poddingue Hey, it's just fun building stuff, even if it ends up in the bit-bucket (as unfotunately that's the destiny of all things anyway).
      Happy Day 🙂

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: Affinity Manager Plugin: Tag-Based VM placement and grouping control

      @poddingue Thank you for the reply, and correction. I totally missed the fact that the Load Balancer plugin has DRS-Type functionality (as well as many more customizable options and features). I'll have to look into it. Thanks again, and Happy Day 🙂

      posted in Management
      johnnezeroJ
      johnnezero
    • Affinity Manager Plugin: Tag-Based VM placement and grouping control

      PROJECT DECOMMISSIONED

      As noted below, all the functions in this plugin are included in the much fully-featured built-in load-balancer plugin. Please refer to the documentation for more details.


      Affinity Manager Plugin

      WHAT: In keeping with my previous project (Tag-Automation Plugin, found here), I am releasing the Affinity Manager Plugin, which is a fully tag-driven plugin for Xen Orchestra. It works similar to VMware's DRS to ensure continuous uptime and optimal resource allocation of crucial VMs and services.


      PROGRAM FEATURES

      • Host Affinity (RunOn) Run VMs on specific host group (e.g. a particular data center or set of hosts)
      • Host Anti-Affinity (NotOn) Keep VMs off of specific host group
      • VM Keep-Together (KeepTogether) Keep named group of VMs on the same host (follows Leader VM)
      • VM Separation (KeepApart) Spread named group of VMs across unique hosts (best-effort)

      REAL-WORLD EXAMPLES

      Core-Critical Service Protection (AM-RunOn)

      • Example #1: Run core-critical services in sepparate Data Centers
      • Goal: Ensure crucial VMs (i.e. MS AD, DNS, etc.) are protected from possible DC outage
      • VM Tag: AM-RunOn_P1-DC1-HOST (applied to "Primary" crucial service VM)
      • VM Tag: AM-RunOn_P1-DC2-HOST (applied to "Secondary" crucial service VM)
      • Host Tag: P1-DC1-HOST (applied to each POOL-1/Data Center 1 host)
      • Host Tag: P1-DC2-HOST (applied to each POOL-1/Data Center 2 host)
      • Result: The primary service VMs (i.e. MS AD Controller) will run on DC1 host(s), and the secondary service VMs will run on DC2 host(s)

      Database High Availability (KeepApart)

      • Example #2: Run database servers on different physical hosts
      • Goal: Protect critical DB servers from possible host outage
      • VM Tag: AM-KeepApart_DBCluster1 (applied to both DB VMs)
      • VM Tag: AM-RunOn_P1-DC2-HOST (applied to "Secondary" crucial service VM)
      • Result: Ensures DB servers run on different hosts

      Note: Tag rules are soft-enforced. For example, if a data center outage occurs all VMs will automatically run any available hosts.


      VM TAG SYNTAX

      Apply tags to VMs in the XO UI:

      VM TAG / RULE EXAMPLE MEANING
      AM-RunOn_{HostGrpName} AM-RunOn_P1-DC2-HOST VM should run on hosts tagged P1-DC2-HOST
      AM-NotOn_{HostGrpName} AM-NotOn_P2-DC1-HOST VM should NOT run on hosts tagged P2-DC1-HOST
      AM-KeepTogether_{GrpName} AM-KeepTogether_AppStack1 Keep all group VMs on same host (follows Leader VM)
      AM-KeepApart_{GrpName} AM-KeepApart_DBCluster1 Spread group VMs across unique hosts (best effort)

      Note: Multiple rules can be combined on a single VM. For example, a VM can have both
      AM-RunOn_P1-DC1-HOST and AM-KeepTogether_WebCluster simultaneously.


      HOST TAG SYNTAX

      Apply tags to hosts in the XO UI (i.e. to define host groups):

      EXAMPLE HOST TAG POOL LOCATION
      P1-DC2-HOST POOL-1 Data Center 2
      P2-DC1-HOST POOL-2 Data Center 1

      INSTALLATION

      Note: "Airgap" in the tar.gz file below, simply means the bundle includes all required dependencies for both an offline or online installation.

      1. Download the latest airgap release tarball from GitHub:
        {link-removed}

      2. SCP the tarball to your XOA:

        scp xo-affinity-manager-airgap-vX.X.X.tar.gz <xoa-user>@<xoa-ip>:/tmp/
        
      3. Create the plugin folder:

        sudo mkdir -p /usr/local/lib/node_modules/xo-server-affinity-manager
        
      4. Extract directly into the plugin directory:

        sudo tar -xzvf /tmp/xo-affinity-manager-airgap-vX.X.X.tar.gz -C /usr/local/lib/node_modules/xo-server-affinity-manager/ --strip-components=1
        
      5. Restart xo-server:

        sudo systemctl restart xo-server
        
      6. Verify registration:

        sudo journalctl -u xo-server -n 100 --no-pager | grep -A3 "affinity-manager"
        

        You should see:
        [INFO] xo-affinity-manager: Plugin factory called -- xo context: YES
        [INFO] xo-affinity-manager: Plugin loaded -- waiting for core started.
        xo:plugin INFO successfully register affinity-manager

      7. Enable and configure the plugin in XO:
        Settings -> Plugins -> affinity-manager -> Enable


      CONFIGURATION

      (XO > Settings > Plugins)

      • Enforcement Schedule — Run every 15 minutes, hourly, or daily (configurable)

      • Dry Run Mode — Logs all intended actions without migrating anything (default: ON)

      • Log Path — Configurable path to the log (Created automatically if it does not exist).

      • Pool Safety — Cross-pool migration is always blocked (i.e. Plugin only migrates VMs within the same pool)

      • Log Rotatate — Rotate/compress log files at 10 MB (keeping 3 archives)


      LINKS

      GitHub: https://github.com/johnezero/xo-affinity-manager


      STANDARD DISCLAIMER HERE

      This software is provided AS-IS without any express or implied warranty.
      While this plugin is being used in a production environment managing live VMs,
      you should always review the code and test it in a non-production environment
      before full deployment.
      Note: The plugin is designed to ONLY take action on VMs with specific predefined tags assigned -- all other VMs are never touched.
      Use Dry-Run mode to preview all changes before applying them.
      That said, as always - your mileage may vary...

      johnezero-logo-small.png

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: pure-plugin for Xen Orchestra

      @poddingue Oh yes (dumb me). Very good, we'll see if they respond (as now there's two @ refferences). Happy Day 🙂

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: pure-plugin for Xen Orchestra

      @poddingue Sorry for my ignorance on this, but I went to the @Team-Storage page and it appears to be private (with no way to post my question). I hit the "Request Invitation" button, but not sure that's what I need to do to post a question either...

      posted in Management
      johnnezeroJ
      johnnezero
    • RE: pure-plugin for Xen Orchestra

      @poddingue Thank you for all the details and advise. I will reach out to them to see if it is anywhere on the project horizon. Thanks much, and have a great day!

      posted in Management
      johnnezeroJ
      johnnezero
    • pure-plugin for Xen Orchestra

      Just checking if Vates actively working with PureStorage (aka now EverPure) on replicating the vmware pure-plugin app (i.e. that gives you the ability to restore individual VMs from SafeMode Snapshots)? I know this would be highly valuable, with as many XO/Pure customers that there are out there.

      Why I am asking, is I'm starting to look into building a pure-plugin myself, but didn't want to go too far down the road if an official plugin is forthcoming anytime soon.

      posted in Management
      johnnezeroJ
      johnnezero