Skip to content

Add offloading options to vmnet-run - #199

Merged
nirs merged 1 commit into
mainfrom
runner-offloading
Apr 1, 2026
Merged

Add offloading options to vmnet-run#199
nirs merged 1 commit into
mainfrom
runner-offloading

Conversation

@nirs

@nirs nirs commented Apr 1, 2026

Copy link
Copy Markdown
Owner

Add --enable-tso and --enable-checksum-offload options to vmnet-run, passed through to vmnet-helper. These options were previously only available when running vmnet-helper directly.

Since macOS 26.2 offloading works well and can significantly improve network performance. For example, with krunkit on M2 Max, host network throughput is 3-5x faster with offloading (~30 Gbits/s tx, ~47 Gbits/s rx vs ~7-10 Gbits/s without offloading).

Note that offloading does not work for all use cases. For example, accessing the VM from pod network does not work with offloading enabled (see #179).

Example run:

% ./example server --driver krunkit --cpus 4 --connection=runner --enable-offloading
[   0.052] INFO Creating cloud-init iso '/Users/nir/.vmnet-helper/vms/server/cidata.iso'
[   0.059] INFO Starting 'krunkit' virtual machine 'server' with mac address '76:d4:d3:83:fc:14'
[   6.079] INFO Virtual machine IP address: 192.168.105.2

% iperf3 -c server-vmnet-helper.local
...
[ ID] Interval           Transfer     Bitrate
[  7]   0.00-10.01  sec  43.2 GBytes  37.1 Gbits/sec                  sender
[  7]   0.00-10.01  sec  43.2 GBytes  37.1 Gbits/sec                  receiver

% iperf3 -c server-vmnet-helper.local -R
...
[ ID] Interval           Transfer     Bitrate         Retr
[  7]   0.00-10.00  sec  52.7 GBytes  45.3 Gbits/sec    0            sender
[  7]   0.00-10.00  sec  52.7 GBytes  45.3 Gbits/sec                  receiver

Fixes #177

Add --enable-tso and --enable-checksum-offload options to vmnet-run,
passed through to vmnet-helper. These options were previously only
available when running vmnet-helper directly.

Since macOS 26.2 offloading works well and can significantly improve
network performance. For example, with krunkit on M2 Max, host network
throughput is 3-5x faster with offloading (~30 Gbits/s tx, ~47 Gbits/s
rx vs ~7-10 Gbits/s without offloading).

Note that offloading does not work for all use cases. For example,
accessing the VM from pod network does not work with offloading
enabled (see #179).

Example run:

    % ./example server --driver krunkit --cpus 4 --connection=runner --enable-offloading
    [   0.052] INFO Creating cloud-init iso '/Users/nir/.vmnet-helper/vms/server/cidata.iso'
    [   0.059] INFO Starting 'krunkit' virtual machine 'server' with mac address '76:d4:d3:83:fc:14'
    [   6.079] INFO Virtual machine IP address: 192.168.105.2

    % iperf3 -c server-vmnet-helper.local
    ...
    [ ID] Interval           Transfer     Bitrate
    [  7]   0.00-10.01  sec  43.2 GBytes  37.1 Gbits/sec                  sender
    [  7]   0.00-10.01  sec  43.2 GBytes  37.1 Gbits/sec                  receiver

    % iperf3 -c server-vmnet-helper.local -R
    ...
    [ ID] Interval           Transfer     Bitrate         Retr
    [  7]   0.00-10.00  sec  52.7 GBytes  45.3 Gbits/sec    0            sender
    [  7]   0.00-10.00  sec  52.7 GBytes  45.3 Gbits/sec                  receiver

Fixes #177
@nirs
nirs force-pushed the runner-offloading branch from d1f8baf to a318b5f Compare April 1, 2026 20:03
@nirs
nirs merged commit d4ac16a into main Apr 1, 2026
12 checks passed
@nirs
nirs deleted the runner-offloading branch April 1, 2026 20:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add missing offloading options to client

1 participant