URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 101824
[ Назад ]

Исходное сообщение
"Facebook открыл код инструментария для симуляции работы в пр..."

Отправлено opennews , 23-Мрт-15 23:23 
Facebook представил (https://code.facebook.com/posts/1561127100804165/augmented-t.../) новый открытый проект ATC (http://facebook.github.io/augmented-traffic-control/) (Augmented Traffic Control), предназначенный для организации тестирования приложений в условиях их применения в сетях различного качества. ATC позволяет симулировать такие ситуации, как падение пропускной способности, возникновение задержек в передаче пакетов, различные уровни потери и повреждения пакетов, нарушение порядка следования пакетов. ATC позволяет значительно упростить оценку качества работы любых сервисов и приложений в различных условиях подключения пользователя к сети, например, при работе через сеть 2G.


Код ATC написан на языке Python и распространяется под лицензией BSD. Инструментарий состоит из двух компонентов: web-интерфейс (https://github.com/facebook/augmented-traffic-control/tree/m...)  на базе фреймворка Django для управления процессом симуляции и демон atcd (https://github.com/facebook/augmented-traffic-control/tree/m...), который запускается на сетевом шлюзе и вносит те или иные изменения в характер прохождения трафика. Для влияния на трафик применяются штатные механизмы ядра Linux, доступ к которым производится через API netlink, для работы с которым применяется pyroute2 (https://github.com/svinota/pyroute2). Взаимодействие web-интерфейса и демона управления трафиком построено с использованием REST API (https://github.com/facebook/augmented-traffic-control/tree/m...) и интерфейса Apache Thrift (https://thrift.apache.org/).

<center><img src="http://www.opennet.ru/opennews/pics_base/0_1427141024.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></center>

Для оценки влияния сетевых аномалий, достаточно обеспечить выход исследуемой системы через сетевой шлюз, на котором установлен atcd. Симуляция применяется выборочно только к участвующим в эксперименте IP-адресам, что позволяет применять ATC на обычных шлюзах, обрабатывающих реальный трафик. Для маркировки участвующих в эксперименте пакетов применяется iptables (цель MARK в таблице mangle). Урезание трафика и внесения изменений в его характер производится с использованием методов классификации трафика (filter, class, qdisc), задаваемых утилитой tc из состава пакета iproute2.

<center><img src="http://www.opennet.ru/opennews/pics_base/0_1427141103.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;max-width:100%;" title="" border=0></center>

URL: https://code.facebook.com/posts/1561127100804165/augmented-t.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=41896


Содержание

Сообщения в этом обсуждении
"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено A.Stahl , 23-Мрт-15 23:23 
>Facebook открыл код инструментария для симуляции работы

Кто? Что открыл?
Ну и пусть.
P.S. Кому интересно, тот и так знает про старую GNU утилиту для эмулирования плохого канала. Даже я, программист, знаю про такую штуку.
Но это же фейсбук. Все должны восторгаться. Ну восторагайтесь.


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено someAlex , 23-Мрт-15 23:26 
Так имя утилиты хотя бы приведите, раз уж заинтересовали.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено A.Stahl , 23-Мрт-15 23:41 
Я программист. Честно - сейчас по-пьяне не вспомню. Но что-то из разряда netstat или около того. Протрезвею -- вспомню. Или кто-то из профессиональных админов напомнит.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Crazy Alex , 23-Мрт-15 23:57 
Ты не tc имел в виду? Если что - сабж - это управлялка для него.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 00:26 
Ха, я что то такое и подозревал! :)

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 23-Мрт-15 23:52 
Наверное, он имеет ввиду проект netem от Linux Foundation. Программа называется tc. http://www.linuxfoundation.org/collaborate/workgroups/networ...

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено GrammarNazist , 24-Мрт-15 08:17 
GNU-утилиту

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 23-Мрт-15 23:25 
> Код ATC написан на языке Python

Теперь я понимаю почему оно эмулирует плохую, медленную сеть. Хорошая бы все-равно на этом не получилась бы :)


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Crazy Alex , 23-Мрт-15 23:50 
Абсолютно идеальное применение для питона. Там всю раюоту делает стандартная механика ядра. а в управлялках, где важна не скорость и даже не поддерживаемость (потому что код прямой как бревно, начудить сложно), а простота написания - питон очень хорош.

