Pull to refresh
17
0
Александр Демченко @braindamagedman

Пользователь

Send message

Самый простой способ создать трафик на сетевом интерфейсе

Reading time1 min
Views34K
Есть программа iperf, которая позволяет проверять скорость интерфейсов (у меня на тестах из 10G интерфейса она выжимала 9.37 Гбит/с).

Пакет (в дебиане и убунте) так и называется — iperf.

Применение очень простое: на одном сервере запускаете iperf -s X.X.X.X (свой собственный адрес сервера, на котором слушать). Можно запустить просто iperf -s, тогда слушать будет на всех интерфейсах.

На клиентской части пишем iperf -c X.X.X.X (адрес сервера из предыдущего этапа). Клиент подключается, работает 10 с и показывает скорость работы канала.

Пример: сервер имеет адрес 192.0.2.1, клиент 192.0.2.200. На сервере запускаем iperf -s 192.0.2.1 на клиенте iperf -c 192.0.2.1.

Для того, чтобы сделать много байтов (привет хостерам с соотношениями) нужно просто указать опцию -t (время в секундах). Многие гигабайты трафика в нужном направлении вам обеспечены. С учётом текущих тарифов для дома — можно даже с домашней машины, за 3-4 часика можно выправить любое соотношение с минимальной нагрузкой как на сервер, так и на клиента.

Как я поступил на дистанционное образование в магистратуру Walden (США)

Reading time2 min
Views50K
Вдохновленный постами на Хабре и Лайфхакере решил удаленно получить диплом магистра в области компьютерных наук. После продолжительных поисков выбор пал на университет Walden, Миннесота, США.

Финальный список документов, которые в том или ином виде пришлось предоставить:
Читать дальше →

«Переведем Coursera»: как сделать платформу для перевода лучших курсов мира на русский язык

Reading time4 min
Views23K
24 марта ABBYY Language Services и центр Digital October объявили об официальном запуске краудсорсингового проекта «Переведем Coursera». Его цель — на волонтерской основе перевести лучшие курсы Coursera на русский язык и сделать их доступными для всех пользователей Рунета. Зарегистрироваться и приступить к переводу лекций можно уже сейчас на сайте проекта.

Пока мы разрабатывали и готовили к запуску этот проект, произошло много интересного. Мы решили массу организационных и технических задач, познакомились с большим количеством интересных людей, в том числе с яркой командой и основателями Coursera, а также с командой нашего локального партнера по этому проекту Digital October. Думаем, что вам будет интереснее узнать про технологии, поэтому сейчас расскажем, из чего состоит и что умеет платформа, которую мы разработали. Почти наверняка это не последний пост о проекте, так что пишите в комментариях, о чем еще вы бы хотели узнать.
Читать дальше →

Strace

Reading time7 min
Views128K
В течение минуты думал над заголовком, так ничего и не придумал…
Strace. Наверное нет того человека, который бы не слышал про strace. Если кто не слышал, то strace — это утилита, отслеживающая системные вызовы, которые представляют собой механизм трансляции, обеспечивающий интерфейс между процессом и операционной системой (ядром). Эти вызовы могут быть перехвачены и прочитаны. Это позволяет лучше понять, что процесс пытается сделать в заданное время. Перехватывая эти вызовы, мы можем добиться лучшего понимания поведения процессов, особенно если что-то идет не так. Функциональность операционной системы, позволяющая отслеживать системные вызовы, называется ptrace. Strace вызывает ptrace и читает данные о поведении процесса, возвращая отчет. Детали можно прочитать в вики или официальном man. Собственно вот, ну и речь конечно же о Linux. В других ОС свои аналоги.
Так вот, лично для меня strace это как последняя инстанция. Когда уже все логи просмотрены, все debug и verbose ключи включены, а причина проблем так и не обнаружена, я достаю из широких штанин запускаю strace. Есть одно но, strace это такой инструмент который вовсе не является серебряной пулей, которая тут же все покажет и расскажет. Для работы с strace требуется наличие определенных знаний и чем шире и глубже эти знания тем больше вероятность обнаружения проблемы.
В интернетах полно вводных статей, где описываются примеры запуска strace. Я же в этой статье покажу частные проблемы и их решение с помощью strace.
Читать дальше →

