Как точно измерить битрейт, протекающий по именованной трубе?

1

Если у меня есть proc1 | proc2, есть ли способ точно измерить битрейт, протекающий по трубе, без изменения поведения, как если бы измерительного устройства не было? будет что-то вроде работы с тифом? я хотел бы proc1 | tee proc2 > flow_measurement_thing или proc1 | tee flow_measurement_thing > proc2? если я правильно понимаю каналы, unix-каналы по умолчанию могут пережевывать 4096 байт, и они могут блокировать, если приемник не считывает данные так быстро, как это происходит, поэтому я обеспокоен тем, что само измерительное устройство может вызвать "ламинарный" поток труба станет "турбулентной", если я не реализую ее правильно.

фактический пример использования склеивается в python с именованными каналами из os.. здесь очень упрощенный пример

import os, subprocess
os.mkfifo('pipe')
subprocess.Popen(['convert', '-i', 'pipe', '-o', 'somewhere_else'])
subprocess.Popen(['capture', '-o', 'pipe'])

для простоты предположим, что преобразователь не изменяет битрейт, тогда я хочу убедиться, что capture | convert | /dev/null - это перекачка битов с той же скоростью, что и capture | /dev/null

  • 2
    pv (pipe-viewer) помогает? ivarch.com/programs/pv.shtml
  • 0
    да, это делает только трюк. Спасибо !
Теги:
subprocess
pipe
named-pipes
fifo

1 ответ

2
Лучший ответ

Как сказал Кори Голдберг, вы должны использовать pv. Это очень хороший инструмент и доступен на большинстве систем * nix. Вы можете сделать следующее:

capture | pv > /dev/null
capture | convert | pv > /dev/null

pv сообщит вам пропускную способность для каждого случая.

Или, если вывод capture является детерминированным, просто используйте таймер.

  • 0
    +1 фото отлично подходит для этой работы
  • 0
    Как заставить pv выразить пропускную способность в б / с? Я пытаюсь измерить пропускную способность WLAN на разных позициях, используя netcat . В настоящее время я просто использую Gnome System Monitor для измерения пропускной способности интерфейса WiFi, но в будущем я бы хотел использовать инструмент командной строки, такой как pv .
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню