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
- 在本例中,测量的延迟超出了最大允许的值。