Search
Write a publication
Pull to refresh
5
5
Владислав Щапов @phprus

Манул

Send message

Как и зачем создавать NginX-модуль — теория, практика, профит

Reading time18 min
Views17K


Василий Сошников (Mail.Ru)


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

Про память, теги и когерентность

Reading time20 min
Views9.1K

Тегированная память (tagged architecture) даёт экзотическую возможность отделить данные от метаданных. Цена за это не столь уж и велика (на первый взгляд), а потенциальные возможности впечатляют. Под катом попробуем разобраться.
Читать дальше →

Ведется массовая атака криптором Wana decrypt0r 2.0

Reading time7 min
Views230K

В настоящий момент можно наблюдать масштабную атаку трояном-декриптором "Wana decrypt0r 2.0"
Атака наблюдается в разных сетях совершенно никак не связанных между ссобой.



A ransomware spreading in the lab at the university (отсюда)


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


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

Процессор Intel Itanium официально умер

Reading time4 min
Views37K


Процессор Intel Itanium — микропроцессор на архитектуре IA-64 (EPIC), разработанный совместно компаниями Intel и Hewlett-Packard и представленный 29 мая 2001 года, то есть почти 16 лет назад. Из-за неудачного маркетинга и низких продаж этот процессор с огромными амбициями иронично называли Itanic, созвучно известному трансатлантическому лайнеру.

В своё время архитектуру IA-64 называли революционной. Она должна была заменить x86 в 64-битных серверах и настольных компьютерах. Но что-то пошло не так. Годы разработки и продвижения стоили компаниям Intel и Hewlett-Packard миллиарды долларов, но теперь их мучения подошли к концу. В четверг 11 мая 2017 года компания Intel начала поставки микросхемы Itanium 9700 (кодовое название Kittson) — это официально и окончательно последний чип семейства Itanium, подтвердили представители компании Intel.
Читать дальше →

Cloudflare объявил войну патентному троллю Blackbird. Награда $50 тыс. за помощь

Reading time4 min
Views16K
Патентные тролли остаются головной болью для американских ИТ-компаний. Очередной мишенью атаки профессиональных юристов, вооружённых интеллектуальной собственностью, стала известная фирма Cloudflare, которая предоставляет услуги CDN, информационной безопасности, DNS-сервисы и обратный прокси для миллионов сайтов в Интернете. 20 марта 2017 года патентный тролль Blackbird Tech LLC предъявил компании первый иск за нарушение патента.

Патентными тролями на жаргоне называют компании типа Non-Practicing Entities (NPE). Они не занимаются производственной деятельностью, а только проявляют активность в судах.

«Этот иск доставит нам неудобство. Он отнимет время, отвлечёт нас от работы и будет стоить денег. Патентные тролли вроде Blackbird Technologies (@bbird_tech) существуют для того, чтобы создавать такие неприятности, так что компании дают деньги, лишь чтобы они ушли», — пишет в корпоративном блоге Cloudflare.

Иски за нарушение смехотворных патентов получают многие компании, и в большинстве случаев предпочитают просто откупиться небольшой суммой, чтобы не морочить себе голову, и патентный тролль идёт дальше по списку. К чести Cloudflare, она не пошла по проторенной дорожке, а вместо этого объявила войну патентному троллю. Cloudflare считает, что это важное дело, потому что Blackbird представляет собой опасный образец «новой породы» патентных троллей.
Читать дальше →

Делаем любой объект потокобезопасным

Reading time30 min
Views77K
image

В этих 3-ех статьях я детально расскажу об атомарных операциях, барьерах памяти и о быстром обмене данными между потоками, а так же о «sequence-points» на примере «execute-around-idiom», а заодно постараемся вместе сделать что-нибудь полезное — умный указатель, который делает любой объект потоко-безопасным для любых операций с его членами переменными или функциями. А затем покажем как используя его достичь производительности высоко-оптимизированных lock-free алгоритмов на 8 — 64 ядрах.
Читать дальше →

Ускоряем std::shared_mutex в 10 раз

Reading time35 min
Views56K
В этой статье мы детально разберем атомарные операции и барьеры памяти C++11 и генерируемые ими ассемблерные инструкции на процессорах x86_64.

Далее мы покажем как ускорить работу contfree_safe_ptr<std::map> до уровня сложных и оптимизированных lock-free структур данных аналогичных по функциональности std::map<>, например: SkipListMap и BronsonAVLTreeMap из библиотеки libCDS (Concurrent Data Structures library): github.com/khizmax/libcds

И такую многопоточную производительность мы сможем получить для любого вашего изначально потоко-небезопасного класса T используемого как contfree_safe_ptr<T>. Нас интересуют оптимизации повышающие производительность на ~1000%, поэтому мы не будем уделять внимание слабым и сомнительным оптимизациям.
Читать дальше →

Потокобезопасный std::map с производительностью lock-free map

Reading time21 min
Views34K

Примеры использования и тестирование потоко-безопасного указателя и contention-free shared-mutex


В этой статье мы покажем: дополнительные оптимизации, примеры использования и тестирование разработанного нами потоко-безопасного указателя с оптимизированным разделяемым мьютексом contfree_safe_ptr<T> – это эквивалентно safe_ptr<T, contention_free_shared_mutex<>>
В конце покажем сравнительные графики тестов нашего thread-safe указателя и одних из лучших lock-free алгоритмов из libCDS на процессорах Intel Core i5/i7, Xeon, 2 x Xeon.
Читать дальше →

Карикатурный взгляд на работу в IT

Reading time4 min
Views45K
Люди из других сфер деятельности склонны думать, что карьера в IT связана с высокими зарплатами, премиями за подписание контрактов, гибкими графиками и современными офисами, в которых есть столы для пинг-понга, кофейные аппараты и нелимитированная еда для сотрудников.

Но трудолюбивые IT-специалисты знакомы и с обратной стороной медали. Изменения в IT-индустрии происходят «как в скороварке», зарплаты и возможности трудоустройства изменяются по прихоти рыночных циклов. Умения, востребованные сегодня, уже завтра становятся тяжким бременем, а угроза аутсорсинга предстает перед каждым, казалось бы, защищенным сотрудником.

Взлеты и падения на рынке труда в IT за первые 50 лет его существования предоставили карикатуристу Джону Клосснеру множество идей. Давайте взглянем в прошлое и посмотрим, что изменилось (и не изменилось) за эти годы.

Февраль 2013: Управление ожиданиями



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

Как удалить свой IP из чёрного списка Gmail

Reading time10 min
Views62K

Если ваши пользователи перенаправляют почту на Gmail, то они вероятно перенаправляют и спам. Gmail не волнует, что почта была перенаправлена. Их системы видят, что ваш сервер присылает спам, и заносят его в чёрный список.

Проблемы с чёрным списком Gmail? Вы пришли по адресу.

Используя описанный ниже процесс, мы успешно разрешили почти все случаи включения в чёрный список Gmail, с которыми сталкивались.
Читать дальше →

Как сделать генерацию LaTeX и PDF в Sphinx

Reading time6 min
Views21K
Когда мы полтора года назад внедряли у себя генератор документаций Sphinx, перед нами стояла задача генерировать PDF. Дело оказалось весьма непростое. Готовых инструкций “бери и делай” на ресурсах не было. Мы пошли методом проб и ошибок. Через 3 дня мучений мы умели генерить PDF с нужным нам оформлением.

Сделали и забыли — работает же. Пока не случилась проблема со шрифтами. Снова намучились и снова решили. Но что примечательно — с тех пор готовой инструкции по генерации в PDF на просторах интернета не появилось. Поэтому выкладываю нашу. Внутри алгоритм с комментариями и файлами шаблона, особенностями ReST для LaTeX, которые мы собрали опытным путём.



Статья для тех, кто уже использует Sphinx, но имеет проблемы с LaTeX или PDF. Если вы только рассматривает Sphinx как инструмент документирования, будет полезно представлять, как готовить и подавать документацию в этих форматах.
Читать дальше →

DNS glue records – что такое и почему они так важны?

Reading time3 min
Views29K
Служба DNS, невидимая обычному пользователю, периодически оказывается в фокусе интереса IT-специалистов. По разным поводам. Особенно актуальной эта тема становится в периоды, когда основные провайдеры DNS подвергаются DDoS-атакам. Именно тогда, когда DNS становится частично неработоспособной, приходит понимание, что DNS – это основа, костяк всей структуры интернета.

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

  • Реестры доменов
  • Глобальные домены верхнего уровня (gTLD)
  • Различные национальные домены верхнего уровня (ccTLD)
  • И растущий с каждым годом список всех прочих доменов высшего уровня (.space, .photography и так далее)

Все это делает и так не простую систему еще более сложной.
Читать дальше →
23-24 мая 2017 года в главном здании Академии наук в Москве пройдёт четвёртая конференция разработчиков российских операционных систем OS Day 2017. Мы встретились с участниками и спикерами и поговорили с ними о самой конференции, о российских OS, о кадровом голоде и перспективах отечественной разработки. Также нам удалось обсудить положение дел в нескольких российских компаниях, создающих свои операционные системы. Но обо всём по порядку.
Читать далее

2038: остался всего 21 год

Reading time4 min
Views43K
Jonathan CorbetПорой кажется, что на фронте борьбы с проблемой 2038 года наступило относительное затишье. Однако время идет, и тот день, когда 32-битные значения типа time_t больше не смогут корректно отображать даты, наступит уже меньше чем через 21 год. Этот срок может показаться большим, однако сравнительно долгий жизненный цикл многих встраиваемых систем подразумевает, что некоторые из них, будучи введенными в строй в наше время, все еще будут работать, когда наступит критический момент. Арнд Бергманн — один из основных разработчиков, занимающихся этой проблемой. На конференции Linaro Connect 2017 он поделился новостями о текущем положении дел в этой области.
Читать дальше →

