Обновить
256K+

Linux *

Пишем под *nix

347,17
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Сломать контроль ресурсов в контрольных группах Linux. Часть 1

Время на прочтение9 мин
Охват и читатели5.2K

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

Читать далее

Найти и уничтожить: как Clickhouse удаляет собственный код из памяти и переключается на использование Huge Pages

Время на прочтение8 мин
Охват и читатели9.8K

В Clickhouse есть интересный код: при вызове одной функции происходит перевод области памяти исполняемого кода программы на использование Huge Pages. В процессе весь код программы копируется на новое место, память, использовавшаяся изначально для кода программы возвращается ОС, а потом запрашивается снова. Эта статья основана на соответствующей части доклада с Я.Субботника.

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

Читать далее

Сумачечая производительность LINQ в .Net7

Время на прочтение3 мин
Охват и читатели16K

Исторически так сложилось, что LINQ взыскал "сомнительную" репутацию за его скромную производительность. LINQ медленный, аллоцирует память, сложно читается, поэтому обычно его используют как инструмент запросов к БД и то, зачастую сложные запросы легче написать на SQL. Даже на собеседованиях джунов просят не использовать LINQ в алгоритмах.

Однако в .NET 7 всё будет по-другому...

Подробней...

ОС Аврора 4.0.2 для разработчиков: обзор и примеры исходного кода

Время на прочтение18 мин
Охват и читатели30K

Релиз ОС Аврора 4.0.2 — первый сертифицируемый выпуск четвёртого поколения операционной системы, именно он теперь будет использоваться на устройствах в актуальных проектах.

В этой статье мы расскажем о ключевых нововведениях и детально рассмотрим некоторые важные для разработчиков изменения (изоляцию приложений, валидацию и подписание пакетов). На примере приложения «Push Receiver» мы разберём обновлённую регистрацию D-Bus служб и покажем, как адаптировать приложение под ОС Аврора 4.0.2 с фокусом на важные особенности исходного кода приложений для нового поколения операционной системы.

Видеообзор основных нововведений Аврора 4.0

Читать далее

Время — иллюзия, время Unix — иллюзия вдвойне…

Время на прочтение13 мин
Охват и читатели40K

Как вы хорошо знаете, в Unix-системах мы измеряем время как количество секунд, прошедших с «эпохи»: 00:00:00 UTC 1 января 1970 года. Немало людей сильно разозлилось из-за этого, да и вообще, общественное мнение сочло это ошибкой.

Во-первых, это определение основано не на чём-то разумном, например, на объективной частоте колебаний атома цезия-133, а на удобной доле времени полного оборота одного большого камня вокруг собственной оси.

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

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

Сертификаты K8S или как распутать вермишель Часть 2

Время на прочтение6 мин
Охват и читатели6.8K

Всем привет. Меня зовут Добрый Кот Telegram.

От коллектива FR-Solutions и при поддержке @irbgeo Telegram : Продолжаем серию статей по сертификатам k8s.

Читать далее

Linux: «Бесплатная» RAM за счет процессора

Время на прочтение2 мин
Охват и читатели62K

Если вы вдруг оказались с ноутом, в котором RAM распаяна, или все слоты уже использованы, или просто нет возможности добавить еще одну планку памяти, то существует простое решение, имя ему zram.

Я не буду подробно описывать все прелести zram, в интернете достаточно много информации о том, что это такое и как можно использовать. Здесь же я хочу предоставить короткую инструкцию, как быстро и просто "добавить" себе оперативной памяти.

Читать далее

Как работает Wine

Время на прочтение10 мин
Охват и читатели105K


Wine — это свободное программное обеспечение для запуска Windows-приложений на нескольких POSIX-совместимых операционных системах, включая Linux, macOS и BSD.

Если вы любите Linux, то наверняка когда-то запускали Wine. Возможно, для какой-то «важной» программы Windows, у которой нет аналога под Линуксом, или поиграться. Забавный факт: даже Steam Deck от Valve запускает игры через оболочку на основе Wine (она называется Proton).

За последний год я намучился с отладчиком, который позволяет одновременно дебажить и Wine, и Windows-приложение в нём. Разобраться во кишочках Wine оказалось очень интересно! Я-то раньше много им пользовался, но никогда не понимал механику целиком. Можно взять файл Windows — и просто запустить его в Linux без каких-либо изменений. Если вы хотите знать, как это сделано, добро пожаловать под кат.
Читать дальше →

UNIGINE 2.16: Asset Store, Vulkan и DX12, Даблы и Марс в Community, интеграция с ROS, .NET 6, новый менеджер окон

Время на прочтение4 мин
Охват и читатели3.9K

Состоялся релиз 2.16: мы внедрили поддержку DirectX 12 и Vulkan API, открыли Asset Store, добавили даблы и демо Марса в Community SDK, улучшили рендеринг (отражения, свечение, размытие при движении, эффекты камеры и др.). Появились новые SDK-браузер, редактор текстур и менеджер окон, и много другого полезного.

Без лишней скромности, этот релиз открывает новую главу в развитии платформы UNIGINE.
Начнем с самого интересного.

Читать далее

Java и низкая задержка

Время на прочтение8 мин
Охват и читатели9.3K
Источник

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

