【问题标题】:Millisecond timing over SSHSSH 上的毫秒计时
【发布时间】:2013-04-11 21:04:12
【问题描述】:

假设我有一个 ncurses 应用程序,它以亚秒级的时间间隔更新我的终端窗口(比方说,每毫秒循环一次)。

while(true)
  write_some_value_to_terminal();
  sleep_for_1_millisecond();

如果我通过 SSH 远程连接到我的机器并运行该程序,这是否意味着 SSH 需要每毫秒执行一次往返以更新我的(远程)窗口?

编辑第二个问题,对于我正在编写的代码的实际应用,我如何确定最佳睡眠值?瞄准亚秒级计时是否有意义?

【问题讨论】:

  • 取决于缓冲。您可以随时查看 Wireshark(它无法告诉您发送的内容,但可以告诉您发送的数量和频率)
  • 您的“远程窗口”更新速度有多快?你会注意到小于 20 毫秒的状态吗?我怀疑每隔 10 到 20 毫秒写一堆就可以了。

标签: linux ssh timing


【解决方案1】:

几乎。写入需要一些时间,之后它将休眠一毫秒,然后再次写入。

【讨论】:

    【解决方案2】:

    由于Nagle's algorithm,您很可能根本看不到每隔 1 毫秒的更新。更不用说您的延迟很可能会高于 1 毫秒(除非您在同一个本地网络上),在这种情况下,更新将通过常规 TCP ACKing 行为合并。

    【讨论】:

    • SSH 和 telnet 通常禁用 Nagle(假设输出到 tty;管道的行为可能不同)
    • 请查看我更新的问题。假设——正如 Ben Voight 所说——Nagle 被禁用,我如何在不进行反复试验的情况下计算出近似的睡眠值?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 2010-12-26
    相关资源
    最近更新 更多