Как проверить переключение контекста в Linux
Это продолжение вчерашней статьи. Сегодня мы разберемся с настройкой переключений контекста и затюним и попытаемся понять какие процессы грузят проц. Читать в блоге.
Это продолжение вчерашней статьи. Сегодня мы разберемся с настройкой переключений контекста и затюним и попытаемся понять какие процессы грузят проц. Читать в блоге.
Teletype
Как проверить переключение контекста в Linux
В предыдущей статье мы обсудили принцип работы переключений контекста CPU. Кратко резюмируя, переключение контекста CPU — это основная...
🔥9👍1
40 стратегий оптимизации производительности MySQL
Рассматривайте эту статью как чек-лист, чтобы обратить внимание на то, что могло уйти из виду. Некоторые советы будут очевидны для опытных администраторов баз данных, но ничего же не мешает просто пройтись по списку, верно?
Рассматривайте эту статью как чек-лист, чтобы обратить внимание на то, что могло уйти из виду. Некоторые советы будут очевидны для опытных администраторов баз данных, но ничего же не мешает просто пройтись по списку, верно?
Teletype
40 стратегий оптимизации производительности MySQL
Начнем с общей оптимизации запросов. Многие из этих рекомендаций могут быть знакомы, но используете ли вы их на практике. Надеюсь, после...
🔥3🤡3👍2
Linux: xargs с несколькими параметрами
xargs — это полезная команда, которую можно использовать для передачи входных данных из stdin в качестве параметров другим командам. Также xargs может выполнять другие трюки, например, запускать команды параллельно и т. д. В этом примере покажу вам, как передать несколько параметров команде.
Создаём файл с параметрами
Создадим файл и сохраним его как params.csv
Используем параметр -n
Теперь введем команду ниже. Xargs получает параметр из каждой строки, $0 — первый параметр, а второй — $1
Что делать, если параметры не разделены пробелами? Xargs в Linux (в macOS нет) поддерживает параметр -d, позволяющий определить разделитель между параметрами. Предполагая, что файл параметров такой
Запустим xargs с параметром -d следующим образом:
Xargs — одна из самых полезных команд, она может использовать простые команды для многопроцессорных инструментов.
xargs — это полезная команда, которую можно использовать для передачи входных данных из stdin в качестве параметров другим командам. Также xargs может выполнять другие трюки, например, запускать команды параллельно и т. д. В этом примере покажу вам, как передать несколько параметров команде.
Создаём файл с параметрами
Создадим файл и сохраним его как params.csv
1 2
3 4
5 6
7 8
9 10
Используем параметр -n
Теперь введем команду ниже. Xargs получает параметр из каждой строки, $0 — первый параметр, а второй — $1
cat params.csv| xargs -n2 bash -c 'echo "$0" + "$1" '
1 + 2
3 + 4
5 + 6
7 + 8
9 + 10
Что делать, если параметры не разделены пробелами? Xargs в Linux (в macOS нет) поддерживает параметр -d, позволяющий определить разделитель между параметрами. Предполагая, что файл параметров такой
1 , 2
3 , 4
5 , 6
7 , 8
9 , 10
Запустим xargs с параметром -d следующим образом:
cat params.csv| xargs -d ',' -n2 bash -c 'echo "$0" + "$1" '
1 + 2
3 + 4
5 + 6
7 + 8
9 + 10
Xargs — одна из самых полезных команд, она может использовать простые команды для многопроцессорных инструментов.
👍27🔥4
2 статьи о диагностике Linux
Погружение в инструменты диагностики Linux. Часть 1 — sysdig
sysdig использует модуль ядра для перехвата системных вызовов и событий, что открывает новые возможности в плане диагностики. Можно расковырять практически все что происходит в системе. Можно использовать realtime‑диагностику или собрать трейс с системы за определенный период, обычно при проблемах достаточно до 5–30 секунд сбора данных.
Погружение в инструменты диагностики Linux. Часть 2 — top
Подробный разбор вывода утилиты top и на что там смотреть.
Погружение в инструменты диагностики Linux. Часть 1 — sysdig
sysdig использует модуль ядра для перехвата системных вызовов и событий, что открывает новые возможности в плане диагностики. Можно расковырять практически все что происходит в системе. Можно использовать realtime‑диагностику или собрать трейс с системы за определенный период, обычно при проблемах достаточно до 5–30 секунд сбора данных.
Погружение в инструменты диагностики Linux. Часть 2 — top
Подробный разбор вывода утилиты top и на что там смотреть.
🔥9👍3
PL/V8: JavaScript в PostgreSQL
PL/V8 — это расширение PostgreSQL, которое позволяет использовать JavaScript через движок V8 (тот самый, который стоит за Node.js). Это открывает массу возможностей:
🚀 Писать хранимые процедуры на JavaScript.
🚀 Выполнять сложную бизнес-логику прямо в базе данных.
🚀 Создавать триггеры, которые обрабатывают данные.
Подробнее в статье на Хабре
Репозиторий расширения на Гитхаб
PL/V8 — это расширение PostgreSQL, которое позволяет использовать JavaScript через движок V8 (тот самый, который стоит за Node.js). Это открывает массу возможностей:
🚀 Писать хранимые процедуры на JavaScript.
🚀 Выполнять сложную бизнес-логику прямо в базе данных.
🚀 Создавать триггеры, которые обрабатывают данные.
Подробнее в статье на Хабре
Репозиторий расширения на Гитхаб
👍5🤮2💩1👌1🤡1
Как перенести Linux Device Drivers на современные ядра
Для ОС на базе ядра Linux относительно простой точкой входа является написание своих модулей. Модули по своей сути — это драйверы устройств (символьные char device, блочные block device, сетевые network device и другие). В статье рассмотрены следующие классы устройств: char device, block device и network device.
Для ОС на базе ядра Linux относительно простой точкой входа является написание своих модулей. Модули по своей сути — это драйверы устройств (символьные char device, блочные block device, сетевые network device и другие). В статье рассмотрены следующие классы устройств: char device, block device и network device.
👍3💩2🤡1
Ревизор приехал: pg_anon проверяет, всё ли скрыто
Представьте, что вы редактируете документальный фильм о реальной исторической личности. У вас есть оригинальные видеозаписи, документы и интервью с очевидцами. Однако некоторые моменты содержат конфиденциальную информацию - номера телефонов, адреса, личные данные других людей. При подготовке фильма к показу вы размываете эти детали на видео, заменяете реальные имена и адреса, но сохраняете при этом всю важную историческую информацию и контекст. В результате зрители получают полноценный документальный фильм, в котором защищена приватность всех участников.
Именно такой подход реализует pg_anon для данных в PostgreSQL. В статье подробнее об этом инструменте.
Представьте, что вы редактируете документальный фильм о реальной исторической личности. У вас есть оригинальные видеозаписи, документы и интервью с очевидцами. Однако некоторые моменты содержат конфиденциальную информацию - номера телефонов, адреса, личные данные других людей. При подготовке фильма к показу вы размываете эти детали на видео, заменяете реальные имена и адреса, но сохраняете при этом всю важную историческую информацию и контекст. В результате зрители получают полноценный документальный фильм, в котором защищена приватность всех участников.
Именно такой подход реализует pg_anon для данных в PostgreSQL. В статье подробнее об этом инструменте.
👍9
Мысли вслух. Сколько потребляет памяти один запрос PostgreSQL?
В этой статье поднимается проблема как объективно посчитать размер потребляемой оперативной памяти конкретным запросом в PostgreSQL. И предлагается использовать для этого автоматическое нагрузочное тестирование. Читать дальше на Хабре.
В этой статье поднимается проблема как объективно посчитать размер потребляемой оперативной памяти конкретным запросом в PostgreSQL. И предлагается использовать для этого автоматическое нагрузочное тестирование. Читать дальше на Хабре.
👍5👎1
Сливаем отчетность американской Cyber League с помощью базовых утилит Linux
В этой статье автор рассказывает, как создать хакерское приложение, используя встроенный язык программирования Linux, и собрать базу данных участников западной "Национальной Киберлиги". Можно сказать, хакают хакеров! ;) Читать на Хабре.
В этой статье автор рассказывает, как создать хакерское приложение, используя встроенный язык программирования Linux, и собрать базу данных участников западной "Национальной Киберлиги". Можно сказать, хакают хакеров! ;) Читать на Хабре.
👍6🤡5🔥1
GRUB и параметры ядра в Linux
GRUB — это первый, кого видит твоя система после BIOS/UEFI. Он решает, какое ядро загружать, какие параметры передавать, и вообще, даст ли он тебе шанс на нормальный рабочий день или отправит в режим паники. Читать дальше.
GRUB — это первый, кого видит твоя система после BIOS/UEFI. Он решает, какое ядро загружать, какие параметры передавать, и вообще, даст ли он тебе шанс на нормальный рабочий день или отправит в режим паники. Читать дальше.
💩5👍4🤣2
Vim vs. Emacs: древняя битва, наполненная безумными фактами
Vim и Emacs — это, пожалуй, самый древний и легендарный «братский» конфликт в мире текстовых редакторов. Одни говорят: «Люди делятся на тех, кто знает Vim, и тех, кто знаком с болью и страданием». Другие возражают: «Emacs на самом деле полноценная операционная система, где просто не хватает хорошего текстового редактора».
В этой статье собраны любопытные (а местами и безумные) факты о Vim и Emacs.
Vim и Emacs — это, пожалуй, самый древний и легендарный «братский» конфликт в мире текстовых редакторов. Одни говорят: «Люди делятся на тех, кто знает Vim, и тех, кто знаком с болью и страданием». Другие возражают: «Emacs на самом деле полноценная операционная система, где просто не хватает хорошего текстового редактора».
В этой статье собраны любопытные (а местами и безумные) факты о Vim и Emacs.
🔥7👍4
Использование команд Telnet в Linux/Unix
Telnet (telecommunications network) — это сетевой протокол (работающий по TCP-соединению), предназначенный для ручного управления удаленными машинами с помощью команд консольного терминала.
С помощью Telnet команды вводятся на локальной машине, а выполняются на удаленной. То есть пользователь сперва вводит IP-адрес и порт (по умолчанию 23) удаленного сервера, после чего выполняет команды на нем.
Несмотря на то, что в наши дни чаще всего используется SSH, Telnet до сих пор остается популярным инструментом для управления удаленными хостами.
В этой статье рассмотрено базовое использование команд Telnet в операционных системах на базе Linux.
Telnet (telecommunications network) — это сетевой протокол (работающий по TCP-соединению), предназначенный для ручного управления удаленными машинами с помощью команд консольного терминала.
С помощью Telnet команды вводятся на локальной машине, а выполняются на удаленной. То есть пользователь сперва вводит IP-адрес и порт (по умолчанию 23) удаленного сервера, после чего выполняет команды на нем.
Несмотря на то, что в наши дни чаще всего используется SSH, Telnet до сих пор остается популярным инструментом для управления удаленными хостами.
В этой статье рассмотрено базовое использование команд Telnet в операционных системах на базе Linux.
👍4🔥3
Как собрать Linux-контейнер с нуля и без Docker
Это перевод статьи про то, как с нуля создать Linux-контейнер, аналогичный тому, который можно запустить с помощью Docker, но без использования Docker или других инструментов контейнеризации. Читать дальше на Хабре.
Это перевод статьи про то, как с нуля создать Linux-контейнер, аналогичный тому, который можно запустить с помощью Docker, но без использования Docker или других инструментов контейнеризации. Читать дальше на Хабре.
👍16
Устраняем эффект шумного соседа в PostgreSQL с помощью cgroups
Приходилось ли вам запускать на одной виртуальной или физической машине несколько экземпляров PostgreSQL или любого другого ПО? Зачастую это вызывает эффект шумного соседа: приложения «отбирают» друг у друга ресурсы и мешают корректной работе. Если коротко, то решение запуск БД в контейнере. Читать дальше.
Приходилось ли вам запускать на одной виртуальной или физической машине несколько экземпляров PostgreSQL или любого другого ПО? Зачастую это вызывает эффект шумного соседа: приложения «отбирают» друг у друга ресурсы и мешают корректной работе. Если коротко, то решение запуск БД в контейнере. Читать дальше.
👍15🔥3❤2
Путь пакета через ядро Linux
В этой статье исследуется сетевой стек TCP/IPv4 и UDP/IPv4 в Linux - наиболее распространенной серверной ОС. Также описывается трассировка наиболее важных сетевых функций ядра Linux 5.10.8. Хотя документация по сетевому коду Linux существует, она часто является устаревшей или охватывает только отдельные аспекты, такие как уровень IP или TCP.
В этой статье исследуется сетевой стек TCP/IPv4 и UDP/IPv4 в Linux - наиболее распространенной серверной ОС. Также описывается трассировка наиболее важных сетевых функций ядра Linux 5.10.8. Хотя документация по сетевому коду Linux существует, она часто является устаревшей или охватывает только отдельные аспекты, такие как уровень IP или TCP.
👍13
Что в черном ящике, или Как разработчику понять, что требует оптимизации в БД PostgreSQL
Слово DBA из Т-Банка:
«Мы достигли впечатляющего масштаба — почти 10 000 работающих экземпляров PostgreSQL, с которыми работают более 2 000 команд. Каждый из этих инстансов обслуживает уникальные рабочие нагрузки, разработанные командами с различными подходами к архитектуре, используемыми фреймворками и паттернами проектирования. Несмотря на огромное количество БД, команда администраторов баз данных (DBA) остается относительно небольшой (10 человек). Это создает целый ряд сложных задач, требующих тщательного управления и оптимизации процессов.»
В статье разбираются подходы к визуализации производительности БД. Узнаете на что нужно обращать внимание.
Слово DBA из Т-Банка:
«Мы достигли впечатляющего масштаба — почти 10 000 работающих экземпляров PostgreSQL, с которыми работают более 2 000 команд. Каждый из этих инстансов обслуживает уникальные рабочие нагрузки, разработанные командами с различными подходами к архитектуре, используемыми фреймворками и паттернами проектирования. Несмотря на огромное количество БД, команда администраторов баз данных (DBA) остается относительно небольшой (10 человек). Это создает целый ряд сложных задач, требующих тщательного управления и оптимизации процессов.»
В статье разбираются подходы к визуализации производительности БД. Узнаете на что нужно обращать внимание.
👍7🔥2
Пишем свой загрузчик операционной системы Linux
Современные загрузчики представляют собой сложные программы, способные загружать множество операционных систем различными способами, учитывая массу нюансов, связанных с программным и аппаратным обеспечением. Читая их исходный код, легко утонуть в деталях и потерять понимание сути и реализации. Читать дальше на Хабре.
Современные загрузчики представляют собой сложные программы, способные загружать множество операционных систем различными способами, учитывая массу нюансов, связанных с программным и аппаратным обеспечением. Читая их исходный код, легко утонуть в деталях и потерять понимание сути и реализации. Читать дальше на Хабре.
👍12🔥3🤩1🤡1
Пишем модули для Nginx
Nginx — это не просто веб‑сервер, а платформа, возможности которой можно расширять своими модулями. Если вам не хватает стандартного функционала и хочется больше контроля над обработкой запросов, кастомные модули могут позволить внедрять свою логику, оптимизировать маршрутизацию, фильтровать контент и реализовывать нестандартные механизмы аутентификации. Читать дальше.
Nginx — это не просто веб‑сервер, а платформа, возможности которой можно расширять своими модулями. Если вам не хватает стандартного функционала и хочется больше контроля над обработкой запросов, кастомные модули могут позволить внедрять свою логику, оптимизировать маршрутизацию, фильтровать контент и реализовывать нестандартные механизмы аутентификации. Читать дальше.
👍6🔥3