17.3. 运行延迟测试
运行集群延迟测试,以验证 Cloud-native Network Function (CNF) 工作负载的节点调整。
当以非 root 用户或非特权用户执行 podman 命令时,挂载路径可能会失败,错误为 permission denied。根据您的本地操作系统和 SELinux 配置,您可能从主目录运行这些命令时也会遇到问题。要使 podman 命令正常工作,请从不属于 home/<username> 目录的文件夹运行命令,并将 :Z 附加到卷创建。例如, -v $(pwd)/:/kubeconfig:Z。这允许 podman 进行正确的 SELinux 重新标记。
此流程运行三个单独的测试 hwlatdetect、cyclictest 和 oslat。有关这些独立测试的详情,请查看它们的独立部分。
流程
在包含
kubeconfig文件的目录中打开 shell 提示符。您可以在当前目录中为测试镜像提供
kubeconfig文件,及其相关的$KUBECONFIG环境变量(通过卷挂载)。这允许运行的容器使用容器内的kubeconfig文件。注意在以下命令中,您的本地
kubeconfig挂载到 cnf-tests 容器中的 kubeconfig/kubeconfig,允许访问集群。要运行延迟测试,请运行以下命令,并根据情况替换变量值:
podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e LATENCY_TEST_RUNTIME=600\ -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel9:v4.17 /usr/bin/test-run.sh \ --ginkgo.v --ginkgo.timeout="24h"
$ podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e LATENCY_TEST_RUNTIME=600\ -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel9:v4.17 /usr/bin/test-run.sh \ --ginkgo.v --ginkgo.timeout="24h"Copy to Clipboard Copied! Toggle word wrap Toggle overflow LATENCY_TEST_RUNTIME 以秒为单位,本例中为 600 秒 (10 分钟)。当最观察到的延迟低于 MAXIMUM_LATENCY (20 μs) 时,测试会成功运行。
如果结果超过延迟阈值,测试会失败。
-
可选:使用
--ginkgo.dry-run标志,以 dry-run 模式运行延迟测试。这可用于检查测试会运行哪些命令。 -
可选:使用
--ginkgo.v标志来运行测试并增加输出详细程度。 可选: 使用
--ginkgo.timeout="24h"标志,以确保在延迟测试完成前 Ginkgo 2.0 测试套件不会超时。重要在测试更短的时间段内,可用于运行测试。但是,对于最终验证和有效结果,测试应至少运行 12 小时 (43200 秒)。
17.3.1. 运行 hwlatdetect 复制链接链接已复制到粘贴板!
hwlatdetect 工具位于 rt-kernel 软件包中,带有常规订阅 Red Hat Enterprise Linux (RHEL) 9.x。
当以非 root 用户或非特权用户执行 podman 命令时,挂载路径可能会失败,错误为 permission denied。根据您的本地操作系统和 SELinux 配置,您可能从主目录运行这些命令时也会遇到问题。要使 podman 命令正常工作,请从不属于 home/<username> 目录的文件夹运行命令,并将 :Z 附加到卷创建。例如, -v $(pwd)/:/kubeconfig:Z。这允许 podman 进行正确的 SELinux 重新标记。
先决条件
- 您已查看了运行延迟测试的先决条件。
流程
要运行
hwlatdetect测试,请运行以下命令,并根据情况替换变量值:podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e LATENCY_TEST_RUNTIME=600 -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel9:v4.17 \ /usr/bin/test-run.sh --ginkgo.focus="hwlatdetect" --ginkgo.v --ginkgo.timeout="24h"
$ podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e LATENCY_TEST_RUNTIME=600 -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel9:v4.17 \ /usr/bin/test-run.sh --ginkgo.focus="hwlatdetect" --ginkgo.v --ginkgo.timeout="24h"Copy to Clipboard Copied! Toggle word wrap Toggle overflow hwlatdetect测试运行了 10 分钟 (600 秒)。当最观察到的延迟低于MAXIMUM_LATENCY(20 FORWARD) 时,测试会成功运行。如果结果超过延迟阈值,测试会失败。
重要在测试更短的时间段内,可用于运行测试。但是,对于最终验证和有效结果,测试应至少运行 12 小时 (43200 秒)。
失败输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
hwlatdetect 测试结果示例
您可以捕获以下类型的结果:
- 在每次运行后收集的粗略结果,以便对整个测试过程中所做的任何更改产生影响的历史记录。
- 基本测试和配置设置的组合。
良好结果的示例
hwlatdetect 工具仅在示例超过指定阈值时提供输出。
错误结果的示例
hwlatdetect 的输出显示多个样本超过阈值。但是,相同的输出可能会根据以下因素显示不同的结果:
- 测试的持续时间
- CPU 内核数
- 主机固件设置
在继续执行下一个延迟测试前,请确保 hwlatdetect 报告的延迟满足所需的阈值。修复硬件带来的延迟可能需要您联系系统厂商支持。
并非所有延迟高峰都与硬件相关。确保调整主机固件以满足您的工作负载要求。如需更多信息,请参阅为系统调整设置固件参数。
17.3.2. 运行 cyclictest 复制链接链接已复制到粘贴板!
cyclictest 工具测量指定 CPU 上的实时内核调度程序延迟。
当以非 root 用户或非特权用户执行 podman 命令时,挂载路径可能会失败,错误为 permission denied。根据您的本地操作系统和 SELinux 配置,您可能从主目录运行这些命令时也会遇到问题。要使 podman 命令正常工作,请从不属于 home/<username> 目录的文件夹运行命令,并将 :Z 附加到卷创建。例如, -v $(pwd)/:/kubeconfig:Z。这允许 podman 进行正确的 SELinux 重新标记。
先决条件
- 您已查看了运行延迟测试的先决条件。
流程
要执行
cyclictest,请运行以下命令,并根据情况替换变量值:podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e LATENCY_TEST_CPUS=10 -e LATENCY_TEST_RUNTIME=600 -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel9:v4.17 \ /usr/bin/test-run.sh --ginkgo.focus="cyclictest" --ginkgo.v --ginkgo.timeout="24h"
$ podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e LATENCY_TEST_CPUS=10 -e LATENCY_TEST_RUNTIME=600 -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel9:v4.17 \ /usr/bin/test-run.sh --ginkgo.focus="cyclictest" --ginkgo.v --ginkgo.timeout="24h"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令运行
cyclictest工具 10 分钟(600 秒)。当观察到的延迟低于MAXIMUM_LATENCY时,测试会成功运行(在本例中,20 TOKENs)。对于电信 RAN 工作负载,对 20 个以上延迟的激增通常并不能接受。如果结果超过延迟阈值,测试会失败。
重要在测试更短的时间段内,可用于运行测试。但是,对于最终验证和有效结果,测试应至少运行 12 小时 (43200 秒)。
失败输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
cyclictest 结果示例
相同的输出可能会显示不同工作负载的结果。例如,spikes 最长为 18μs 对 4G DU 工作负载是可以接受的,但对于 5G DU 工作负载不能接受。
良好结果的示例
错误结果的示例
17.3.3. 运行 oslat 复制链接链接已复制到粘贴板!
oslat 测试模拟 CPU 密集型 DPDK 应用程序,并测量所有中断和中断来测试集群处理 CPU 大量数据处理的方式。
当以非 root 用户或非特权用户执行 podman 命令时,挂载路径可能会失败,错误为 permission denied。根据您的本地操作系统和 SELinux 配置,您可能从主目录运行这些命令时也会遇到问题。要使 podman 命令正常工作,请从不属于 home/<username> 目录的文件夹运行命令,并将 :Z 附加到卷创建。例如, -v $(pwd)/:/kubeconfig:Z。这允许 podman 进行正确的 SELinux 重新标记。
先决条件
- 您已查看了运行延迟测试的先决条件。
流程
要执行
oslat测试,请运行以下命令,根据需要替换变量值:podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e LATENCY_TEST_CPUS=10 -e LATENCY_TEST_RUNTIME=600 -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel9:v4.17 \ /usr/bin/test-run.sh --ginkgo.focus="oslat" --ginkgo.v --ginkgo.timeout="24h"
$ podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e LATENCY_TEST_CPUS=10 -e LATENCY_TEST_RUNTIME=600 -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel9:v4.17 \ /usr/bin/test-run.sh --ginkgo.focus="oslat" --ginkgo.v --ginkgo.timeout="24h"Copy to Clipboard Copied! Toggle word wrap Toggle overflow LATENCY_TEST_CPUS指定使用oslat命令测试的 CPU 数量。命令运行
oslat工具 10 分钟(600 秒)。当最观察到的延迟低于MAXIMUM_LATENCY(20 FORWARD) 时,测试会成功运行。如果结果超过延迟阈值,测试会失败。
重要在测试更短的时间段内,可用于运行测试。但是,对于最终验证和有效结果,测试应至少运行 12 小时 (43200 秒)。
失败输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在本例中,测量的延迟超出了最大允许的值。