Рассуждения о Software Defined Storage: что не так с IO?

Reading time9 min
Views18K
Abstract: О новом тренде — software defined strorge и главной родовой травме блочных устройств — обещании бесконечной надёжности.

Лирика


На горизонте новый buzzword: Software defined $thing. Мы уже имеем состоявшийся и сформировавшийся круг всего, относящегося к software defined networks (SDN), пришла очередь и storage (SDS). Видимо, дальше у нас будет software defined computing или ещё что-то подобное, потом резко всполошатся и подтянутся HP/VMWare и предложат (private) «software defined enterprise», который будет означать всё тоже, что было, но ещё моднее и актуальнее.

Впрочем, рассказ не про баззворды. За каждым таким странным названием (grid, elastic, cloud) стоит дальнейшее развитие технологий — построение дальнейших слоёв взаимодействия компонент (эм… взаимодействия участников взаимодействия, иначе не скажешь), основным мотивом которых является уход от гранулированности компьютерной системы, так, чтобы вся терминология, вся предметная область ушла от «межпроцессного взаимодействия» и стала автономной. В более-менее приличном виде мы это (в виде уже свершившегося факта) мы видим в волшебном мире javascript работе www, когда нас никаким образом не волнуют сервера, на которых крутятся задачи — всё общение происходит на уровне между браузером (с учётом его интимных подробностей DOM, JS и т.д.) и абстракцией, под названием URI, которой не важно — один это сервер или сотни разных.

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

Перед рассказом про SDS, посмотрим на уже состоявшееся: SDN (software defined network).
Читать дальше →

Забудь про СХД. Nutanix – революция в виртуализации

Reading time5 min
Views69K


В последнее время набирает популярность идея SDN (Software-defined Networking). На фоне данной концепции, а может и под её влиянием, развивается идея и SDS – Software Defined Storage. Данное направление выглядит перспективным и начинает активно развиваться, к примеру, выход в бета версии VSAN.


Подробности

Спорт и немного линейных уравнений

Reading time9 min
Views13K
Эта текст написан эксклюзивно для хабра и содержит мой личный опыт, забавные факты и немного рекламы.



lurkmo.re/_/8821#mws_XtuVv4a

Сначала предыстория.
Я никогда не придавал особенного значения своему физическому развитию и мне казалось довольно скучным тратить свое время на занятия спортом. Я считал, что моя форма находится в пределах нормы и секса вполне достаточно чтобы сжигать лишние калории. И я действительно почти не думал о спорте лет до 30-ти с небольшим. Но постепенно недовольство своим телом накапливалось, и я хорошо запомнил переломный момент. В тот день я купил большой двойной шкаф в икее, привез его домой и попытался собрать. Через 6 часов я лежал на полу, тяжело дышал, и думал о том, что я уже не подросток и совершенно точно должен пересмотреть свое отношение к физическому развитию.

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

Начнем с “максимизации плюсов”.

Читать дальше →

О производительности Thin Provision в LVM2

Reading time4 min
Views17K
С версии RHEL 6.4 в LVM2 включена поддержка thin provision. На русский я бы перевёл это как «тонкое резервирование», хотя перевод неточен и совершенно не согласуется с реальностью, поэтому далее наравне с русским будет использоваться английское написание.

Thin provisioning — это создание логических томов, которые изначально используют немного места и «растут» по мере записи в них данных. В ZFS это реализовано давно по самой философии этой ФС. В VMware это используется в каждом продукте. Дошло дело до LVM2, широко применяемом в Linux в наши дни. Также одним из основных нововведений является thin snapshots, когда для снэпшотов нет необходимости резервировать место заранее, а он «растёт» вместе с изменёнными данными. Также разрешаются и поощряются вложенные снэпшоты (снэпшоты снэпшотов c любой глубиной), при этом заявляется об отсутствии при этом падения производительности. О нескольких нюансах использования будет рассказано в статье.

