Cores and memory

Up to 8 cores on host threads, and guest RAM from 128 MB past 16 GB, with the core module Warm64 picks for each.

Cores

wemu-system-aarch64 ... -smp 4

A machine has 1 to 8 cores. With more than one, each guest core runs on its own host thread, so a four-core guest keeps four host cores busy. Linux starts the extra cores through PSCI.

Note In a browser, more than one core needs shared memory, which browsers give only to cross-origin-isolated pages. Serve the page with Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp. See Embedding in a web page.

Extra cores make parallel work faster. They don't shorten a Linux boot, which runs mostly on one core.

Memory

wemu-system-aarch64 ... -m 2G

The default is QEMU's 128 MiB; most distributions want 512 MiB or more. Warm64 chooses its core module by size:

RAMCoreNotes
Up to 3 GiBwarm64The fastest.
Over 3 GiB, one corewarm64-memory6464-bit WebAssembly memory. About a third slower.
More than one core, any sizewarm64-threadsOne host thread per guest core.

Beyond 16 GB

One WebAssembly memory holds at most 16 GiB in V8. Past that, Warm64 puts the rest of the RAM in further memories, banks of up to 16 GiB each, and the guest still sees one contiguous RAM. A 20 GiB guest boots Alpine in Warm64's tests.

Warning Safari has neither 64-bit WebAssembly memory nor multiple memories. In Safari, keep guests at 3 GiB or less; larger ones need Chrome, Firefox or Node.

The CPU

Every core is a Cortex-A76 (r4p1) implementing the full A64 instruction set. -cpu max adds pointer authentication, MTE and SVE to what the guest is told; they cost a little speed, so they're off by default. See CPU.

Exception levels

Linux boots at EL2 with the Virtualization Host Extensions. -M virt,virtualization=off boots it at EL1, as QEMU does by default.

See also