Представьте, что вам нужно ускорить работу огромной легаси-системы с 50 микросервисами, нагрузка на которую выросла в 2000 раз. При этом она обрабатывает затратные по времени операции, которые зависят друг от друга в плане данных.
Рубрика «высокая производительность» - 3
Ускоряем приложение: никаких фреймворков — только математика
2023-05-02 в 11:46, admin, рубрики: highload, Алгоритмы, Блог компании Конференции Олега Бунина (Онтико), Блог компании Почтатех, высокая производительность, высоконагруженные приложения, Микросервисная архитектура, микросервисы, оптимизация запросовЗахватывающая ловля багов, которые портили работу Unbound
2023-04-20 в 8:06, admin, рубрики: bpftrace, bug, DNS, gdb, load testing, Unbound, баги, Блог компании Яндекс, высокая производительность, нагрузочное тестирование, Серверное администрированиеПривет, меня зовут Сергей Качеев, я старший разработчик в отделе сетевой инфраструктуры Яндекса. Сегодня я расскажу целый сетевой детектив о том, как мы искали баг, который убивал DNS сервер Unbound. Приготовьтесь, он будет долгим.
«Чистый» код, ужасная производительность
2023-04-13 в 11:23, admin, рубрики: c++, Блог компании Sportmaster Lab, высокая производительность, Программирование, производительность, Совершенный код, чистый кодНа самом деле, большая доля этих правил не влияет на среду исполнения кода, который вы пишете. Подобные правила невозможно оценить объективно, да это и необязательно, ведь на этом этапе они достаточно произвольны. Однако есть правила «чистого» кода, на которые делают особый упор — это правила, которые можно измерить объективно, поскольку они влияют на поведение кода в среде исполнения.
Если посмотреть на список правил «чистого» кода и вытащить из него правила, которые действительно влияют на структуру кода, то мы получим следующее:
- Отдавайте предпочтение полиморфизму, а не «if/else» и «switch»
- Код не должен знать о внутреннем устройстве объектов, с которыми он работает
- Функции должны быть маленькими
- Каждая функция должна выполнять одну задачу
- Принцип «DRY» — Don’t Repeat Yourself («не повторяйся»)
Эти правила достаточно чётко формулируют то, как должен создаваться конкретный фрагмент кода, чтобы быть «чистым». Но я задам такой вопрос: если мы создадим фрагмент кода, соответствующий этим правилам, какова будет его производительность?
Читать полностью »
Основные аспекты наблюдаемости систем
2023-04-09 в 10:00, admin, рубрики: Grafana, observability, prometheus, ruvds_перевод, Блог компании RUVDS.com, высокая производительность, логирование, мониторинг систем, наблюдаемость, распределенные системыВ современной разработке ПО наблюдаемость (observability) является важнейшей концепцией, которая относится к способности получать представление о внутренних процессах сложных систем. Она подразумевает сбор данных из разных источников, таких как журналы, метрики и трейсы, с последующим их использованием для лучшего понимания функционирования системы, выявления проблем и их устранения. И в этой статье мы подробно разберём все аспекты реализации этой концепции.Читать полностью »
ArrayPool<T>: подводные камни
2023-03-30 в 15:04, admin, рубрики: .net, C#, memory management, pool, pooling, высокая производительность, Программирование
Автоматическая сборка мусора упрощает разработку программ, избавляя от необходимости отслеживать жизненный цикл объектов и удалять их вручную. Однако, чтобы сборщик мусора был полезным инструментом, а не главным врагом на пути к высокой производительности — иногда имеет смысл помогать ему, оптимизируя частые аллокации и аллокации больших объектов.
Для уменьшения аллокаций в современном .NET предусмотрены Span/Memory<T>
, stackalloc
с поддержкой Span
, структуры и другие средства. Но если без объекта в куче не обойтись, например, если объект слишком большой для стека, или используется в асинхронном коде — этот объект можно переиспользовать. И для самых крупных объектов — массивов, в .NET встроены несколько реализаций ArrayPool<T>
.
В этой статье я расскажу о внутреннем устройстве реализаций ArrayPool<T>
в .NET, о подводных камнях, которые могут сделать пулинг неэффективным, о concurrent-структурах данных, а также о пулинге объектов, отличных от массивов.
На что способен хороший отладчик
2023-03-18 в 20:16, admin, рубрики: c++, Visual Studio, высокая производительность, исследование, отладка, Программирование, чистый кодПорой приходится слышать: «Отладчики бесполезны, гораздо целесообразнее иметь дело с логированием и модульными тестами». Подозреваю, что многие из разделяющих такое мнение думают, будто отладчик только и может, что расставлять точки останова на определённых строках, пошагово просматривать код и проверять значения переменных. Притом, что любой годный отладчик действительно всё это может, на самом деле это только верхушка айсберга. Задумайтесь: мы уже вполне можем наткнуться на код, которому около 40 лет – наверняка же с тех пор что-то изменилось?
Tl;drЧитать полностью »
22 342 кратное ускорение загрузки геометрии в Unity
2023-02-27 в 12:37, admin, рубрики: 3d, unity, unity3d, высокая производительность, оптимизация, Работа с 3D-графикой, скорость, скорость прогрессаНемного истории
Меня зовут Артем Толстогузов, и я вхожу в группу анонимных Unity‑программистов.
У меня:
-
навязчивое желание переложить всю работу с CPU на GPU;
-
небольшой фетиш в области оптимизаций всего что только возможно;
-
хронический интерес к шейдерам, графическому пайплайну и технологиям;
О сетевой аварии в Яндексе
2023-02-13 в 10:14, admin, рубрики: Блог компании Яндекс, высокая производительность, инцидент, маршрутизация, облачные сервисы, Сетевое оборудование, Сетевые технологии, сети, яндексОсновной пик пришёлся на период с 17:03 до 17:50, когда общие потери трафика достигали 40%. Кроме того, в период с 17:03 до 17:13 наблюдалась практически полная потеря IPv6 трафика. Инцидент удалось устранить к 21:30.
Как это произошло и какие выводы мы из этого извлекли — ответим на эти вопросы и поделимся нашим опытом.
CAMM — то, что должно сделать ноутбуки ещё тоньше и быстрее
2023-02-04 в 8:01, admin, рубрики: apple, camm, DDR, dell, JEDEC, precision, so-dimm, timeweb_статьи, ZTE, Блог компании Timeweb Cloud, высокая производительность, дизайн, Компьютерное железо, Ноутбуки, ОЗУ, хранение данныхЗа последние два десятка лет появилось не так уж много инноваций в сфере дизайна памяти для ноутбуков. Уже как четверть века большой популярностью пользовались небольшие модули памяти с двухрядным расположением выводов, SO-DIMM (Small outline DIMM). В 2022 году Dell выпустила два ноутбука, Precision 7670 и 7770, которые дебютировали с новым форм-фактором для оперативной памяти, называемым CAMM (Compression Attached Memory Module).
После анонса ноутбуков Dell заявила, что Precision 7670 и 7770 будут самыми мощными среди профессиональных моделей. 16-дюймовый 7670 имеет толщину 0,98 дюйма, а 17-дюймовый 7700 — 1,13 дюйма, что является впечатляющими показателями для мобильных рабочих станций, оснащённых при этом выделенными графическими процессорами. И всё это стало возможным благодаря CAMM.
CAMM в настоящее время ратифицируется для общеотраслевого использования органом по стандартизации памяти, JEDEC. А окончательная спецификация должна быть опубликована позже в этом году. Розничные ноутбуки основанные на окончательной омологации CAMM появятся в 2024 году.
Выжимаем максимум из логики — сверхбыстрый, но прожорливый сумматор
2023-01-26 в 1:11, admin, рубрики: высокая производительность
ПЛИС-культ привет, FPGA хаб!
Давненько я не писал полноценных статей на хабре, всё больше как-то занимался организацией FPGA движа: всякими там новостными подборками, ютуб стримами по FPGA, организацией плисовых конференций и много чем другим.
Но всё новое — хорошо забытое старое, поэтому решил изложить в текстовом виде несколько идей, которые легли в основу стримов.
И в этой заметке предлагаю вам погрузиться в небольшое исследование c реализацией конвейеризованного многоразрядного сумматора всего с 1 уровнем логики, эдакого LUTа в сферическом вакууме, идеи которого, я уверен, найдут отклик в исследовательских работах начинающих адептов программируемой логики.