Would like kmdb module for vmm
It would be nice if kmdb knew how to list virtual machines nicely, and provided an easy way to quickly find the data structure addresses for the virtual machine you're interested in.
Seasoned bhyve developers tend to just walk the global
vmm_list, I at least keep typing `::vmm` and expecting it to produce something useful.
Updated by Carlos Neira about 1 month ago
As part of the work required to add this new mdb dcmd, a new mdb walker was added to mdb API.
The reason behind this change is that the current local mdb walker has a fixed set of flags and this new dcmd
needed a way to signal if the current invocation needed to be PIPED_OUT.
To accomplish that, a new local walker was created mdb_fpwalk_dcmd that has the same functionality as mdb_pwalk_dcmd.
The difference is that this new walker has a flags argument, so a consumer could specify other required flags by their dcmds.
int mdb_fpwalk_dcmd(const char *wname, const char *dcname, it argc, const mdb_arg_t *argv, uintptr_t addr, uint_t flags );
> ::help vmm NAME vmm - print virtual machine information SYNOPSIS [ addr ] ::vmm [-n vmname] DESCRIPTION Prints summary information about vmm instances. The resulting output is a table of bhyve virtual machines on the system. The columns in the output are: SOFTC Soft state, pointer to vmm_softc_t VM state, pointer to 'struct vm' TOPO topology as sockets/cores/threads MiB allocated memory F Flags G - VMM is created in the global zone. T - VMM is using transient memory. R - VMM is using memory from reservoir. D - VMM is set to auto-destruct. NAME The virtual machine name. ZONE The zone_t pointer to zone where the vm is running. OPTIONS -n <name> Only show the virtual machine called <name> NOTES The MiB column sums up all memory segments and includes any memory allocated for the bootrom or framebuffer. Passing the output of this command into a pipeline results in the address of the vmm_softc_t in '.' ATTRIBUTES Target: kvm Module: vmm Interface Stability: Unstable >
- Single invocation :
> ::vmm SOFTC VM ZONE TOPO MiB F NAME fffffe0ac1542040 fffffe0ada88d000 fffffe0adadb8a80 4/1/1 1041 T test2
- PIPE_OUT :
> ::vmm | ::print vmm_softc_t vmm_name vmm_name = [ "test2" ]
> ::walk vmm | ::print vmm_softc_t vmm_kstat_vm vmm_kstat_vm = 0xfffffe0ac9f47660
- Running vms in the global zone
> ::vmm SOFTC VM ZONE TOPO MiB F NAME fffffe0aca3d5880 fffffe0abb53a000 fffffffffbd16980 4/1/1 1024 GT vm fffffe0aca7ed300 fffffe0abe92c000 fffffffffbd16980 4/1/1 1024 GT vm1 fffffe0ab5d44880 fffffe0ab6597000 fffffffffbd16980 4/1/1 1025 GT test2 fffffe0ac995cd40 fffffe0abaef3000 fffffffffbd16980 4/1/1 1040 GT vm2 > fffffffffbd16980::print zone_t zone_name zone_name = 0xfffffffffbb53c9b "global"
Updated by Electric Monk 24 days ago
- Status changed from In Progress to Closed
- % Done changed from 0 to 100
commit 65bed588e62c7f3a0da5d65fcc588b46b470f5a7 Author: Andy Fiddaman <firstname.lastname@example.org> Date: 2023-11-14T23:48:54.000Z 14525 Would like kmdb module for vmm Portions contributed by: Carlos Neira <email@example.com> Reviewed by: Jordan Hendricks <firstname.lastname@example.org> Reviewed by: Dan McDonald <email@example.com> Approved by: Robert Mustacchi <firstname.lastname@example.org>