Для стабильной работы thin provision в LVM2 требуется ядро 3.4. В Red Hat бэкпортировано и работает на их «классическом» 2.6.32.
В близкой мне Debian Wheezy thin provisioning недоступен ввиду отсутствия ключа при компиляции lvm2 --with-thin=internal и других сложностей. При необходимости, для целей теста, можно скомпилировать этот пакет из исходников.

Меня больше интересовали не снэпшоты, а производительность «тонких логических томов» (Thin Logical Volume) для использовании на серверах. Для нетерпеливых скажу сразу — падение производительности наблюдается, и существенное. Подробности ниже.
Читать дальше →

Архитектура карьерного роста

Reading time9 min
Views232K

С понедельничком (говорят — самым депрессивным в году), хабровчане!
После публикации этой статьи, многие заметили, что я шустрый карьерист, и у меня начали просить совета на тему: как обеспечить карьерный рост в IT-индустрии. Во избежание повторения одних и тех же советов разным людям в личных сообщениях я и пишу эту статью, делясь в ней историей своего собственного карьерного роста и основными наблюдениями, которые я сделал за 13 лет опыта работы в больших и не очень компаниях.
Сразу предупрежу, что не претендую на изложение универсальной теории карьерного роста сферического коня в вакууме, и большинство замечаний искривлено призмой моего восприятия. То, что неоднократно работало в моем случае, необязательно сработает в вашем.

Читать дальше →

Как и зачем я решил начать собственное дело

Reading time8 min
Views190K
Салют, Хабр!
Недавно я уволился с довольно завидной должности (главного архитектора) в довольно неплохой компании (Acronis) и с непоколебимым решением в мозгу больше не работать по найму переехал из Москвы обратно в Ереван, откуда семь лет назад понаехал в Златоглаво-Нерезиновую. Учитывая необычность произошедшего и часто задаваемый вопрос «но почему?!», я решил разобраться в собственных мыслях и озвучить их вслух для себя самого и тех, кто может почерпнуть в моих размышлениях что-то для себя полезное. Короче говоря, это рассказ о том, почему я оставил высокооплачиваемую перспективную работу в международной компании ради сомнительной перспективы начать собственное дело, и как я собираюсь дальше жить.
Читать дальше →

Практическое применение LD_PRELOAD или замещение функций в Linux

Reading time4 min
Views44K
Всем привет!
В 2010 году, shoumikhin написал замечательную статью Перенаправление функций в разделяемых ELF-библиотеках. Та статья очень грамотно написана, полная, но она описывает более харкордный способ замещения функций. В этой статье, мы будем использовать стандартную возможность динамического линкера — переменную окружения LD_PRELOAD, которая может загрузить вашу библиотеку до загрузки остальных.

Как это работает?

Да очень просто — линкер загружает вашу библиотеку с вашими «стандартными» функциями первой, а кто первый — того и тапки. А вы из своей библиотеки можете загрузить уже реальную, и «проксировать» вызовы, попутно делая что вам угодно.

Реальный Use-Case #1: Блокируем mimeinfo.cache в Opera


Мне очень нравится браузер Opera. А еще я использую KDE. Opera не очень уважает приоритеты приложений KDE, и, зачастую, так и норовит открыть скачанный ZIP-архив в mcomix, PDF в imgur-uploader, в общем, вы уловили суть. Однако, если ей запретить читать файл mimeinfo.cache, то она все будет открывать через «kioclient exec», а он-то уж лучше знает, в чем я хочу открыть тот или иной файл.

Чем может приложение открывать файл? На ум приходят две функции: fopen и open. В моем случае, opera использовала 64-битный аналог fopen — fopen64. Определить это можно, воспользовавшись утилитой ltrace, или просто посмотрев таблицу импорта утилитой objdump.
Читать дальше →

Беспроводной звук. Часть 1. Препарируем Bluetooth

Reading time20 min
Views318K
Иногда, бывает, натыкаешься на какой-то баг впервые, списываешь все на обстоятельства и забываешь о нем. Затем он повторяется снова и снова, вынуждая тебя приступить к поиску проблем и, по возможности, их устранению. И вот когда ты обнаруживаешь себя в глубокой ночи за анализом дампом/дебагом/чтением_мануалов, то становится понятно, дело на полпути бросать уже нельзя и дело принципа — довести его до конца.

Такая история со мной приключилась в момент обзора с коллегой r3s потребительской беспроводной Bluetooth-акустики Klipsch KMC 3. Я столкнулся с ситуацией, когда «беспроводной» аудиопоток начинал безбожно прерываться, стоило лишь мне расположить источник звука у себя за спиной. Пищи для размышлений мне подкинула другая Bluetooth-аудиосистема, которая в тех же условиях вела себя куда лучше. Такая простая проблема выродилась в нырок с головой во внутренности протокола Bluetooth и детали передачи аудио с его помощью.

Под катом первой части цикла статей мы в легкой и непринужденной форме познакомимся с основными протоколами стека Bluetooth, покопаемся в дампе соединения источника и приемника звука, разберемся в причинах конфликта Bluetooth и Wi-Fi и обнаружим корень моей проблемы — прерывающегося звука.
Читать дальше →

Linux pipes tips & tricks

Reading time8 min
Views194K

Pipe — что это?


Pipe (конвеер) – это однонаправленный канал межпроцессного взаимодействия. Термин был придуман Дугласом Макилроем для командной оболочки Unix и назван по аналогии с трубопроводом. Конвейеры чаще всего используются в shell-скриптах для связи нескольких команд путем перенаправления вывода одной команды (stdout) на вход (stdin) последующей, используя символ конвеера ‘|’:
cmd1 | cmd2 | .... | cmdN

Например:
$ grep -i “error” ./log | wc -l
43

grep выполняет регистронезависимый поиск строки “error” в файле log, но результат поиска не выводится на экран, а перенаправляется на вход (stdin) команды wc, которая в свою очередь выполняет подсчет количества строк.

Логика


Конвеер обеспечивает асинхронное выполнение команд с использованием буферизации ввода/вывода. Таким образом все команды в конвейере работают параллельно, каждая в своем процессе.

Размер буфера начиная с ядра версии 2.6.11 составляет 65536 байт (64Кб) и равен странице памяти в более старых ядрах. При попытке чтения из пустого буфера процесс чтения блокируется до появления данных. Аналогично при попытке записи в заполненный буфер процесс записи будет заблокирован до освобождения необходимого места.
Важно, что несмотря на то, что конвейер оперирует файловыми дескрипторами потоков ввода/вывода, все операции выполняются в памяти, без нагрузки на диск.
Вся информация, приведенная ниже, касается оболочки bash-4.2 и ядра 3.10.10.

Простой дебаг


Утилита strace позволяет отследить системные вызовы в процессе выполнения программы:
$ strace -f bash -c ‘/bin/echo foo | grep bar’
....
getpid() = 13726                   <– PID основного процесса
...
pipe([3,  4])                       <– системный вызов для создания конвеера
....
clone(....) = 13727                <– подпроцесс для первой команды конвеера (echo)
...
[pid 13727] execve("/bin/echo",  ["/bin/echo",  "foo"],  [/* 61 vars */] 
.....
[pid 13726] clone(....) = 13728    <– подпроцесс для второй команды (grep) создается так же основным процессом
...
[pid 13728] stat("/home/aikikode/bin/grep",   
...
Видно, что для создания конвеера используется системный вызов pipe(), а также, что оба процесса выполняются параллельно в разных потоках.
Читать дальше →

Карьера специалиста по безопасности

Reading time5 min
Views108K


Мы сейчас готовимся ко второй части хакерского турнира. Предвидя возможные вопросы от журналистов и людей, далёких от ИБ, хочу заранее рассказать, почему на выходе получатся далеко не хакеры, и как вообще выглядит карьера специалиста по безопасности.

Безопасник сегодня, грубо говоря, может и перекладывать бумажки, и ходить по периметру с радиоборудованием, и составлять планы Disaster Recovery, и непосредственно заниматься исправлением дыр в софте. Специализаций очень много. Все зависит от конкретной организации: ее размера, типов защищаемой информации, используемых технологий и так далее. Понятно, что интереснее всего работа там, где необходима реальная безопасность, а не фиктивная (бумажная), есть высокий уровень автоматизации.

Давайте посмотрим, откуда берутся и как получаются такие специалисты.
Читать дальше →

Проект «Руби» — новый LTE-роутер: что внутри, и как мы его разрабатывали

Reading time8 min
Views64K


Привет!
Моя работа – разработка продуктов в Yota Devices. Мы выпустили новый LTE-роутер, в котором отшлифовали всё до мелочей. Разработка железа велась в России, низкоуровневое ПО наше (поверх Qualcomm SDK), плата совместно с производителем на Тайване, антенны — наш финский отдел (наши инженеры делали антенны большинства трубок Nokia).



Думаю, вам будет интересно узнать, как шла разработка. Начну с описания устройства. Во-первых, это роутер, который принимает сигнал 4G, 3G или 2G и раздаёт Wi-Fi. Во-вторых, Ruby (так называется устройство) может вставляться в USB и работать как привычный LTE-модем. В-третьих, роутер может работать и без внешнего питания. Внутри есть аккумулятор, который позволяет работать в машине, в парке, на даче или просто раздавать интернет из рюкзака при прогулке.

Осторожно, под катом трафик — много фотографий
Читать дальше →

«Разработка ядра Linux — это общение в клубе по интересам»

Reading time14 min
Views30K
Наш архитектор департамента серверной виртуализации Павел Емельянов дал интервью журналу «Системный администратор». Мы решили опубликовать здесь его интервью, в котором он рассказал о проекте CRIU, о том, как команда разработчиков работает с Linux-сообществом и с Линусом Торвальдсом, и об изменениях, которые могут произойти в области виртуализации в ближайшие годы.
image

Читать дальше →

локальная компиляция без лагов

Reading time2 min
Views8.4K
Abstract: использование cgroups для ограничения прожорливости компилятора по процессору и диску.

Лирика


Дано:
программист 1шт,
ноутбук с ноутбучным диском на 5200 rpm — 1шт,
исходных файлов на хаскеле 300 шт
Файлы coffee-script (будущий JS) — 300 шт
время компиляции — 40 минут.

Задача: компилировать в бэкграунде не ставя всю систему в состояние «ад и погибель». Можно даже ценой увеличения времени сборки до 50-60 минут.

Решение?

cgroups

Читать дальше →

Об одной изящной конструкции

Level of difficultyMedium
Reading time7 min
Views77K

Введение


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

Распечатать в порядке возрастания все несократимые дроби, знаменатель которых не превосходит заданного числа $n, \, n \le 100$.

Когда я прочитал условие задачи до конца, она не показалась мне сложной (она таковой и не является). Первое, что пришло мне в голову — это просто перебрать все знаменатели от $2$ до $n$ и для каждого знаменателя перебрать числители от $1$ до знаменателя, при условии, что числитель и знаменатель взаимно просты. Ну, а затем остается отсортировать их по возрастанию.

Такое решение верное, и задача прошла все назначенные ей тесты. Однако мой преподаватель сказал, что задачу можно решить намного красивее. Так я и познакомился с замечательной конструкцией: деревом Штерна — Броко.
Читать дальше →

Каково быть слабым в математике

Reading time3 min
Views212K
Я, как учитель математики нередко разочаровываюсь в учениках. Они прогуливают. Они ленятся. Они плачут, словно младенцы, если у них отнять калькуляторы. Но хуже всего то, чего они не делают. Не задают вопросов. Не записывают. Не исправляют тесты, даже если это может повысить их общий балл. Разве их не волнуют их неудачи в учебе?



Существует много объяснений такого поведения: лень, равнодушие, отвлекающие внешкольные факторы и т.д. Но если спросите меня, то я назову более глубокую причину: незнание математики заставляет чувствовать себя глупо. А это неприятно.
Читать дальше →

Information

Rating
9,249-th
Location
Владивосток, Приморский край, Россия
Date of birth
Registered
Activity