Контейнеры Docker немного увеличивают энергопотребление сервера

Reading time3 min
Views11K

Энергопотребление компьютера с ОС Linux и сервисом Docker без всякой нагрузки (без загрузки контейнера)

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

Поскольку в контейнерах не работают одновременно два ядра операционной системы, как в виртуальных машинах, то казалось бы, что энергопотребление у них должно быть такое же, как при работе обычной операционной системы. Но это не так. Cравнительное тестирование Linux и Docker показало, что энергопотребление контейнеров Docker чуть выше.
Читать дальше →

3D-моделирование и высокопроизводительные вычисления (HPC) в разработке новых продуктов

Reading time3 min
Views1.8K
Трехмерное моделирование все активнее используется в промышленности для разработки и визуализации новых решений, повышения их качества и производительности, снижения количества дефектов и серьезного сокращения времени разработки. Билл Маннел, вице-президент по высокопроизводительным решениям в категории серверов HPE, говорит о роли ИТ-инфраструктуры в процессе разработки новой продукции.

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

Проблемы со скоростью выполнения системных вызовов «gettimeofday» и «clock_gettime» в AWS EC2

Reading time8 min
Views6.5K

Кадр из фильма «Матрица: Революция»


В этой статье мы подробно рассмотрим детали одной интересной находки: два часто используемых системных вызова (gettimeofday, clock_gettime) в AWS EC2 выполняются очень медленно.


В Linux реализован механизм по ускорению этих двух часто используемых системных вызовов, благодаря которому их код выполняется в пространстве пользователя, что позволяет избежать переключениям в контекст ядра. Это сделано с помощью предоставляемой ядром виртуальной общей библиотеки (virtual shared library), которая отображается в адресное пространство всех запущенных программ.


Два вышеназванных системных вызова не могут использовать vDSO (virtual Dynamic Shared Object) в AWS EC2, поскольку виртуализированный источник временных меток (virtualized clock source) в xen (и некоторых конфигурациях kvm) не поддерживает получение информации о времени через vDSO.


Обойти эту проблему не получится. Можно поменять источник информации о времени на tsc, но это небезопасно. Далее мы рассмотрим вопрос более подробно и проведем сравнительное тестирование с помощью microbenchmark.

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

Поиск неисправностей с помощью WinDbg, Sos и Sosex

Reading time15 min
Views13K


Изображение: Julien Dumont, Flickr


К сожалению, иногда случаются ситуации, когда система перестает работать или начинает безудержно потреблять ресурсы, а логи и системные метрики не могут помочь. Ситуация еще усугубляется тем, что на системе в продакшене нет Visual Studio или какого-либо отладчика, невозможно поотлаживаться удаленно. Чаще всего даже нет возможности получить доступ этой машине. В данном случае единственным решением является анализ дампа памяти процесса. Я хочу описать несколько общих сценариев поиска проблем на таких дампах. Это поиск взаимоблокировок, утечек памяти и высокого потребления процессорных ресурсов.

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

Внутренние механизмы ТСР, влияющие на скорость загрузки: часть 2

Reading time14 min
Views38K


В первой части мы разобрали «тройное рукопожатие» TCP и некоторые технологии — TCP Fast Open, контроль потока и перегрузкой и масштабирование окна. Во второй части узнаем, что такое TCP Slow Start, как оптимизировать скорость передачи данных и увеличить начальное окно, а также соберем все рекомендации по оптимизации TCP/IP стека воедино.
Читать дальше →

Как я сделал самый быстрый ресайз изображений. Часть 2, SIMD

Reading time15 min
Views28K

Это продолжение цикла статей о том, как я занимался оптимизацией и получил самый быстрый ресайз на современных x86 процессорах. В каждой статье я рассказываю часть истории, и надеюсь подтолкнуть еще кого-то заняться оптимизацией своего или чужого кода. В предыдущих сериях:


Часть 0
Часть 1, общие оптимизации


В прошлый раз мы получили ускорение в среднем в 2,5 раза без изменения подхода. В этот раз я покажу, как применять SIMD-подход и получить ускорение еще в 3,5 раза. Конечно, применение SIMD для обработки графики не является ноу-хау, можно даже сказать, что SIMD был придуман для этого. Но на практике очень мало разработчиков используют его даже в задачах обработки изображений. Например, довольно известные и распространенные библиотеки ImageMagick и LibGD написаны без использования SIMD. Отчасти так происходит потому, что SIMD-подход объективно сложнее и не кроссплатформенный, а отчасти потому, что по нему мало информации. Довольно просто найти азы, но мало детальных материалов и разбора реальных задач. От этого на Stack Overflow очень много вопросов буквально о каждой мелочи: как загрузить данные, как распаковать, запаковать. Видно, что всем приходится набивать шишки самостоятельно.

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

Information

Rating
379-th
Location
Пермь, Пермский край, Россия
Date of birth
Registered
Activity