![使用协同作用时,有时会滞后](https://linux22.com/image/1258200/%E4%BD%BF%E7%94%A8%E5%8D%8F%E5%90%8C%E4%BD%9C%E7%94%A8%E6%97%B6%EF%BC%8C%E6%9C%89%E6%97%B6%E4%BC%9A%E6%BB%9E%E5%90%8E.png)
更新:他们修复了 Synergy 1.9.0 上的 macOS wifi 延迟问题!https://symless.com/forums/topic/2587-download-synergy-190-to-fix-the-wifi-macos-bug/
我使用synergy
。我的 Linux 桌面充当服务器,我的 Macbook 连接作为客户端。使用 synergy 时,它们都连接到 linksys WRT-45GL 路由器,都使用有线连接。
有时,当我第一次将鼠标移到我的 MacBook 上时,连接会延迟。例如,我会移动鼠标,但光标会在 2 或 3 秒内不动。或者我会输入一些内容,但一段时间内不会显示。这种情况偶尔会发生。通常只在切换到 Mac 后的前一分钟左右出现,但不一定。
我该如何修复此问题?
我尝试检查两台机器的 CPU 使用率,但没有看到与延迟相匹配的峰值。我猜瓶颈在于网络流量,但我不知道如何确认这一点或如何修复它。
答案1
你知道,如果只有两个设备连接,它就不可能是第 2 层(mac 表无法填满)。如果你有静态主机映射,它就不可能是第 3 层。剩下的就是带宽、冲突和软件。Wireshark 可以告诉你带宽,有时还可以指示冲突。我会在中间放一些便宜的硬件,它可以记录冲突,以便检查这一点。然后你就到了应用程序。
答案2
刚才我遇到了同样的问题,我尝试了所有其他修复方法(除了我的 Mac 的以太网)。
在主机 PC(Windows)上,转到任务管理器(Ctrl+Shift+Esc),然后单击顶部的详细信息选项卡,然后搜索synergy.exe
、,然后右键单击它们并在设置优先级子菜单下synergyd.exe
选择。synergys.exe
High
答案3
背景和解决方案概述
这篇文章有点长,但重点是通过详细说明部分进行教育。如果你已经受过教育,只需阅读本节以及可能的结论 ;-)
我从 20 世纪 90 年代开始在 Linux 和 Windows 上使用各种形式的 Synergy,这个问题经常出现。有两个常见原因,我在这里只讨论第一个。
这通常是操作系统级别的问题,即客户端的调度程序优先级,因此解决方案就是提高客户端的优先级。这将改善情况,但整体体验仍然将基于调度程序对更新屏幕的重要性的看法等。请参阅最后以了解更多信息。
有时还有另一个原因:服务器或客户端进程中的一个或两个都死机并重新启动,在这种情况下,您应该在 Synergy 服务器和客户端上启用调试级别日志记录,然后从那里开始。一旦您解决了那,实施上述。
详细说明
提高 Windows 客户端调度程序优先级
使用 Windows 7,我不知道新版本中的快捷方式。
打开任务管理器 (Ctrl-Alt-Esc) 并单击“进程”选项卡。
右键单击 synergy.exe,单击“设置优先级”,然后选择“高”或“实时”。
对 synergyc.exe 重复上述操作。
如果 Synergy 服务器太慢,其进程就是 synergys.exe。
提高 Linux 客户端调度程序优先级
类似的东西应该可以在 Mac 上运行。您可能知道如何在 GUI 中执行此操作,但我使用命令行。除非您以 root 身份执行以下操作(sudo su -
),否则您必须尝试(以 root 身份)visudo
并设置使用 的相关权限renice
。
ps -eo pid,ni,cmd |\
grep synergy |\
grep -v grep |\
cut -d" " -f2 |\
while read pid; do echo -n $pid" "; done |\
xargs renice -19
\
您可以复制并粘贴上述内容,或通过删除所有换行符将其放在一行中。如果您想查看将运行的内容而无需实际执行,请将最后一个命令更改为xargs echo renice -19
。
如上所述,这仍然是根据调度程序对许多其他进程的重要性的看法而做出的。如果您想了解一点,可以执行以下操作。
查看 Windows 进程
打开任务管理器。在“进程”选项卡中,单击“显示所有用户的进程”按钮。然后单击“查看”菜单,然后单击“选择列...”。确保只勾选以下项:用户名、CPU 使用率、CPU 时间、基本优先级、命令行。如果愿意,您也可以单击“描述”。
您可以拖动窗口和列以使其更易于阅读。单击列标题以按其排序。您还可以右键单击图像名称,例如,转到相关服务。这对于 svchost.exe 等平淡无奇的图像名称很有用。如果您想要一个真正强大的工具来玩(小心!),请尝试进程黑客。
查看 Linux 进程
运行ps -eo pid,ni,cmd | less
以查看所有正在运行的进程。每行代表一个进程状态,列包括:进程 ID、其优先级和相关命令行。请注意,在 Unix 中,nice 值越低,优先级越高。
结论
问题是 Synergy 依赖大量其他进程来完成部分工作(例如处理 Pro 中的 SSL),并且每个进程都由 OS 调度程序分配优先级。因此,实际上没有简单的解决方案。
即使应用了上述“修复”,在进入您很久没使用的客户端屏幕后,速度通常也会变慢,这是因为整个进程系列都被调度程序搁置了。如今,大多数调度程序都是自适应的,会降低闲置了一段时间的用户进程的优先级。要让调度程序再次认为它们很重要,需要持续使用一段时间,例如在您进入屏幕后大量移动鼠标。这很麻烦,但这就是 OS 调度程序在非实时操作系统中的工作方式。
有办法可以调整这一点,但它对每个操作系统(甚至是不同的版本)来说都非常具体,而且很脆弱(也就是说:很容易被操作系统补丁破坏)。如果不看代码,我估计 Nick 和团队只能通过将 Synergy 推到内核驱动程序级别来真正解决这个问题,这将使它变得更加脆弱,并导致价格大幅上涨。