18.4. 运行延迟测试
运行集群延迟测试,以验证 Cloud-native Network Function (CNF) 工作负载的节点调整。
始终使用 DISCOVERY_MODE=true
设置运行延迟测试。如果没有,测试套件将对正在运行的集群配置进行更改。
当以非 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-rhel8:v4.14 /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-rhel8:v4.14 /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 秒)。
18.4.1. 运行 hwlatdetect 复制链接链接已复制到粘贴板!
hwlatdetect
工具位于 rt-kernel
软件包中,带有常规订阅 Red Hat Enterprise Linux (RHEL) 9.x。
始终使用 DISCOVERY_MODE=true
设置运行延迟测试。如果没有,测试套件将对正在运行的集群配置进行更改。
当以非 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_RUN=true -e DISCOVERY_MODE=true -e FEATURES=performance -e ROLE_WORKER_CNF=worker-cnf \ -e LATENCY_TEST_RUNTIME=600 -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel8:v4.14 \ /usr/bin/test-run.sh -ginkgo.v -ginkgo.focus="hwlatdetect" --ginkgo.timeout="24h"
$ podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e LATENCY_TEST_RUN=true -e DISCOVERY_MODE=true -e FEATURES=performance -e ROLE_WORKER_CNF=worker-cnf \ -e LATENCY_TEST_RUNTIME=600 -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel8:v4.14 \ /usr/bin/test-run.sh -ginkgo.v -ginkgo.focus="hwlatdetect" --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
报告的延迟满足所需的阈值。修复硬件带来的延迟可能需要您联系系统厂商支持。
并非所有延迟高峰都与硬件相关。确保调整主机固件以满足您的工作负载要求。如需更多信息,请参阅为系统调整设置固件参数。
18.4.2. 运行 cyclictest 复制链接链接已复制到粘贴板!
cyclictest
工具测量指定 CPU 上的实时内核调度程序延迟。
始终使用 DISCOVERY_MODE=true
设置运行延迟测试。如果没有,测试套件将对正在运行的集群配置进行更改。
当以非 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_RUN=true -e DISCOVERY_MODE=true -e FEATURES=performance -e ROLE_WORKER_CNF=worker-cnf \ -e LATENCY_TEST_CPUS=10 -e LATENCY_TEST_RUNTIME=600 -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel8:v4.14 \ /usr/bin/test-run.sh -ginkgo.v -ginkgo.focus="cyclictest" --ginkgo.timeout="24h"
$ podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e LATENCY_TEST_RUN=true -e DISCOVERY_MODE=true -e FEATURES=performance -e ROLE_WORKER_CNF=worker-cnf \ -e LATENCY_TEST_CPUS=10 -e LATENCY_TEST_RUNTIME=600 -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel8:v4.14 \ /usr/bin/test-run.sh -ginkgo.v -ginkgo.focus="cyclictest" --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 工作负载不能接受。
良好结果的示例
错误结果的示例
18.4.3. 运行 oslat 复制链接链接已复制到粘贴板!
oslat
测试模拟 CPU 密集型 DPDK 应用程序,并测量所有中断和中断来测试集群处理 CPU 大量数据处理的方式。
始终使用 DISCOVERY_MODE=true
设置运行延迟测试。如果没有,测试套件将对正在运行的集群配置进行更改。
当以非 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_RUN=true -e DISCOVERY_MODE=true -e FEATURES=performance -e ROLE_WORKER_CNF=worker-cnf \ -e LATENCY_TEST_CPUS=10 -e LATENCY_TEST_RUNTIME=600 -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel8:v4.14 \ /usr/bin/test-run.sh -ginkgo.v -ginkgo.focus="oslat" --ginkgo.timeout="24h"
$ podman run -v $(pwd)/:/kubeconfig:Z -e KUBECONFIG=/kubeconfig/kubeconfig \ -e LATENCY_TEST_RUN=true -e DISCOVERY_MODE=true -e FEATURES=performance -e ROLE_WORKER_CNF=worker-cnf \ -e LATENCY_TEST_CPUS=10 -e LATENCY_TEST_RUNTIME=600 -e MAXIMUM_LATENCY=20 \ registry.redhat.io/openshift4/cnf-tests-rhel8:v4.14 \ /usr/bin/test-run.sh -ginkgo.v -ginkgo.focus="oslat" --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
- 在本例中,测量的延迟超出了最大允许的值。