Существуют методики разработки Java-приложений, которые соответствуют требованиям к производительности (или даже превосходят их) приложений, созданных на языках, традиционно применяемых для этой цели. Однако даже этого может быть недостаточно, чтобы обеспечить наилучшую производительность с точки зрения задержек. Java-приложениям по-прежнему приходится полагаться на операционную систему в вопросе предоставления доступа к оборудованию. Обычно чувствительные к задержке приложения (часто называемые «приложениями реального времени») лучше всего работают, когда имеют практически прямой доступ к оборудованию, то же самое относится и к Java. В этой статье я познакомлю вас с методиками, которые можно применять, когда мы хотим, чтобы приложения максимально эффективно задействовали системные ресурсы.
Читать дальше →

Фаззинг по-русски на практике: crusher, Astra Linux

Время на прочтение6 мин
Охват и читатели13K

Привет, Хабр! Меня зовут Дима, я занимаюсь тестированием безопасности операционной системы Astra Linux в группе компаний «Астра». В статье я расскажу о фаззинг-тестировании, которое помогает обнаружить слабые места программ методом подачи на их входные интерфейсы различных наборов данных, при обработке которых ПО может начать вести себя нештатно или выйти из строя.

Читать далее

DIY-одноплатник или OrangePi на минималках

Время на прочтение14 мин
Охват и читатели22K

Некоторое время назад Arduino казалось какой-то непонятной магией когда только узнал про нее. Потом быстро перешел к самим микроконтроллерам. Позже, работая программистом микроконтроллеров, захотелось чего-то большего и я уже смотрел в сторону линукса и одноплатных компьютеров. В руки попал Raspberry Pi, но это готовый продукт с определенной периферией (не хочу HDMI, хочу RGB LCD) и некоторое время спустя я уже думал как сделать что-то подобное самому.

Читать далее

Linux Kernel 6.0: что нового «выросло» в ядре?

Время на прочтение4 мин
Охват и читатели22K

На днях на Хабре публиковалась новость о том, что Торвальдс представил новый релиз ядра Linux, который получил номер 6.0, вместо, например, 5.20. Противники такой нумерации, конечно, есть, но Торвальдс особо не обращает на них внимания.

Но сегодня поговорим не про нумерацию версий, а про подробности самого релиза. Среди самых заметных изменений — оптимизация менеджера задач, верификация корректности ядра, драйвер ublk, поддержка асинхронной буферизованной записи в XFS и ряд других дополнений и обновлений. Подробности — под катом.
Читать дальше →

Ближайшие события

Импортозамещение VR-а клавиатуре покоя не даёт

Время на прочтение12 мин
Охват и читатели3.1K

Давным-давно, ... в общем появился у Sony PlayStation шлем VR. Штука оказалась интересная и позволяла не только играть в vr-игры, но и смотреть фильмы.

Правда, сразу выяснились некоторые "тонкости": нормальное использование возможно было только при использовании с Sony PlayStation (что, в общем-то, очевидно) и через специализированную программу Rad (бывший LittlStar). Причём особого разнообразия программ-проигрывателей небыло, использование же программы Rad требовало оплаты подписки. Сначала всё было хорошо: и подписка платилась, и кино смотрелось. Потом появились санкции и, вдруг, оказалось, что заплатить из России нельзя. И вообще вы ничего не можете, пока "... until those restrictions and sanctions have been lifted ...".

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

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

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

Для мнеленьчитать результат здесь.

Читать далее

От Web до Desktop за 2 недели: технология Electron на практике

Время на прочтение13 мин
Охват и читатели15K

Если у вас есть компьютер и вы используете его по назначению, то скорее всего вы так или иначе работали с приложениями на Electron (даже если об этом не знали).

Меня зовут Сергей Володин, я руковожу командой разработки VK WorkMail. В этой статье я расскажу, как на основе Electron мы за две недели создали PoC кроссплатформенного настольного приложения Почты, что узнали о технологии и к каким выводам пришли.

Читать далее

Как хакнуть что угодно с помощью GNU Guix

Время на прочтение5 мин
Охват и читатели5.9K

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

Читать далее

Пособие по программированию модулей ядра Linux. Ч.7

Время на прочтение25 мин
Охват и читатели16K

Заключительная часть последней версии руководства по созданию модулей ядра от 02 июля 2022 года. Здесь мы рассмотрим обработку прерываний, криптографию, стандартизацию интерфейсов с помощью модели устройства, а также разберём принцип работы драйвера виртуального устройства ввода и возможность внесения в модуль некоторой оптимизации. В завершение же я укажу на пару неявных, но важных нюансов, а также дам рекомендации по дальнейшему погружению в тему программирования ядра.
Читать дальше →

Работаем с pdf из контекстного меню файлового менеджера

Время на прочтение4 мин
Охват и читатели6.8K

Замечательный файловый менеджер Dolphin всем хорош. И две панели, и разнообразные контекстные меню ускоряющие обработку всевозможных команд и заданий. Но что делать если нужно простенько и быстро собрать несколько одностраничных pdf-файлов?

Узнать больше

Защита контейнеров с помощью фильтров Seccomp

Время на прочтение7 мин
Охват и читатели4.3K

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

Пособие по программированию модулей ядра Linux. Ч.6

Время на прочтение9 мин
Охват и читатели12K

Очередная часть последней версии пособия по созданию модулей ядра от 2 июля 2022 года. В ней мы познакомимся с понятием tty, представляющим альтернативу макросу print, напишем модуль для мигания светодиодами клавиатуры, а также разберем тему планирования задач с помощью тасклетов и очередей заданий.
Читать дальше →