Это когда на нём пытаются писать большое или то, где нагрузка - там уже беда-печаль.


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено cmp , 24-Мрт-15 00:05 
Исповедь питониста --- именно наш питон идеально подходит для system("tc bla-bla-bla");
да неужели.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Crazy Alex , 24-Мрт-15 01:07 
Хм, записать меня в питонисты - это сильно :-) Я, если что, большой сторонник мощных, прагматичных, статически типизированных компилируемых языков - если о реальных задачах говорить. Которых в настоящее время из распространённых примерно полтора - плюсы да C# ещё сошел бы, если б был не завязан на MS и нормально компилировался. Ну и если чудо случится - может D взлететь, что было бы очень приятно.

А так - да, для ситуаций, где нужно много тривиальной управляющей логики с малым количеством вычислительной или ещё какой работы, да чтобы легко это дело править было - питон вполне на месте. Читается/пишется он в таких штуках хорошо (синтаксис не "замусорен" тем, что нужно для более сложных случаев), производительности не требуется никакой - самое оно.


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено cmp , 24-Мрт-15 01:46 
Почти все перепробовал на роль - "тривиальной управляющей логики", все фигня, питоны-перлы-пхп-явы, монстры кто-то больше, кто-то меньше, луа наболее подходит, но он какой-то не такой, дефолтно глобальные переменные, не то, была надежда на js, были реализации не жирнее awk, но загнулись проекты, остались только монстры, кстате awk при правильном приготовлении иногда доставляет. Но тем не менее для задачи запустить 1000 процессов единовременно, которые бы извлекли данные из "облака" и туда же запихали после минимальной модификации абсолютный вакуум.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 01:58 
> для задачи запустить 1000 процессов единовременно, которые бы извлекли данные из
> "облака" и туда же запихали после минимальной модификации абсолютный вакуум.

Потому что you're doing it wrong, Luke. Представляешь себе какой пипец будет когда 1000 процессов начнут стартовать? Тебе потребуется крутой энтерпрайзный сервер, и даже там все это будет оставлять желать.

Чтобы понять насколько это злобно: берешь апач без лимитов и напускаешь на него хотя-бы родной апачевский ab2. Получаешь 1000 процессов. Если конечно все не загнется еще раньше.


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено cmp , 24-Мрт-15 04:18 
Дык сервера есть "крутые" "ынтерпрайзные", речь не о том что нужно реально 1000, а о том, чтобы тысяча копий не была нештатной, ну пусть медленно, но чтоб оно пережевалось корректно, а не дропнуло половину процессов оом киллером, причем пойди еще разберись каких, конечно можно обойти проблему, всегда можно, написать некую шину которая бы буфферизировала очередь запросов и грузила ими обозначенное кол-во исполнителей, сосбтвенно и апач, и нжинкс, и пхп-фпм и др, так и работают, только скрипт туда не подвязать, на луа можно бы, но тоже не из каробки далеко, вот отсюда ноги и растут, вот и приходится выбирать между костылями.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 08:57 
AnyEvent::Util::fork_call

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Motif , 24-Мрт-15 10:54 
man Erlang, однако.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 23:56 
> пусть медленно, но чтоб оно пережевалось корректно, а не дропнуло половину
> процессов оом киллeром,

Пардон, а ничего что oom killer вызывается ядром ОС? Программа в общем виде ничего с этим сделать не может: если ядро решит что программа свое отлетала, оспорить это программа может только в спортлото. Более того - в общем случае программа не может даже знать сколько памяти ей дадут. А с оверкоммитом и вовсе все весело. Но о таких мелочах бидонисты не знают - им надо чтобы за них подумал ЯП и рантайм, а своего мозга у них обычно нет.

> причем пойди еще разберись каких, конечно можно обойти
> проблему, всегда можно, написать некую шину которая бы буфферизировала очередь запросов

Нормальные люди давно в курсе что такое "машина состояний" (FSM) и просто не имеют таких проблем. Для того чтобы что-то делать в 1000 соединений достаточно 1 процесса. И даже 1 потока. Ну может несколько, e.g. по числу процессоров, если нагрузки совсем уж дофига.

> и грузила ими обозначенное кол-во исполнителей, сосбтвенно и апач, и нжинкс,
> и пхп-фпм и др, так и работают,

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

> только скрипт туда не подвязать,

