Как я могу ограничить пропускную способность, используемую процессом?

dd на устройстве способ клонировать жесткий диск.

43
21.05.2017, 14:11
5 ответов

Можно использовать iptables для маркировки пакета (-изодромный с предварением владелец...) затем используйте tc сформировать трафик. Также "-sid-владелец" может использоваться для включения потоков и детей того процесса.

http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#OWNERMATCH

Соответствие - изодромный с предварением владелец
Ядро 2.3, 2.4, 2.5 и 2.6
Пример iptables-A ПРОИЗВЕЛ-m владельца - изодромный с предварением владелец 78
Объяснение Это соответствие используется для соответствия пакетам на основе идентификатора Процесса (PID), который был ответственен за них. Это соответствие немного более трудно использовать, но один пример был бы только, чтобы позволить PID 94 отправлять пакеты от порта HTTP (если Процесс HTTP не является поточным, конечно). Кроме того, мы могли записать маленький сценарий, который захватывает PID от вывода PS для определенного демона и затем добавляет правило для него. Для примера у Вас могло быть правило как показано в примере Pid-owner.txt

26
27.01.2020, 19:35
  • 1
    я думаю, что это сыграло вничью с моим решением для лучшего способа сделать это. - изодромный с предварением владелец на самом деле не выбирает на основе процесса, но владельца процесса. Я должен был бы создать специального пользователя для запуска процесса как, и затем отфильтровать на основе того владельца именно так я могу быть уверен, что формирую трафик только от того определенного процесса и не, скажем, нескольких демонов, которые, возможно, были запущены от основного пользователя. –  Wesley 14.03.2012, 20:41
  • 2
    @Wesley Это не то, что говорит страница справочника:"--pid-owner processid Соответствия, если пакет был создан процессом с данным идентификатором процесса". linux.die.net/man/8/iptables –  Ajedi32 22.04.2016, 18:38
  • 3
    Этот ответ был бы намного лучше, если бы он включал пример того, как использовать iptables и tc с этой целью. Данный iptables -A OUTPUT -m owner --pid-owner 78 пример, кажется, не завершен (поскольку он только соответствует пакетам, он не говорит, как "отметить" их), и tc не объяснен вообще. –  Ajedi32 22.04.2016, 18:45
  • 4
    Для маркировки пакета, необходимо добавить что-то как -j MARK --set-mark 1. Для получения дополнительной информации см.: wiki.archlinux.org/index.php / … –  Mircea Vutcovici 14.07.2016, 21:30

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

струйка является портативным легким формирователем пропускной способности пространства пользователя. Это может работать в совместном режиме (вместе с сочившимся) или в одиноком режиме.

сочитесь работы путем использования в своих интересах предварительно загружающего загрузчика Unix. По существу это обеспечивает, к приложению, новой версии функциональности, которая требуется, чтобы отправлять и получать данные через сокеты. Это затем ограничивает трафик на основе задержки отправки и получения данных по сокету. сочитесь работает полностью в пространстве пользователя и не требует полномочий пользователя root.

41
27.01.2020, 19:35
  • 1
    Это - то, которое решило мою проблему. У меня была проблема с демоном биткоина, случайным образом неопытным вся моя пропускная способность, когда клиент решил, что я был человеком, с которого они должны загрузить целый блокчейн. –  Omnifarious 12.11.2012, 23:09
  • 2
    trickle ссылка, которую Вы дали, приводит к 404. –  Geremia 27.11.2015, 11:58
  • 3
    я зафиксировал неработающую ссылку (путем замены его ссылкой Wayback Machine). –  G-Man Says 'Reinstate Monica' 02.12.2015, 06:27
  • 4
    Струйка, кажется, находится на GitHub теперь: вопрос github.com/mariusae/trickle –  Cheetah 10.03.2016, 10:07
  • 5
    или sudo apt-get install trickle –  ggll 06.01.2017, 18:06

Я использую rsync с - bwlimit=KBPS опция по той же причине.

Наш 1 Ethernet Gbit легко может затопить наш старый SCSI320 DAS RAID и по существу некоторые наши более старые производственные поля DOS, которые полагаются на него для его хранилищ NFS.

7
27.01.2020, 19:35

Если можно записать в канал (или stdout), можно установить pv (передайте средство просмотра по каналу), команда. Это было первоначально записано для отображения прогресса данных, переданных через канал.

tar cvf - /files/to/backup | pv -L 512k > /your/file/on/sshfs

   -L RATE, --rate-limit RATE
          Limit the transfer to a maximum of RATE  bytes  per  second.   A
          suffix of "k", "m", "g", or "t" can be added to denote kilobytes
          (*1024), megabytes, and so on.
22
27.01.2020, 19:35
  • 1
    , Это - на самом деле ответ, я думаю, что буду использовать! Однако это не точно ответ на конкретный вопрос, который я первоначально задал. Увы, вопрос, отчасти превращенный, но, был все еще сфокусирован на ограничении скорости сети процесса. Однако можно способствовать этому новому вопросу, который я задал: Потрясающий unix.stackexchange.com/q/34174/4232 –  Wesley 14.03.2012, 20:53
  • 2
    Спасибо! я делал подобную вещь и закончил тем, что делал ssh my-remote-server bash -c "'find / -xdev|cpio -o|gzip -c1'"|pv --rate-limit 1M > my-remote-root.cpio.gz. –  clacke 14.11.2012, 10:45
  • 3
    Возможно, объединился это с ионизируется также, но это не было позволено на том конкретном сервере. ssh my-remote-server ionice -c3 bash -c "'find / -xdev|cpio -o|gzip -c1'"|pv --rate-limit 1M > my-remote-root.cpio.gz –  clacke 14.11.2012, 10:47

Как Вы передаете данные? (rsync по ssh? scp? sftp? что-то еще?)

rsync позволит Вам ограничивать пропускную способность (см. опцию - bwlimit=KBPS). rsync-e ssh - bwlimit..

С другой стороны, Вы могли установить qdisc или эквивалентный, чтобы сделать необычное ограничение уровня, но я подозреваю, что в Вашем случае это было бы серьезным излишеством. Документация относительно этого доступна в ПРАКТИЧЕСКОМ РУКОВОДСТВЕ Расширенной маршрутизации и Управления трафиком Linux

4
27.01.2020, 19:35

Теги

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