AFAIC - If you insist/depend on LXD - you need to go all-in and use raw.qemu to add commandline parameters ignoring LXDs intentional opinionated use:
$ lxc launch ubuntu-minimal-daily:j j-vm --ephemeral --vm -c raw.qemu="-smp cpus=1,maxcpus=1" Creating j-vm Starting j-vm $ ps axlf | grep qemu | grep j-vm | grep smp 7 999 2043048 1 20 0 1777460 323388 - Sl ? 0:07 /snap/lxd/24918/bin/qemu-system-x86_64 -S -name j-vm -uuid 9346be46-67fa-4931-ba2d-529cbc268190 -daemonize -cpu host,hv_passthrough -nographic -serial chardev:console -nodefaults -no-user-config -sandbox on,obsolete=deny,elevateprivileges=allow,spawn=allow,resourcecontrol=deny -readconfig /var/snap/lxd/common/lxd/logs/j-vm/qemu.conf -spice unix=on,disable-ticketing=on,addr=/var/snap/lxd/common/lxd/logs/j-vm/qemu.spice -pidfile /var/snap/lxd/common/lxd/logs/j-vm/qemu.pid -D /var/snap/lxd/common/lxd/logs/j-vm/qemu.log -smbios type=2,manufacturer=Canonical Ltd.,product=LXD -runas lxd -smp cpus=1,maxcpus=1
P.S. if only cpu is set maxcpu is the same and if nowing else is there cpu is implied. So I know that raw.qemu="-smp 1" does the same, but I wanted to be explicit while debugging here.
AFAIC - If you insist/depend on LXD - you need to go all-in and use raw.qemu to add commandline parameters ignoring LXDs intentional opinionated use:
$ lxc launch ubuntu- minimal- daily:j j-vm --ephemeral --vm -c raw.qemu="-smp cpus=1,maxcpus=1" 24918/bin/ qemu-system- x86_64 -S -name j-vm -uuid 9346be46- 67fa-4931- ba2d-529cbc2681 90 -daemonize -cpu host,hv_passthrough -nographic -serial chardev:console -nodefaults -no-user-config -sandbox on,obsolete= deny,elevatepri vileges= allow,spawn= allow,resourcec ontrol= deny -readconfig /var/snap/ lxd/common/ lxd/logs/ j-vm/qemu. conf -spice unix=on, disable- ticketing= on,addr= /var/snap/ lxd/common/ lxd/logs/ j-vm/qemu. spice -pidfile /var/snap/ lxd/common/ lxd/logs/ j-vm/qemu. pid -D /var/snap/ lxd/common/ lxd/logs/ j-vm/qemu. log -smbios type=2, manufacturer= Canonical Ltd.,product=LXD -runas lxd -smp cpus=1,maxcpus=1
Creating j-vm
Starting j-vm
$ ps axlf | grep qemu | grep j-vm | grep smp
7 999 2043048 1 20 0 1777460 323388 - Sl ? 0:07 /snap/lxd/
P.S. if only cpu is set maxcpu is the same and if nowing else is there cpu is implied. So I know that raw.qemu="-smp 1" does the same, but I wanted to be explicit while debugging here.