管理Linux上的Wi-Fi延迟和动态功耗节省

大多数时候,我们希望我们的电池供电设备消耗尽可能少的功率越好。大家做更多的事,当我们不必须不断追下去充电器。为此,Linux内核会尝试断电Wi-Fi模块的短间隔时,内核不认为它被使用。这可能会导致比在某些情况下,所需的网络延迟高。

您可能已经注意到了网络流量,以你的笔记本电脑运行Linux有时延迟到300毫秒。通常情况下,你不会注意到这一点。但是,当你正在运行的任何种类的依赖越来越来通过Wi-Fi数据的一阵阵的快速反应服务器或任务它可能会损害性能。

一些示例任务在网络延时问题当使用包括网络游戏,远程键盘和鼠标控制(例如,KDE连接或协同作用),以及分布式软件的编译。(你自己的使用情况可能比这一点更有趣。)

动态省电及其对网络延迟的影响

Linux内核认为我们大多数人认为良好的电池寿命是值得争取。为了实现这一目标,不同的节能技术,无数被内核使用。这些技术之一是动态节电DPS在英特尔和高通Atheros最新的Wi-Fi模块模型中发现)功能。

什么时候DPS启用,Linux内核将把Wi-Fi模块睡觉时节电还没有看到在过去几毫秒的任何网络流量。基于接入点,内核会动态地调整这些小睡的持续时间(美联社)功能和网络使用情况。当有网络流量的不断流动,你的设备将发送并没有把Wi-Fi模块睡觉收到全速数据。然而,当有很少或没有网络流量(在微秒级),并假设你的Wi-Fi美联社支持此;您的美联社将缓冲网络流量向您的设备,直到将来当您的设备和您的时间美联社同意对发射所缓冲数据。

这引入了您的设备如何响应传入的连接的延迟。作为回报,自己设备的网络通信是由更加节能的。

如果您使用其它设备的网络的互联以太网ping你的Wi-Fi连接的设备上,你可以看到在约280毫秒与乒乓球响应DPS启用和小于1毫秒,禁用它。随着不断的网络流量,这是因为睡眠间隔动态调整基于使用情况的答复应该回来得更快。DPS通常是一个绝对地需要的特点和你不应该把它关掉!

什么DPS不知道是否是您的计算机上的服务器或程序在不久的将来期待间歇传入连接任何东西。如果是这样的话,它可能是不希望在潜伏期为代价来节省电力。试想一下,你打开需要较低的网络延迟到正常运行的程序。你知道这一点,该程序的开发人员知道这一点了,但是Linux内核并不了解这种期望什么。

信令更低的延迟要求内核

通过在网络上发送的键盘和鼠标输入运行像协同或工作KDE连接程序时,用户期望快速的性能。为了避免不必要的落后移动鼠标光标时从一台计算机到另一或前键按压使得文本出现在屏幕上,该程序应使内核感知的降低的等待时间要求,以便等待时间通过引入DPS可以减少。

程序可以事先告知其需要降低网络延迟直接内核驱动程序在PM-quos/网络延迟接口。当一个程序使用这个接口,内核驱动程序可以调整长期的网络设备是如何进入睡眠状态和断电。

PM-quos/网络时延接口仍然存在于Linux内核,但在所有Wi-Fi驱动程序移除支持因为很少的程序已经实现了它。我认为这是一个错误的驱动程序删除该接口实现,因为我最近碰到好几个不同的使用情况下,这种控制将是完美的。

例如。协同和KDE连接可能已通知内核把Wi-Fi模块睡觉前要等待相当长的时间。之前的Wi-Fi模块,只要这些类型的节目预计用户活动置于睡眠对人类可以给予可达5秒,而不是几微秒。

又如我跑进最近有运行网络分布式编译做。通常,编译源代码到内置软件时,编译独立发生在许多小文件/工作。随着分布式编译,所有这些小的工作在两个或多个计算机之间分布在网络中,加快构建过程。这假定I / O和传输这些工作来回在网络上的网络延迟时间比它会采取编译它在本地系统上的时间少。

我发现的是,接收一组作业,并发送回结果之间的延迟只是足够长的时间DPS把Wi-Fi模块进入高省电模式。随着Wi-Fi连接起每个作业之前一直推出滞后,整个构建过程中显著放缓。这又导致了Wi-Fi的连接建设者的作业调度学会了不期望这些构建的系统迅速返回任何结果没有被分配更多的就业机会。

这最后一种情况是最糟糕的情况。这类似于一个查验的Wi-Fi连接的装置每6秒(平-i6 wifi.example.com)时,有没有其他的网络流量。这将使该设备有足够的时间进入高功率节省模式,会导致高延迟。

由于程序无法请求内核调下来的电力节省了,用户只能左转DPS完全关闭。如果你需要减少你的Wi-Fi延迟的时候,你已经两个选项:

暂时禁用省电的llwr

我喜欢的想法PM-quos/网络时延接口,所以我做了一个小程序调用llwr(低延迟,Wi-Fi的要求),试图复制这一接口最好就可以了。这是一个相当原始的工具,完全禁用DPS,但直到节目你开始退出。你可以把它作为不错-16命令但对于Wi-Fi网络延迟。

例如,发挥开源快节奏的第一人称射击游戏Warsow与通过Wi-Fi减少网络延迟你启动它下面的命令:yabo亚博体育下载

llwr执行sudo苏$ USERNAME -c warsow

这将禁用DPS直到你的游戏完成,退出。那时候,DPS将被重新启用,您的笔记本电脑可以重新开始,以节约能源。

你可以得到最新发布llwrGitHub上在这里你还可以找到来源和问题跟踪。

永久禁用省电使用NetworkManager

如果你已经决定,你愿意生活没有动态节电试图挽救你的笔记本电脑的电池续航时间,那么你就可以完全禁用动态节电模。有很多内核的,Linux发行版,以及软件的默认设置中涉及的采摘默认DPS政策为您的设备。

对用户最友好的Linux发行网络由NetworkManager的(原文如此)管理。如果你不知道你的Linux系统是否使用NetworkManager的,那么它很可能是使用NetworkManager。NetworkManager的通常是在网络堆栈的顶部,所以这是一个好地方,禁用动态节电,并确保它保持关断。

  1. 创建和打开文件/etc/NetworkManager/conf.d/wifi-powersave.conf编辑。
  2. 把下面的文件并保yabo亚博体育下载存:
    [连接] wifi.powersave = 2
  3. 你会暂时失去这一步之后网络。重新启动网络管理器使用下面的命令。
    服务网络管理器重新启动

你现在应该有残疾的动态节电只要NetworkManager的停留在掌管你的网络配置。您可以通过运行命令“验证更改IW dev的YOUR-接口,可以获取power_save”现在又在重新启动后。

本文仅适用于驱动程序支持动态节电包括最近从英特尔和高通Atheros的Wi-Fi模块。你能确定你的模块是否通过运行命令支持“IW开发”找到你的设备的接口名,其次是“yabo亚博体育下载IW dev的YOUR-接口集power_save上”以root权限。如果你没有得到的回报的错误,那么你的设备支持。你可以换出“”为“得到”来获得当前状态,但你的Wi-Fi模块是否支持动态节能与否这不会告诉你。

需要注意的是脚本“IW dev的YOUR-接口集power_save关闭”关于启动/简历是不够的一切,从内核到网络管理器将重新启用DPS当您的网络条件和连接的变化,以及后您的设备暂停和恢复,并在系统启动过程的不同阶段。

总结:动态功耗节省通常是一件好事,但有时你可能要关闭它时网络延迟比电池续航时间更重要。