What is the default time interval for 'virt-who' ID mappings and can it be reduced?
Environment
- Red Hat Enterprise Linux(RHEL) 5.7 and newer
- Red Hat Enterprise Linux(RHEL) 6.1 and newer
- Red Hat Enterprise Linux(RHEL) 7.0 and newer
- VMWare ESX hosts
- Red Hat Subscription Manager
- Red Hat Customer Portal
Issue
- Using virt-who to map our VMWare ESX hosts subscriptions to guests systems.
- Whenever a new virtual machine is created, we have to wait until a new mapping has happened (that takes an hour, normally i guess).
- It possible and valid to set the VIRTWHO_INTERVAL=300 for example? Or would this create too much load or network-traffic (or whatever)?
- Is there perhaps a trigger to manually start the mapping whenever there is a new virtual machine?
Resolution
- Yes, unfortunately there's no events to trigger virt-who to update the guest's UUID immediately after adding a guest with ESX mode.
- You can set shorter checking interval as a workaround (--interval option or VIRTWHO_INTERVAL in /etc/sysconfig/virt-who). If using value lower than 1800s, it is recommended to monitor CPU and memory usage of
candlepin
application /tomcat
service on the server wherevirt-who
reports to.
Root Cause
- There is no known way how to provide this function for VDSM and ESX mode.
Diagnostic Steps
Here's code;
- /usr/share/virt-who/virt-who.py
...
61 # Default interval to retry after unsuccessful run
62 RetryInterval = 60 # One minute
63 # Default interval for sending list of UUIDs
64 DefaultInterval = 3600 # Once per hour
...
529 if virtWho.send():
530 # Check if connection is established each 'RetryInterval' seconds
531 slept = 0
532 while slept < options.interval:
533 # Sleep 'RetryInterval' or the rest of options.interval
534 t = min(RetryInterval, options.interval - slept)
535 # But sleep at least one second
536 t = max(t, 1)
537 time.sleep(t)
538 slept += t
539
540 # Reload configuration if queued
541 if virtWho.doReload:
542 virtWho.reloadConfig()
543 break
544
545 # Check the connection
546 if not virtWho.ping():
547 # End the cycle
548 break
549 else:
550 # If last send fails, new try will be sooner
551 time.sleep(RetryInterval)
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments