63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package uvm
|
|
|
|
import (
|
|
"runtime"
|
|
)
|
|
|
|
// Options are the set of options passed to Create() to create a utility vm.
|
|
type Options struct {
|
|
ID string // Identifier for the uvm. Defaults to generated GUID.
|
|
Owner string // Specifies the owner. Defaults to executable name.
|
|
AdditionHCSDocumentJSON string // Optional additional JSON to merge into the HCS document prior
|
|
|
|
// MemorySizeInMB sets the UVM memory. If `0` will default to platform
|
|
// default.
|
|
MemorySizeInMB int32
|
|
|
|
// Memory for UVM. Defaults to true. For physical backed memory, set to
|
|
// false.
|
|
AllowOvercommit bool
|
|
|
|
// Memory for UVM. Defaults to false. For virtual memory with deferred
|
|
// commit, set to true.
|
|
EnableDeferredCommit bool
|
|
|
|
// ProcessorCount sets the number of vCPU's. If `0` will default to platform
|
|
// default.
|
|
ProcessorCount int32
|
|
}
|
|
|
|
// ID returns the ID of the VM's compute system.
|
|
func (uvm *UtilityVM) ID() string {
|
|
return uvm.hcsSystem.ID()
|
|
}
|
|
|
|
// OS returns the operating system of the utility VM.
|
|
func (uvm *UtilityVM) OS() string {
|
|
return uvm.operatingSystem
|
|
}
|
|
|
|
// Close terminates and releases resources associated with the utility VM.
|
|
func (uvm *UtilityVM) Close() error {
|
|
uvm.Terminate()
|
|
|
|
// outputListener will only be nil for a Create -> Stop without a Start. In
|
|
// this case we have no goroutine processing output so its safe to close the
|
|
// channel here.
|
|
if uvm.outputListener != nil {
|
|
close(uvm.outputProcessingDone)
|
|
uvm.outputListener.Close()
|
|
uvm.outputListener = nil
|
|
}
|
|
err := uvm.hcsSystem.Close()
|
|
uvm.hcsSystem = nil
|
|
return err
|
|
}
|
|
|
|
func defaultProcessorCount() int32 {
|
|
if runtime.NumCPU() == 1 {
|
|
return 1
|
|
}
|
|
return 2
|
|
}
|