@@ -133,6 +133,7 @@ menu "Debugging, profiling and benchmark"
source "package/oprofile/Config.in"
source "package/pax-utils/Config.in"
source "package/pcm-tools/Config.in"
+ source "package/perftest/Config.in"
source "package/piglit/Config.in"
source "package/ply/Config.in"
source "package/poke/Config.in"
new file mode 100644
@@ -0,0 +1,41 @@
+config BR2_PACKAGE_PERFTEST_ARCH_SUPPORTS
+ bool
+ # Accurate cycle measurement in perftest is implemented for a
+ # limited set of architectures, see:
+ # https://github.com/linux-rdma/perftest/blob/v4.5-0.18/src/get_clock.h
+ # Note: the package has also a fallback to use "asm/timex.h"
+ # from the Kernel, in
+ # "$(LINUX_DIR)/arch/$(KERNEL_ARCH)/include". It is not
+ # reflected here as this path is not well tested.
+ default y if BR2_i386 || BR2_x86_64
+ default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 && !BR2_ARM_CPU_ARMV6
+ default y if BR2_aarch64
+ default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
+ default y if BR2_s390x
+ default y if BR2_sparc || BR2_sparc64
+ default y if BR2_riscv
+
+config BR2_PACKAGE_PERFTEST
+ bool "perftest"
+ depends on BR2_PACKAGE_PERFTEST_ARCH_SUPPORTS
+ depends on !BR2_STATIC_LIBS # rdma-core
+ depends on BR2_TOOLCHAIN_HAS_SYNC_4 # rdma-core
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ # musl does not define sysconf(_SC_LEVEL1_DCACHE_LINESIZE)
+ depends on !BR2_TOOLCHAIN_USES_MUSL
+ depends on BR2_USE_MMU # rdma-core
+ select BR2_PACKAGE_PCIUTILS
+ select BR2_PACKAGE_RDMA_CORE # libibverbs, librdmacm, libibumad
+ help
+ Open Fabrics Performance Tests.
+
+ This is a collection of tests written over uverbs intended
+ for use as a performance micro-benchmark. The tests may be
+ used for HW or SW tuning as well as for functional testing.
+
+ https://github.com/linux-rdma/perftest
+
+comment "perftest needs a toolchain w/ threads, dynamic library"
+ depends on BR2_USE_MMU
+ depends on BR2_TOOLCHAIN_HAS_SYNC_4
+ depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
new file mode 100644
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 a8ef5483085c2b3ccb92739bc70c4e0ed98eaec0ce80d34b54ba208a16e03fc4 perftest-4.5-0.18.tar.gz
+sha256 763adb7d5094f2127b026adea8701f042d28d4b1f6fb8b6e828989227a9cf7f5 COPYING
new file mode 100644
@@ -0,0 +1,15 @@
+################################################################################
+#
+# perftest
+#
+################################################################################
+
+PERFTEST_VERSION = 4.5-0.18
+PERFTEST_SITE = $(call github,linux-rdma,perftest,v$(PERFTEST_VERSION))
+PERFTEST_LICENSE = GPL-2.0 or BSD-2-Clause
+PERFTEST_LICENSE_FILES = COPYING
+PERFTEST_DEPENDENCIES = pciutils rdma-core
+# Fetched from Github, with no configure script
+PERFTEST_AUTORECONF = YES
+
+$(eval $(autotools-package))
new file mode 100644
@@ -0,0 +1,48 @@
+import os
+
+import infra.basetest
+
+
+class TestPerftest(infra.basetest.BRTest):
+
+ config = \
+ """
+ BR2_aarch64=y
+ BR2_TOOLCHAIN_EXTERNAL=y
+ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
+ BR2_LINUX_KERNEL=y
+ BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+ BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.80"
+ BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+ BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"
+ BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}"
+ BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
+ BR2_TARGET_ROOTFS_CPIO=y
+ BR2_TARGET_ROOTFS_CPIO_GZIP=y
+ # BR2_TARGET_ROOTFS_TAR is not set
+ BR2_PACKAGE_IPROUTE2=y
+ BR2_PACKAGE_LIBMNL=y
+ BR2_PACKAGE_RDMA_CORE=y
+ BR2_PACKAGE_PERFTEST=y
+ """.format(
+ infra.filepath("tests/package/test_rdma_core/linux-rdma.fragment")
+ )
+
+ def test_run(self):
+ img = os.path.join(self.builddir, "images", "rootfs.cpio.gz")
+ kern = os.path.join(self.builddir, "images", "Image")
+ self.emulator.boot(arch="aarch64",
+ kernel=kern,
+ kernel_cmdline=["console=ttyAMA0"],
+ options=["-M", "virt", "-cpu", "cortex-a57", "-m", "512M", "-initrd", img])
+ self.emulator.login()
+
+ # Add the rxe0 interface
+ self.assertRunOk("ip link set dev eth0 up")
+ self.assertRunOk("rdma link add rxe0 type rxe netdev eth0")
+
+ # start a server
+ self.assertRunOk("ib_read_bw > /dev/null 2>&1 &")
+
+ # start a client
+ self.assertRunOk("sleep 1 && ib_read_bw 127.0.0.1")
Open Fabrics Performance Tests. This is a collection of tests written over uverbs intended for use as a performance micro-benchmark. The tests may be used for HW or SW tuning as well as for functional testing. https://github.com/linux-rdma/perftest Signed-off-by: Julien Olivain <ju.o@free.fr> --- Tested on branch next at commit c45b2f2 with commands: make check-package ... 0 warnings generated python3 -m flake8 support/testing/tests/package/test_perftest.py [no-output] support/testing/run-tests \ -d dl -o output_folder \ tests.package.test_perftest.TestPerftest ... OK ./utils/test-pkg -a -p perftest arm-aarch64 [ 1/44]: OK bootlin-aarch64-glibc [ 2/44]: OK bootlin-arcle-hs38-uclibc [ 3/44]: SKIPPED bootlin-armv5-uclibc [ 4/44]: SKIPPED bootlin-armv7-glibc [ 5/44]: OK bootlin-armv7m-uclibc [ 6/44]: SKIPPED bootlin-armv7-musl [ 7/44]: SKIPPED bootlin-m68k-5208-uclibc [ 8/44]: SKIPPED bootlin-m68k-68040-uclibc [ 9/44]: SKIPPED bootlin-microblazeel-uclibc [10/44]: SKIPPED bootlin-mipsel32r6-glibc [11/44]: SKIPPED bootlin-mipsel-uclibc [12/44]: SKIPPED bootlin-nios2-glibc [13/44]: SKIPPED bootlin-openrisc-uclibc [14/44]: SKIPPED bootlin-powerpc64le-power8-glibc [15/44]: OK bootlin-powerpc-e500mc-uclibc [16/44]: OK bootlin-riscv32-glibc [17/44]: OK bootlin-riscv64-glibc [18/44]: OK bootlin-riscv64-musl [19/44]: SKIPPED bootlin-sh4-uclibc [20/44]: SKIPPED bootlin-sparc64-glibc [21/44]: OK bootlin-sparc-uclibc [22/44]: SKIPPED bootlin-x86-64-glibc [23/44]: OK bootlin-x86-64-musl [24/44]: SKIPPED bootlin-x86-64-uclibc [25/44]: OK bootlin-xtensa-uclibc [26/44]: SKIPPED br-arm-basic [27/44]: SKIPPED br-arm-full-nothread [28/44]: SKIPPED br-arm-full-static [29/44]: SKIPPED br-i386-pentium4-full [30/44]: OK br-i386-pentium-mmx-musl [31/44]: SKIPPED br-mips64-n64-full [32/44]: SKIPPED br-mips64r6-el-hf-glibc [33/44]: SKIPPED br-powerpc-603e-basic-cpp [34/44]: OK br-powerpc64-power7-glibc [35/44]: OK linaro-aarch64-be [36/44]: SKIPPED linaro-aarch64 [37/44]: OK linaro-arm [38/44]: OK sourcery-arm-armv4t [39/44]: SKIPPED sourcery-arm [40/44]: SKIPPED sourcery-arm-thumb2 [41/44]: OK sourcery-mips64 [42/44]: SKIPPED sourcery-mips [43/44]: SKIPPED sourcery-nios2 [44/44]: SKIPPED 44 builds, 28 skipped, 0 build failed, 0 legal-info failed, 0 show-info failed --- package/Config.in | 1 + package/perftest/Config.in | 41 ++++++++++++++++ package/perftest/perftest.hash | 3 ++ package/perftest/perftest.mk | 15 ++++++ .../testing/tests/package/test_perftest.py | 48 +++++++++++++++++++ 5 files changed, 108 insertions(+) create mode 100644 package/perftest/Config.in create mode 100644 package/perftest/perftest.hash create mode 100644 package/perftest/perftest.mk create mode 100644 support/testing/tests/package/test_perftest.py