Пропускная способность меры используется единственным выполнением программы

Я хотел бы измерить пропускную способность, использованную единственным запуском программы (для процессов, запущенных от крона, для понимания то, сколько BW они используют). Я знаю о nethogs и многих других командах, которые измеряют пропускную способность / порт для каждого устройства.

Идеально, это было бы что-то как струйка, которая предварительно ожидается к команде, и на завершении сообщает об используемых данных. Мое исследование подходит без результатов.

Моя единственная альтернативная идея состоит в том, чтобы использовать ifconfig для получения байтов перед запуском и после завершения, но это очевидно очень грубо. Идеи для чего-нибудь лучше?

Я предполагаю, что струйка могла использоваться в качестве более легкой начальной точки для такой программы, если бы у каждого было достаточно времени для кодирования ее...

3
задан 11 November 2014 в 12:27

2 ответа

nethogs делает это: http://nethogs.sourceforge.net/ , установите его с помощью центра программного обеспечения.

я полагаю, что sysdig мог использоваться, также но у меня нет синтаксиса под рукой.

0
ответ дан 18 November 2019 в 14:32

Одним путем я могу думать для переданных данных, должен использовать iptables, при запущении программы при некотором уникальном matchable условии, таком как отдельная группа.

Первый, выберите группу, которой Вы принадлежите и под которым не работают никакие процессы:

$ for i in $(groups); do echo $i $(pgrep -c -G $i); done | awk '$2 == 0'
cdrom 0
sudo 0
plugdev 0
lpadmin 0
sambashare 0
debian-tor 0
libvirtd 0

я выберу debian-tor. Теперь добавьте правило iptables, которое будет соответствовать трафику, происходящему из процесса в этой группе. Это должно будет базироваться доступ, поэтому добавьте sudo к весь iptables команды:

iptables -N STATS  # Create a new chain
iptables -A STATS -p tcp -j RETURN # And let it do nothing
iptables -A OUTPUT -p tcp -m owner --gid-owner debian-tor -j STATS

Запускают Ваше приложение:

sg debian-tor 'ssh a.friendly.system "cat - >/dev/null" </dev/zero'

Проверка статистика:

$ iptables -vL  STATS
Chain STATS (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 148K  393M ACCEPT     tcp  --  any    any     anywhere             anywhere     

Это не будет работать на полученные данные.: (

<час>

другой путь мог состоять в том, чтобы использовать /proc/$PID/netstat, если можно убедить приложение оставаться в живых достаточно долго:

$ awk '{for (i=1; i<=NF; i++) {($i~/(In|Out)Octets/) && a[i] = 1}; z=""; for (i=1; i<=NF; i++){(a[i] == 1) && z = z " " $i}; if (z) {print z}}' /proc/12307/net/netstat 
 InOctets OutOctets
 254543569761 2144044764834

(Все, что awk код должен искать InOctects и OutOctects столбцы в netstat файл.)

, К сожалению, /proc/$PID/net просто /proc/net, так, чтобы информация была характерна для всех процессов. Чтение netstat не дает информации о конкретном процессе.

0
ответ дан 18 November 2019 в 14:32

Другие вопросы по тегам:

Похожие вопросы: