Загрузка...
Linux
Новости, статьи, обсуждения, - все что связано с GNU Linux, FreeBSD, OpenBSD, Sun Solaris, Mac OS X и другими системами. Если вы интересуетесь данной темой - добро пожаловать в сообщество.
     

Ограничение ширины канала с помощью Tickle

14.04.11, 10:53
Автор ggg

Практически каждый пользователь Интернет сталкивался с такой проблемой: одна из программ занимает весь доступный канал из-за чего все остальные приложения, которым требуется что-то получить из сети или наоборот передать в сеть начинают нещадно тормозить. К сожалению, далеко не каждая программа обладает способностью задать ограничение по скорости. Как же быть? Нам приходит на помощь Tickle.

 

Trickle - это "шейпер" для интернет канала, работающий как пользовательский процесс. Он позволяет ограничить скорость доступа прикладных программ к Интернет каналу без необходимости накладывания патчей на ядро, каких либо настроек firewall'a либо прав супер-пользователся (aka root) в системе. Trickle может быть запущен в режиме взаимодействия и как отдельный сервис. В режиме сервиса trickle лимитирует скорость использования канала большим количеством пользовательских приложений. В режиме одиночного приложения trickle будет уменьшать скорость доступа к каналу для приложения, которое вы ему явно укажете.

Рассмотрим пример использования Tickle в режиме приложения:

trickle -d 50 -u 30 wget http://someurl/bigfile

В этом случае скорость скачивания будет ограничена 50 Kb/s а скорость загрузки на сервер - 30 Kb/s

Если запустить Tickle в режиме сервиса:

trickled -d 50 -u 30

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

Комментарии

Кстати, а кто-нить может описать принцип работы ограничения входящего траффика?

как я понял tickle подменяет системный вызов socket(2) своей функцией через LD_PRELOAD, после чего чтение и записать в сокет контролируются (если приложение слишком часто читает или слишком часто пишет – tickle заставляет его подождать). С помощью опции -w можно задать размер окна данных, тем самым указать тщательность слежения за приложением.
Из-за того, что tickle подменяет функции работы с socket-ами можно сделать вывод, что:

  • tickle не будет работать с setuid приложениями (т.к. эти приложения игнорируют LD_PRELOAD в целях обеспечения безопасности)
  • tickle не будет работать со статически собранными библиотеками

:) Благодарю, будет что детям рассказывать

Yup, that’ll do it. You have my apprceiation.

Войдите, чтобы оставить комментарий