Для FSM критерий прост: в FSM нельзя надолго вставать колом, так что операции вызывающие длительное блокирование потока (команд, треда) - FSM не друг.

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

А у питонистов судьба такая :)


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено cmp , 26-Мрт-15 00:54 
> Программа в общем виде ничего с этим сделать не может

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

> Нормальные люди давно в курсе что такое "машина состояний" (FSM)

Ага и используют epoll, сигналы и прочие няшки, только в скриптах этого нет, разработать дизайн и написать "под ключ" можно, но нет гарантии, что через пол года совершенно тривиальная хотелка не упрется в невозвожность "байдизайн", и не придется городить огород костылей.

> А у питонистов судьба такая :)

Не знаю как у конкретно питонистов, но не думаю что лучше чем у остальных.


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 13:24 
Если тебе нужно 1000 процессов для чего-то не числодробильного(да и там больше чем ядер не сильно нужно), то у тебя проблемы с архитектурой. Тем более если тебе надо по сети данные извлекать откуда-то из облака, подход с потоками это wrong way

Осиль асинхронную модель. Например связка EV+AnyEvent+Coro в перле позволяет писать асинхронные проги обрабатывающие тысячи и десятки тысяч конектов вообще не заморачиваясь и не сильно вдаваясь в оптимизацию. При этом Coro отлично маскирует асинхронную логику и не надо писать кучи колбеков, выглядит все будто у тебя потоки, десятки тысяч легковесных корутин - легко, хотя поток на самом деле один. Если нужно больше можно форкать, но для работы с сетью не нужно обычно.


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Ilya Indigo , 24-Мрт-15 07:07 
>Ну и если чудо случится - может D взлететь, что было бы очень приятно.

А что вы понимаете под взлётом?
Создание Qt-подобного фреймвёрка для него, поддержка в cmake, не помню как правильно называется тип этой утилиты?
Или в самом языке D чего-то не хватает, или не удобно сделано?


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Crazy Alex , 24-Мрт-15 13:20 
О, у меня очень простой и довольно слабый критерий - хотя бы одно приложение, ставшее в своей области стандартом де-факто - хотя бы одним из. Как Docker для Go или рельсы для Ruby. Ну и более сильный - наличие вакансий для D-разработчиков.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Dmitry77 , 25-Мрт-15 02:19 
ещё хорошо бы наличие достаточного количества грамотных разработчиков на D - без этого стартовать проект на D - довольно рискованно.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Crazy Alex , 25-Мрт-15 19:12 
Ну так хорошие проекты не растут из ничего. Если хоть один взлетел и стал известен - значит, на него приходится 100 неизвестных и 1000 умерших. И, соответственно, есть люди, которые всё это писали.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 01:55 
> Абсолютно идеальное применение для питона.

Так я и говорю: настоящий питонист придумает как из бага сделать фичу. Ну или по крайней мере будет убеждать всех что это - фича. А так то да, чтобы tc вызвать - крайне необходимо полкило питонятины и куча заморочек с какой-нибудь там неправильной версией оного.


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Crazy Alex , 24-Мрт-15 13:21 
Фишка в том, что для той же задачи всего другого будет полтора кило. И да, скриптовые языки примерно для этого и делались - чтобы склеить возможности ОС в удобоваримом виде.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено GrammarNazist , 24-Мрт-15 08:17 
"всё равно"

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено джавафоб , 23-Мрт-15 23:42 
Уж лучше чем на тормозной джаве

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 01:12 
Реал? С каких это пор питончик стал быстрее жабки?

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено GrammarNazist , 24-Мрт-15 08:18 
"Яве"

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 11:13 
"Джаве"

http://en.wiktionary.org/wiki/Java


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Grammar_Nazism , 24-Мрт-15 13:27 
Тогда не Индия, а Индиэ, ведь https://en.m.wikipedia.org/wiki/India

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Петруччо , 24-Мрт-15 08:44 
Джава не такая уж и тормозная. Более-менее приемлимо, но если надо делать что-нибудь быстрее - то есть для этих целей C#.
P.S. Ваши всякие С, С++ не нужны. Забудьте про них. Это технологии 25-летней давности, не надо насиловать трупы

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 09:12 
>Ваши всякие С, С++ не нужны.

