AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 419341
Accepted
Morphinz
Morphinz
Asked: 2018-01-25 05:10:14 +0800 CST2018-01-25 05:10:14 +0800 CST 2018-01-25 05:10:14 +0800 CST

更改速率限制的管道查看器问题

  • 772

我pv用于通过ssh.

我可以毫无问题地将“活动光伏”的限制更改为 100M 以下。当我将活动pv进程设置为 100M 或 1G 或更高时,我无法再更改速率...

但!如果我将 1M 更改为 2M 5-10 次,pv有时可以将 2M 更改为 1M 为新速率。

我找不到该问题的任何解决方案。任何想法?

例子:

pv -R "15778"  -f -F "%p***%t***%e***%r***%b" -L 1M  
pv -R "15778"  -f -F "%p***%t***%e***%r***%b" -L 1G  
pv -R "15778"  -f -F "%p***%t***%e***%r***%b" -L 1M (not working anymore)  
linux pv
  • 3 3 个回答
  • 633 Views

3 个回答

  • Voted
  1. Best Answer
    Stephen Kitt
    2018-01-25T06:25:32+08:002018-01-25T06:25:32+08:00

    这是由记帐引起的pv,这实际上意味着它的速率限制是读取限制而不是写入限制。查看源代码表明,速率限制是由“目标”驱动的,即剩余发送量。如果开启了速率限制,则每个速率限制评估周期一次,目标会根据速率限制增加我们应该发送的数量;然后,无论实际写入多少,目标都会减少。这意味着如果您将速率限制设置为大于实际写入容量的值,则目标将继续上升;pv在赶上其目标(包括根据新的速率限制允许写入的内容)之前,降低速率限制不会产生任何影响。

    要查看此操作,请启动一个基本的pv:

    pv /dev/zero /dev/null
    

    然后控制:

    pv -R 32605 -L 1M; sleep 10; pv -R 32605 -L 1G; sleep 1; pv -R 32605 -L 1M
    

    通过改变第二次睡眠的持续时间,您将看到目标计算的影响......

    由于写入限制,仅当您将速率限制设置为大于写入容量的值时才会出现问题。

    更详细一点,以下是在能够传输 400M 的连接上,最初限制为 1M,然后是 1G 持续 5 秒,然后回到 1M 的流量的计费方式:

    Time    Rate     Target Sent    Remaining
    1       1M       1M     1M      0
    2       1G       1G     400M    600M
    3       1G       1.6G   400M    1.2G
    4       1G       2.2G   400M    1.8G
    5       1G       2.8G   400M    2.4G
    6       1G       3.4G   400M    3G
    7       1M       3001M  400M    2601M
    8       1M       2602M  400M    2202M
    9       1M       2203M  400M    1803M
    10      1M       1804M  400M    1404M
    11      1M       1405M  400M    1005M
    12      1M       1006M  400M    606M
    13      1M       607M   400M    207M
    14      1M       208M   208M    0
    15      1M       1M     1M      0
    

    再次应用速率限制需要 7 秒。使用高速率限制所花费的时间越长,执行降低的速率限制所需的时间就越长......

    解决这个问题的方法很简单,如果你可以重新编译pv: in loop.c,将第 154 行更改为target =(from target +=),导致

                       || (cur_time.tv_sec == next_ratecheck.tv_sec
                           && cur_time.tv_usec >=
                           next_ratecheck.tv_usec)) {
                           target =
                               ((long double) (state->rate_limit)) /
                               (long double) (1000000 /
                                              RATE_GRANULARITY);
    

    一旦完成,将立即应用速率限制降低(嗯,在一个速率限制周期内)。

    • 5
  2. roaima
    2018-01-25T06:24:22+08:002018-01-25T06:24:22+08:00

    这似乎是一个缓冲问题。这是我的试验台:

    pv --pidfile /tmp/pv.pid --rate-limit 1K </dev/zero |
        ssh remote 'cat>/dev/null'
    

    这是我的控制:

    pv --rate-limit 100M --remote $(cat /tmp/pv.pid)
    sleep 1
    pv --rate-limit 1K --remote $(cat /tmp/pv.pid)
    

    pv以 1 秒的间隔,运行从 100MB/s (1Gb/s) 的尝试降低到 1KB/s 的最终目标大约需要 13 秒。将sleep间隔增加 1 秒会使达到最终目标的时间增加近 10 秒:

    Sleep   Delay
     1       13
     2       22
     3       28
     4       37
    

    四个样本对于趋势线来说真的不够,所以我要避免暗示它是线性相关。

    • 0
  3. Morphinz
    2018-01-25T08:50:32+08:002018-01-25T08:50:32+08:00

    我正在纠正自己;pv可以改变速度..我不知道为什么,但根据你的速度限制它需要一些时间......如果你将它设置为1G,你必须等待45秒才能降低速度。
    5G - 5 分钟。
    10G - 7 分钟。

    例如:

    命令:

    pv --pidfile /tmp/pv.pid --rate-limit 10G </dev/zero | ssh 10.1.1.5 'cat>/dev/null'
    pv --rate-limit 1M --remote $(cat /tmp/pv.pid)
    

    -开启 10Gb/s 网卡:

    3.99GiB 0:02:26 [ 157MiB/s] (Right here i just changed to 1M)
    26.1GiB 0:02:30 [ 160MiB/s]
    77.6GiB 0:09:38 [1.01MiB/s]
    

    7分钟后,速度终于变了……

    -ON 1Gb/s 网卡:

    我又开始了 10G 的限制。

    770MiB 0:00:07 [ 112MiB/s]
    44.5GiB 0:06:49 [ 111MiB/s]
    46.4GiB 0:07:31 [1.00MiB/s]
    

    结果是一样的。如果将速度 10G 更改为 1M,则至少需要等待 7 分钟。但是,如果您将速度从 1M 更改为 10G,则无需等待任何时间。我不认为它只是与缓冲区有关,因为 7 分钟(45Gb)对于缓冲区来说必须太大。但这只是我的意见。

    • 0

相关问题

  • 有没有办法让 ls 只显示某些目录的隐藏文件?

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve