Pull to refresh
0
0
Антон @KEINrus

Системный Администратор

Send message

Почему MMAP не лучший выход

Level of difficultyMedium
Reading time23 min
Views6K

Доступ к файлам через отображение-в-память (mmap) — это способность некоторых операционных систем отобразить содержимое какого-либо файла в адресное пространство программы. Сама программа получает доступ к содержимому файла через указатели, как если бы сам файл был бы целиком загружен в оперативную память. Операционная система прозрачно загружает части файла в оперативную память, и автоматически выгружает их, когда памяти не хватает.


MMAP захватила умы программистов СУБД на многие десятилетия, как альтернатива буферу данных. И вот здесь следует отметить, что в mmap имеются серьёзные проблемы с корректностью и скоростью работы с данными в современных СУБД. В реальности, некоторые известные СУБД сперва использовали mmap для работы с "больше-чем-вмещается-в-память" базами данных, но вскоре обнаружили эти скрытые ограничения, которые принудили их к самостоятельному управлению файловым вводом/выводом, после заметных трат на инженерные исследования. В этом смысле mmap и СУБД подобны сочетанию кофе и острой пищи: неудачное сочетание, которое не очевидно, пока сам не попробуешь.


Покуда разработчики по прежнему пытаются использовать mmap в новых СУБД, мы написали эту статью, чтобы предупредить остальных, что mmap это не подходящая замена привычному буферу. Далее мы обсудим основные недостатки mmap, а также покажем явные ограничения производительности, которые мы обнаружили в наших экспериментах. На основании этих находок мы поделимся рецептами, когда разработчикам СУБД следует избегать mmap для реализации файлового ввода/вывода.

Читать дальше →
Total votes 24: ↑24 and ↓0+34
Comments7

Что обозначает вывод «ss -s»

Reading time4 min
Views12K
На смену утилите netstat пришла утилита ss и очень часто вывод агрегированной (суммарной) информации «ss -s» (или «ss --summary») используется для нужд мониторинга. Однако, что же означает каждое из выводимых полей?

# ss -s
Total: 15046 (kernel 16739)
TCP:   39306 (estab 11458, closed 25092, orphaned 110, synrecv 0, timewait 24929/0), ports 0

Transport Total     IP        IPv6
*	  16739     -         -        
RAW	  0         0         0        
UDP	  15        5         10       
TCP	  14214     1214      13000    
INET	  14229     1219      13010    
FRAG	  0         0         0        

Как выяснилось, тут есть тонкости.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments15

Логи из docker compose / docker swarm в Grafana / Loki быстро и просто

Level of difficultyMedium
Reading time19 min
Views28K

Хочу показать как развернуть готовый и полностью работающий стек мониторинга Grafana + Loki + Prometheus + Pushgateway + Promtail за пару минут (в прямом смысле этого слова), без необходимости устанавливать на машину дополнительное ПО (плагины docker и плагины логирования) и собирать логи со всех контейнеров машины (или сразу со всех нод, в случае с swarm).

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments21

9 лучших практик развертывания приложений высокой доступности на платформе OpenShift

Reading time11 min
Views8.9K

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

Читать дальше: 9 лучших практик...
Total votes 3: ↑3 and ↓0+3
Comments1

PostgreSQL. Тестируй то, тестируй это, тестируй не боясь

Reading time24 min
Views15K

Как:

1. тестировать на продуктивных данных и не бояться

2. получить 100 копий продуктивной БД и не создавать 100 серверов

3. узнать какой будет план запроса на продуктиве

4. дать каждому разработчику свою БД с данными и не разориться на оплате дисков

Если вам это нужно и у вас PostgreSQL, то эта статья для вас.

Читать далее
Total votes 24: ↑24 and ↓0+24
Comments4

Пишем наш первый модуль для ядра Linux

Reading time14 min
Views20K
image

Пожалуй, ядро Linux сегодня – это самый вездесущий (и по-прежнему недооцененный) программный код. На нем основаны все дистрибутивы Linux (что очевидно), но это далеко не все. Кроме того, на ядре Linux работает огромная масса встроенного ПО практически везде. У вас есть микроволновка? Вероятно, она работает на ядре Linux. Посудомоечная машина? Тоже. Вы состоятельный человек и приобрели автомобиль Tesla? Может быть, вы найдете в ней какие-то баги и исправите их, в таком случае, можете отправить патч им на Github, где лежит код для модели S и модели X. Электронная начинка МКС, благодаря которой станция не падает на Землю смертельно опасным и разрушительным огненным болидом — конечно же, тоже работает под Linux. Ядро легковесно. Наверное, именно поэтому оно так хорошо работает в условиях низкой гравитации.
Читать дальше →
Total votes 24: ↑20 and ↓4+20
Comments23

Начало работы с управлением политиками Kubernetes и Kyverno на платформе контейнеров OpenShift

Reading time6 min
Views4.1K
image

В этой статье речь пойдёт о том, как начать работу с Kyverno на платформе контейнеров OpenShift, с помощью которой можно повысить безопасность, легко внедрять передовые технологии и решать другие непростые задачи.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments0

Обучение алгоритма генерации текста на основе высказываний философов и писателей

Reading time7 min
Views4.8K

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

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

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments2

Предотвращение крашей в медиаконтейнерах

Reading time9 min
Views5.8K

Данная статья предназначена для тех, кто заинтересован в сохранении воспроизводимости своих записей на случай внезапного системного сбоя. Далее будут описаны харатктерные особенности целых и поврежденных файлов, записанных в нескольких наиболее известных форматах как MP4, MOV, MKV, FLV, рассмотрены особенности изменений в структуре файлов при различных условиях записи.

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments5

WebRTC для всех и каждого. Часть 1

Reading time26 min
Views71K



Привет, друзья!


Представляю вашему вниманию первую часть перевода этой замечательной книги по WebRTC. Данная часть посвящена тому, что такое WebRTC, процессу сигнализации и установки соединения (первые 3 части оригинала).


Справедливости ради следует отметить, что на Хабре уже публиковался "вольный" перевод первых 2 частей оригинала (часть 1, часть 2), но автор по какой-то причине решил не продолжать. Я, свою очередь, решил начать с самого начала, без лишних вольностей и сокращений.


Ссылка на вторую часть перевода.


Если вам это интересно, прошу под кат.

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments6

Grafana as code, или как я перестал кликать мышкой в UI и полюбил grafonnet

Reading time15 min
Views34K

Когда мы в Tarantool столкнулись с задачей настройки мониторинга для сдачи проекта заказчику, мы решили её с помощью grafonnet. Это библиотека для написания дашбордов Grafana с помощью кода на языке jsonnet, которая заметно облегчила нам жизнь.


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


Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments7

Docker Swarm для самых маленьких

Reading time13 min
Views146K

Данная статья посвящена настройке и работе с Docker Swarm.

Swarm это стандартный оркестратор для docker контейнеров, доступный из «коробки», если у вас установлен сам docker.

Что нам потребуется для освоения:

Читать далее
Total votes 6: ↑4 and ↓2+2
Comments26

Разработка игры на Unity с нуля до релиза. Часть 4

Level of difficultyEasy
Reading time4 min
Views6.9K

Приветствую Хабр! ?

«Разработка игры с нуля до релиза» - это серии статьей, где я покажу, как создать свою игру с самого нуля до публикации в Google Play и Itch.io на ОС GNU\Linux. Часть 4

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments0

Визуализация данных с помощью веб-фреймворка Dash (часть 2)

Reading time3 min
Views5.1K

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

Но! Задачи, которые падают на нас ,не всегда просты и не всегда возможно ограничить себя  одной страницей на Дашборде. В этой статье я покажу, как создать многостраничный дэшборд, используя sidebar в качестве навигационного элемента, и наполнить страницы разного рода контентом.

Читать далее
Total votes 6: ↑5 and ↓1+4
Comments0

Рисуем красивые трейсбеки, перехватывая исключения в Python

Reading time10 min
Views14K

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

На пути к этой цели мы узнаем о том, как реализовывать и использовать собственные перехватчики исключений (exception hook), которые позволяют убрать из трейсбеков весь «информационный шум». Мы поговорим о том, как улучшить читабельность отчётов о трассировке стека, как выводить в них лишь то, что нужно для решения проблем с Python-кодом и с возникающими в процессе его работы исключениями. Кроме того, мы посмотрим на несколько потрясающих Python-библиотек, в которых имеются готовые к использованию, хорошо сделанные перехватчики исключений. Их можно использовать без необходимости написания собственного кода перехватчиков.

Читать далее
Total votes 27: ↑27 and ↓0+27
Comments1

cors-anywhere на чистом конфиге nginx

Reading time5 min
Views25K

Если вы сталкивались с CORS, то знаете всю ту боль, которую испытывает разработчик, когда нужно сходить к API на другом домене. Если конфигурация сервера не доступна для настройки, то использовали какое-нибудь решение на основе не менее популярного решения cors-anywhere.

Не одним CORS едины
Total votes 10: ↑9 and ↓1+9
Comments13

PostgreSQL Antipatterns: рекурсивные грабли на ровном месте, или Сказка о потерянном времени

Reading time2 min
Views10K

В моей практике ускорения SQL-запросов для PostgreSQL, в большинстве случаев, все сводится к применению типовых методик - их не особенно-то и много, и прочитать про большинство из них можно в моем профиле.

Но иногда обнаруживаются очень странные вещи в поведении этой, безусловно, отличной СУБД.

Все началось с запроса, который мне показали с диагнозом "необъяснимо тормозит"...

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments7

Прикручиваем авторизацию на основе KeyCloak к веб-приложению

Reading time14 min
Views75K

Жизненный цикл разработки корпоративного приложения в нашей компании привел меня к, по сути, банальной задаче - “прикручиванию” пользовательской авторизации к фронту приложения. Пользователями приложения должны быть сотрудники компании, а идентификационным провайдером должен стать корпоративный Active Directory (далее AD).

Было принято решение не работать с AD напрямую при авторизации сотрудников в корпоративных приложениях, а использовать для этого довольно удобный брокер авторизации – KeyCloak.

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments5

CatBoost, XGBoost и выразительная способность решающих деревьев

Reading time42 min
Views56K

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

Данный обзор охватывает сразу несколько тем. Мы начнем с устройства решающего дерева и градиентного бустинга, затем подробно поговорим об XGBoost и CatBoost. Среди основных особенностей алгоритма CatBoost:

• Упорядоченное target-кодирование категориальных признаков
• Использование решающих таблиц
• Разделение ветвей по комбинациям признаков
• Упорядоченный бустинг
• Возможность работы с текстовыми признаками
• Возможность обучения на GPU

В конце обзора поговорим о методах интерпретации решающих деревьев (MDI, SHAP) и о выразительной способности решающих деревьев. Удивительно, но ансамбли деревьев ограниченной глубины, в том числе CatBoost, не являются универсальными аппроксиматорами: в данном обзоре приведено собственное исследование этого вопроса с доказательством (и экспериментальным подтверждением) того, что ансамбль деревьев глубины N не способен сколь угодно точно аппроксимировать функцию y = x_1 x_2 \dots x_{N+1}. Поговорим также о выводах, которые можно из этого сделать.

Читать далее
Total votes 48: ↑48 and ↓0+48
Comments9

Бесплатные Oracle Cloud серверы и Mikrotik — Site-to-Site VPN

Reading time7 min
Views41K

Предоставление бесплатных серверов от малопопулярного облачного провайдера - это не новость. А новость в том, что теперь Oracle, вдобавок к двум едва живым бесплатным x86_64 серверам, открывает доступ к мощностям на ARM64 - для всех, даром, и пусть никто не уйдет обиженным!© Предложение по ARM значительно более производительное, чем на традиционных процессорах. Добавляя к этому отсальные бесплатные "плюшки", я задаюсь вопросом: а зачем я до сих пор плачу за VPS и держу собственный серверок в подвале?! Все это можно выкинуть если удастся надежно и безопасно связать дата центр с домашней сетью.

Читать далее
Total votes 22: ↑19 and ↓3+17
Comments104
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

DevOps, Site Reliability Engineer (SRE)