Когда я начинаю пистать на Java у меня возникает ощущение что над моей работой наблюдают толпа бюрократов, и все знают как лучше мне нужно делать работу, но при этом никто из них не умеет программировать.

Когда я начинаю писать на Си у меня возникает ощущение что сейчас мне предстоит показать уровень владения "Кун-фу", и здесь и сейчас, и именно от меня и моего уровня мастерства зависит исход ситуации.

PS: Ну нужно говорить за всех - каждый волен выбирать то что ему больше подходит. Говорите за себя. Лично мне Си ближе - он лучше подходит для меня.

PPS: С++ комментировать не буду, т.к. код который я пишу он ближе к Си, а код который чаще всего - к Java.


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено ZiNk , 24-Мрт-15 10:44 
C# - это .NET и вообще-то медленнее явы судя по бенчмаркам.
benchmarksgame.alioth.debian.org
Чисто теоретически - и то и то перегоняется в байткод, который бегает в виртуалке, так что класс производительности у них достаточно близкий.

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


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Grammar_Nazism , 24-Мрт-15 11:05 
"Ява"

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено dr Equivalent , 24-Мрт-15 16:38 
В методичке прочел?

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 25-Мрт-15 05:00 
> P.S. Ваши всякие С, С++ не нужны. Забудьте про них. Это технологии
> 25-летней давности, не надо насиловать трупы

Сразу после того как ты перепишешь операционку на своем фетише и выставишь с рынка существующие ОС :)


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Капитан , 23-Мрт-15 23:46 
Адский велосипед сатаны!

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Crazy Alex , 24-Мрт-15 01:10 
Не знаю, кому что не нравится. Оболочка, дающая возможность удобным образом создать сценарии и управлять ими, реальную работу делегирующая тому, что её отлично умеет делать - ядру и netem. Абсолютно правильная штука же.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено GrammarNazist , 24-Мрт-15 08:19 
"работу, делегирующую"

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 10:22 
Плохой грамма, запятую поставил, а согласование перестал.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Crazy Alex , 24-Мрт-15 17:30 
Мысленно выбрось первый причастный оборот: "Оболочка, реальную работу делегирующая тому, что её умеет делать". Неграмотный какой-то граммар наци попался...

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено бедный буратино , 24-Мрт-15 01:57 
А симуляцию действий юзеров в соцсетях, позволяющую заменять её контингент, когда откроют? :)

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 01:57 
sudo tc qdisc add dev lo root netem delay 100ms
sudo tc qdisc del dev lo root netem delay 100ms

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 04:29 
Изобрели велосипед? В смысле dummynet из состава ipfw, который был придуман и реализован ещё 18 лет назад. Ну молодцы, чо.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено DeadLoco , 24-Мрт-15 13:26 
+bpf +ng - это чтобы модифицировать пакеты и менять очередность доставки.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 25-Мрт-15 05:01 
> +bpf +ng - это чтобы модифицировать пакеты и менять очередность доставки.

Так в линухе это тоже сто лет все есть. И умений tc и соотв. ядерных подсистем хватит на дюжину чертей. А новость - о том что фэйсбучик написал гламурную запускалку tc, собственно :)


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Crazy Alex , 24-Мрт-15 17:33 
БСДшникам лишь бы ipfw гду угодно увидеть. А изобрели управлялку, которая удобно конфигурирует инструменты, которые сто лет как доступны в линуксе.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено YetAnotherOnanym , 24-Мрт-15 10:44 
Открыли бы офис где-нибудь в российских е..нях - и площади дешевле, и тормозной канал автоматом прилагается.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 12:07 
а чо они сами ей не пользуются? в "проблемных сетях" работать с фб не возможно же - все постоянно сыпется.

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Grammar_Nazism , 24-Мрт-15 13:33 
С фэйсбуком можно работать?
"невозможно", позорище!

"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Andrey Mitrofanov , 24-Мрт-15 18:18 
> а чо они сами ей не пользуются? в "проблемных сетях" работать с
> фб не возможно же - все постоянно сыпется.

Вот тебя они через неё и пользуют?


"Facebook открыл код инструментария для симуляции работы в пр..."
Отправлено Аноним , 24-Мрт-15 18:43 
Лично я для имитации "плохих каналов" пользуюсь wanulator'ом (http://wanulator.de/). В настоящее время проект, правда, заброшен, но того, что есть- с лихвой хватает