한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

游戏卡顿白皮书 › L2 客户端操作系统与设备

网卡省电/驱动问题 NIC power saving, driver bugs

原因 ID co-driver · 主责 外部·外部 · 配合 研发团队·客户端开发

在含图示和实验的完整版中打开此卡片 →

有线网卡、Wi-Fi 芯片在数据包之间进入省电状态时,重新唤醒需要时间。

起因 网络设备的省电功能开着,或驱动太旧 → 结果 唤醒(wake-up)延迟,偶尔设备重启 → 画面表现 不规律的延迟,偶尔卡住几秒

症状
一卡一卡, 卡住
因素
抖动, 丢包
谁会遇到
只有我
何时出现
挂机一段时间后, 偶尔随机
负责方
主责 外部·外部 · 配合 研发团队·客户端开发
研发团队要做的事
Android 客户端在游戏中请求低延迟 Wi-Fi 模式(WIFI_MODE_FULL_LOW_LATENCY),关闭 Wi-Fi 省电。
外部要做的事
引导玩家更新网卡驱动,在设备管理器中关闭网络设备的省电功能;整个画面顿一下、声音滋滋作响时,引导玩家用 LatencyMon 找出导致问题的驱动。
监控图上
偶发随机尖峰 · DPC/ISR 时间、到路由器的 RTT
查看位置
用 Windows 性能记录器(WPR)录制,在 Windows 性能分析器(WPA)的 DPC/ISR 图中找出长时间运行的驱动(Module 列),并在设备管理器中检查网络适配器的电源管理(省电)设置
确认依据
顿一下的时刻,网络驱动的 DPC、ISR 持续几 ms,或关闭省电后不规律的延迟消失
排除依据
DPC 很短、关闭省电后也一样,看“Wi-Fi 干扰/信号弱”或“Wi-Fi 后台扫描”
确认手段
需在玩家侧环境确认
深入了解
驱动处理中断时长时间占用 CPU(Windows 中称为 DPC 延迟),这段时间游戏线程也用不了这个核心。此时 CPU 使用率不高,整个画面却会顿一下,声音也滋滋作响。用 LatencyMon 之类的工具可以找出是哪个驱动,常见原因是 Wi-Fi、有线网卡驱动。

出处

  1. Introduction to NDIS Selective Suspend Microsoft
    Windows 可以让空闲的网络适配器进入低功耗状态(选择性挂起)
  2. Guidelines for Writing DPC Routines Microsoft
    DPC 运行期间该核心上的所有线程都会停住,所以建议单次不超过 100 µs
  3. Wi-Fi low-latency mode Android (Google)
    Android 低延迟 Wi-Fi 模式下,框架会明确关闭 Wi-Fi 省电
  4. CPU Analysis Microsoft
    WPA 的 DPC/ISR 图:DPC、ISR 每段连续运行的时间,以及该函数所在的模块(Module)

相关原因

同一层:L2 客户端操作系统与设备

其他层中同样导致“一卡一卡”的原因

查看含图示和实验的原卡片