Рубрика «оптимизация» - 14

Бывает, чтобы заглянуть в подшипник, нужно разобрать полстанка, и всё это — ради профилактики дефекта. Зачастую бывает, что до того, как что-то реально поломается, узел начинает издавать определённый звук. Замечали, что опытные водители на любую нетипичную вибрацию реагируют чутко и с подозрением? Точно так же и сотрудники наших производств знают, как должен «звучать» станок. Ещё из далёкого прошлого нам достался вполне рабочий метод преобразования ультразвука в слышимый звук с помощью доски: бывает, рабочие со стажем лет так в 30 прикладывают обычный деревянный брусок на полметра к узлу и внимательно вслушиваются.

Где-то год назад на производстве ВИЗ-Сталь мы решили проверить, можно ли с помощью поиска ультразвуковых аномалий определить, что происходит с агрегатом в тот момент, когда он ещё только собирается начать ломаться.

Решение выглядит вот так:

Как мы ищем дефекты оборудования ультразвуковыми микрофонами - 1

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

Как мы ищем дефекты оборудования ультразвуковыми микрофонами - 2

Результаты получились очень интересные.
Читать полностью »

Веб-сайты уже давно перестали напоминать простые листы с текстовой информацией. Сейчас это полнофункциональные приложения, порой с очень сложной и тяжелой логикой. А чем больше логики и чем сложнее она становится, тем сильнее сайт начинает замедляться, что, естественно, не нравится пользователям. Сейчас это решают разными способами, например с помощью ленивой подгрузки, а более рисковые пробуют применять микрофронты или виджетные системы. Однако есть еще один вектор, на который пока никто не обращает внимания: использование многопоточности в браузере.

Читать полностью »

С детских лет меня очень интересовали всякие канцелярские и бюрократические вещицы. Я мог часами простаивать у прилавков магазина канцтоваров, глядя на витрины с разнообразными притягательными и волшебными предметами. Особое уважение мне внушали солидные блокноты большого формата, ежедневники, календари-планеры и другие подобные издания, в которых нужно было что-то заполнять и записывать. Помню, что особенно меня поражала страница, которая называлась «Дела на год». Я всё думал: как же можно что-то планировать на целый год вперёд?

Читать полностью »

Выжимаем все соки: PGO Оптимизация ядра Linux - 1


Сложность вычислительных задач и систем растёт с каждым днём. Для бизнеса ускорение кода даже на пару процентов даёт улучшение производительности, заметное снижение издержек и уменьшение задержки(latency). В первую очередь это касается мобильных и встраиваемых систем, высоконагруженных серверов, научных вычислений и 3D-графики. Так был разработан относительно перспективный и молодой метод оптимизации — Profile-Guided Optimization, далее просто PGO-оптимизация. Данный метод эффективно используют такие известные компании, как Google, Mozilla Foundation, Intel, Oracle, IBM и другие. Практически ни один современный веб-браузер не обходится без PGO-оптимизации.

Не так давно компанией Google был предложен набор патчей, включающий PGO-оптимизацию в ядре Linux. Мною был протестирован этот набор патчей в работе и доработан. Мне хотелось бы рассказать об этом методе оптимизации ядра Linux, о том, с какими трудностями можно столкнуться, и как их решить.

Если вас заинтересовала эта тема, вам интересно развитие технологий и тренды крупных компаний, то добро пожаловать под кат.
Читать полностью »

Введение

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

Предыстория

Данная история мало конструктивна, нужна скорее для понимания того, откуда возникла идея для оптимизации. Подробно о самом алгоритме и написано ниже.

Читать полностью »

Тоссим руду: очень неочевидная ИТ-задача - 1
Дробилка с выдвигаемым конусом

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

Это чистая оптимизационная задача: надо дробить в заданном коридоре и всем будет счастье. Проблема в том, что мы не знаем, слишком мелко мы дробим или слишком крупно. Конвейер огромный, едет со скоростью 3,15 метра в секунду, глазами люди там ничего отличить не могут. А нужно знать фракционный состав руды.

Советские инженеры это решили специальным ведром, которое зачерпывает руду раз в 24 минуты и кладёт в тестовый бункер. Через каждые пять зачерпываний бункер опустошается на несколько сит, просеивается, и после этого человек взвешивает, сколько руды осталось на каждом из них. Так мы получали данные механическим способом раз в два часа.

И тут такие приходим мы из ИТ и говорим производству: а хотите в реальном времени? Производство сначала крутит пальцем у виска, а потом говорит, что хочет. Потому что цена эффекта — 115 миллионов рублей в год.
Читать полностью »

Про правильный кокс, ИТ и эксперименты с ним - 1

Наша планета состоит из железа на 34,6 %, но оно в основном спрятано довольно глубоко. Большая часть доступного — в рудах в виде оксидов. При обработке руды происходит два процесса: нагрев (который переводит металл в жидкое агрегатное состояние) и связывание кислорода чем-то с более сильной химической связью, например, углеродом. Для этих целей идеально подходит уголь: он позволяет получить в простой печи нужную температуру и сам по себе во многом состоит из углерода. Сжигая оксиды железа внутри кучи угля, мы можем выплавлять металл чуть ли не в ямах в земле.

Увы, но для промышленного применения просто уголь не подходит. Ямы в земле обладают очень низким КПД. Для того чтобы повысить КПД, нужно увеличивать геометрический размер печи, а при увеличении её размера растёт высота столба топлива-восстановителя. В современных доменных печах у нас она может достигать 18 метров. А это очень толстый слой, но если этот слой не будет газопроницаем, то нарушатся конвекционные процессы, позволяющие происходить нагреву и восстановлению железа. И нарушится ещё несколько процессов, в частности, не будет правильного горения из-за отсутствия отвода газов.

Важна способность топлива восстанавливать CO2. Если она станет высокой, то углерод будет восстанавливать не металл, а превращать перегоревшую CO2 в CO, что резко ухудшит процесс выплавки. Кокс помогает и горению и восстановлению. Он делается нагревом смеси углей при 1000+ °C без доступа кислорода, когда смесь сначала переходит в пластическое состояние, а потом частицы начинают спекаться между собой.

Проблема только в том, что кокс исторически готовился на основании экспертного мнения технологов (основанного на опыте и не всегда системного с точки зрения математики). Примерная формула есть, а точная — только в голове у технолога с 40-летним стажем в виде интуитивного понимания.

Мы придумали способ, как соединить экспертное знание с математикой.
Читать полностью »

Как я уже писал ранее, на FPS в Flame в основном влияют операции, производимые на CPU. Если в вашей игре достаточно много взаимодействующих объектов, то одной из самых дорогих операций будет определение столкновений. Настолько дорогой, что на экране performance-метрики она закроет собой любые другие неоптимизированные участки.

Сами авторы Flame отлично осознают, что их алгоритм – не идеальный, а просто «дающий достаточную производительность». Достаточна она, видимо, для случаев, когда у вас всего объектов 10, не более. Если же у вас что-то более сложное – тогда приятного чтения!

Проблемы алгоритма Flame

Читать полностью »

После написания первой статьи про FizzBuzz (которая неожиданно для меня стала выбором редакции на Технотексте 2021) у меня появлялись мысли о том, что можно бы еще ускорить, но все время было не до того. И тут мне прилетает перчатка.

Продолжаем разгонять FizzBuzz - 1

Так что пришлось расчехлить верный GCC, чтобы помериться кодом с @ChePeter.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js