Skip to content

Commit b6e5513

Browse files
committed
Add virtio balloon support to the qemu driver
Signed-off-by: Anders F Björklund <anders.f.bjorklund@gmail.com>
1 parent 1012b74 commit b6e5513

File tree

3 files changed

+20
-10
lines changed

3 files changed

+20
-10
lines changed

pkg/driver/qemu/errors.go

Lines changed: 0 additions & 8 deletions
This file was deleted.

pkg/driver/qemu/qemu.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -835,6 +835,8 @@ func Cmdline(ctx context.Context, cfg Config) (exe string, args []string, err er
835835
// virtio-rng-pci accelerates starting up the OS, according to https://wiki.gentoo.org/wiki/QEMU/Options
836836
args = append(args, "-device", "virtio-rng-pci")
837837

838+
args = append(args, "-device", "virtio-balloon")
839+
838840
// Input
839841
input := "mouse"
840842

pkg/driver/qemu/qemu_driver.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"github.com/coreos/go-semver/semver"
2626
"github.com/digitalocean/go-qemu/qmp"
2727
"github.com/digitalocean/go-qemu/qmp/raw"
28+
"github.com/docker/go-units"
2829
"github.com/sirupsen/logrus"
2930

3031
"github.com/lima-vm/lima/v2/pkg/driver"
@@ -721,6 +722,21 @@ func (l *LimaQemuDriver) ForwardGuestAgent() bool {
721722
return l.vSockPort == 0 && l.virtioPort == ""
722723
}
723724

724-
func (l *LimaQemuDriver) SetTargetMemory(_ int64) error {
725-
return errUnimplemented
725+
func (l *LimaQemuDriver) SetTargetMemory(memory int64) error {
726+
qmpSockPath := filepath.Join(l.Instance.Dir, filenames.QMPSock)
727+
qmpClient, err := qmp.NewSocketMonitor("unix", qmpSockPath, 5*time.Second)
728+
if err != nil {
729+
return err
730+
}
731+
if err := qmpClient.Connect(); err != nil {
732+
return err
733+
}
734+
defer func() { _ = qmpClient.Disconnect() }()
735+
rawClient := raw.NewMonitor(qmpClient)
736+
logrus.Infof("Balloon target size: %s", units.BytesSize(float64(memory)))
737+
err = rawClient.Balloon(memory)
738+
if err != nil {
739+
return err
740+
}
741+
return nil
726742
}

0 commit comments

Comments
 (0)