Skip to content

Commit 8f0c285

Browse files
committed
wip: run perf tests with swiotlb enabled
Signed-off-by: Patrick Roy <[email protected]>
1 parent c0117a0 commit 8f0c285

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

tests/framework/microvm.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -729,6 +729,7 @@ def basic_config(
729729
rootfs_io_engine=None,
730730
cpu_template: Optional[str] = None,
731731
enable_entropy_device=False,
732+
swiotlb_size: int = None,
732733
):
733734
"""Shortcut for quickly configuring a microVM.
734735
@@ -747,10 +748,15 @@ def basic_config(
747748
748749
Reference: file:../../src/vmm/src/vmm_config/boot_source.rs::DEFAULT_KERNEL_CMDLINE
749750
"""
751+
mem_config = {}
752+
if swiotlb_size is not None:
753+
mem_config["initial_swiotlb_size"] = swiotlb_size
754+
750755
self.api.machine_config.put(
751756
vcpu_count=vcpu_count,
752757
smt=smt,
753758
mem_size_mib=mem_size_mib,
759+
mem_config=mem_config,
754760
track_dirty_pages=track_dirty_pages,
755761
huge_pages=huge_pages,
756762
)

tests/integration_tests/performance/test_block_ab.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import concurrent
66
import os
7+
import platform
78
import shutil
89
from pathlib import Path
910

@@ -140,22 +141,33 @@ def process_fio_logs(vm, fio_mode, logs_dir, metrics):
140141
@pytest.mark.parametrize("vcpus", [1, 2], ids=["1vcpu", "2vcpu"])
141142
@pytest.mark.parametrize("fio_mode", ["randread", "randwrite"])
142143
@pytest.mark.parametrize("fio_block_size", [4096], ids=["bs4096"])
144+
@pytest.mark.parametrize("swiotlb_size", [0, 64])
143145
def test_block_performance(
144146
microvm_factory,
145147
guest_kernel_acpi,
146148
rootfs,
147149
vcpus,
148150
fio_mode,
149151
fio_block_size,
152+
swiotlb_size,
150153
io_engine,
151154
metrics,
152155
):
153156
"""
154157
Execute block device emulation benchmarking scenarios.
155158
"""
159+
if (
160+
swiotlb_size
161+
and "6.1" not in guest_kernel_acpi
162+
or platform.machine() != "aarch64"
163+
):
164+
pytest.skip("swiotlb only supported on aarch64/6.1")
165+
156166
vm = microvm_factory.build(guest_kernel_acpi, rootfs, monitor_memory=False)
157167
vm.spawn(log_level="Info", emit_metrics=True)
158-
vm.basic_config(vcpu_count=vcpus, mem_size_mib=GUEST_MEM_MIB)
168+
vm.basic_config(
169+
vcpu_count=vcpus, mem_size_mib=GUEST_MEM_MIB, swiotlb_size=swiotlb_size
170+
)
159171
vm.add_net_iface()
160172
# Add a secondary block device for benchmark tests.
161173
fs = drive_tools.FilesystemFile(

0 commit comments

Comments
 (0)