You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同配置AMD机器运行相同可执行文件user时间不一致原因咨询

同配置AMD机器运行相同可执行文件user态时间稳定差异问题

问题概述

在两台标称硬件配置完全一致的AMD机器上运行测试代码时,两台机器统计的程序user态运行时间存在稳定差异,相关信息如下:

基础环境一致性校验

两台机器均使用gcc 9编译同一份源码,编译生成的可执行文件经objdump反汇编结果完全一致。

测试用源码

#include <time.h>
int main()
{
    double time_spent = 0.0;
    clock_t begin = clock();
    int a = 0;
    for(int j = 0; j < 1000; j++)
    {
        for(int i = 0; i < 20000000; i++)
        {
            if(i%1000000 == 0)
                a = i;
        }
    }
    clock_t end = clock();
    time_spent += (double)(end - begin) / CLOCKS_PER_SEC;

    printf("The elapsed time is %f seconds\n", time_spent);
    return 0;
}

运行结果差异

  • 机器1:程序自身输出elapsed time为21.140000秒,time命令统计real 21.14、user 21.14、sys 0.00,内存占用520
  • 机器2:程序自身输出elapsed time为24.580000秒,time命令统计real 24.59、user 24.58、sys 0.00,内存占用524

硬件配置对比

两台机器均为x86_64架构,支持32/64位运算、小端序,搭载2颗AMD EPYC 7542 32-Core Processor,共128个逻辑CPU(每核2线程、每插槽32核),2个NUMA节点,支持AMD-V虚拟化,各级缓存(L1d 32K、L1i 32K、L2 512K、L3 16384K)、NUMA拓扑、CPU步进完全一致,仅检测到运行时CPU瞬时频率、BogoMIPS存在极微小数值差异。

已完成的排查操作

  • 使用taskset将应用绑定到指定CPU核心运行
  • 使用nice、renice调整进程运行优先级
  • 将可执行文件放到本地/tmp目录运行,排除网络存储延迟影响
  • 确认程序运行时两台机器均无其他额外负载
  • 尝试使用-O2、-O3等不同编译优化等级编译程序
  • 使用sudo权限运行程序

以上所有排查场景下,两台机器的执行时间差均稳定存在。

待解决问题

相同可执行文件在同配置AMD机器上运行时,user态运行时间存在稳定差异的原因是什么?


内容的提问来源于stack exchange,提问作者Animesh Kumar Sinha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:25:03