TGViewer
Channel Public Channel
Admin Guides | Сисадмин

Admin Guides | Сисадмин

@admguides

Обучающий канал по ОС Linux & Windows для начинающих и действующих администраторов.

Админ, реклама: @Ak_Mihail
Биржа: https://telega.in/c/admguides

РКН: https://kurl.ru/nQejS
Subscribers
12K
Photos
1.8K
Videos
24
Links
597
Recent Posts 20 shown
Post #3161 409
Process Builder: зачем Linux хочет уйти от fork()+exec()

Классическая схема запуска процесса в Unix выглядит просто: fork() создаёт копию текущего процесса, затем execve() заменяет её другой программой.

Но для больших приложений это не всегда удобно. Перед exec() приходится настраивать файловые дескрипторы, credentials, namespaces, ограничения и другие параметры уже созданного процесса.

А сам fork() при этом создаёт его как копию родителя. В 2026 году в Linux обсуждается отдельный process-builder API, который должен позволить собирать новый процесс без такого копирования.

1️⃣Что не так с fork()

Условно:

pid = fork();

if (pid == 0) {
// настроить child
execve(...);
}


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

Для обычной программы это нормально. Но для серверов и других процессов с большим address space стоимость и сложность такой модели становятся заметнее.

2️⃣Что предлагает Process Builder

Идея - сначала получить практически пустой процесс, а затем последовательно собрать его состояние:

create process
↓
install FDs
↓
set credentials
↓
configure namespaces / limits
↓
exec()


То есть создание процесса превращается из одной операции fork() в набор явно задаваемых действий.

Это особенно интересно для реализации posix_spawn() и похожих механизмов, где родитель вообще не должен становиться шаблоном нового процесса.

3️⃣Почему это интересно kernel-разработчикам

Такой подход позволяет отделить создание процесса от копирования состояния родителя.

В результате можно заранее описать, каким должен быть новый процесс, и передать это описание kernel вместо последовательности fork() → настройка → exec().

При этом проект пока находится на стадии разработки и обсуждения, а не является новым универсальным syscall, который уже можно использовать на обычной системе.

⚡️Идея Process Builder - не просто сделать fork() быстрее. Это попытка изменить саму модель создания процесса: не копировать существующий процесс и потом переделывать его, а собрать новый из нужных kernel-объектов.
  • ❤ 3
  • 🔥 2
Post #3160 769
  • 😱 4
  • 👍 3
  • 🙈 1
  • 🗿 1
Post #3159 878
💬 Вопрос на собеседовании для сисадмина

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


❓Вопрос: Что такое Transparent Huge Pages (THP) в Linux и как они влияют на производительность?

✅Ответ: Transparent Huge Pages (THP) — это механизм Linux, автоматически объединяющий обычные страницы памяти (обычно по 4 KB) в более крупные страницы (обычно по 2 MB), чтобы сократить накладные расходы на управление памятью и ускорить доступ.

Проверить текущее состояние THP можно командой:

cat /sys/kernel/mm/transparent_hugepage/enabled


Отключить, если они мешают:

echo never > /sys/kernel/mm/transparent_hugepage/enabledЯ
  • ❤ 5
  • 🔥 5
  • 👍 4
Post #3158 817
🫥 Сервис запустили - пора принимать поздравления и платежи

С платежами поможет pay.hot. Подключаем оплату на сайте, в приложении или Telegram:

- СБП
- Банковские карты РФ
- Международные банковские карты

🫥 Можно подключиться без ИП и ООО в России, а выручку получать в USDT.

🫥 Работаем с пополнением Steam, донатами в игры, digital-сервисами, Таро-ботами, магазинами цифровых товаров, хостингами и нейросервисами.

🫥 Согласование и подключение - обычно до 7 часов. Поддержка на связи 24/7.

🫥 Кстати, у нас есть агентская программа. Если знаете проекты, которым нужен приём платежей, можете помогать им подключаться к pay.hot и получать агентское вознаграждение.

🫥 Расскажите о своём проекте: @payhotsupport_bot
  • ❤ 1
Post #3157 740
Block-layer error injection: как Linux специально ломает I/O

В Linux можно не ждать, пока диск действительно начнёт возвращать ошибки.

Kernel умеет сам подставлять ошибки для операций block layer и проверять, как на них реагируют файловая система, драйвер и сервисы.

1️⃣Включаем механизм
Нужен kernel с CONFIG_BLK_ERROR_INJECTION и смонтированный debugfs:

mount -t debugfs none /sys/kernel/debug


Для устройства появится:

/sys/kernel/debug/block/nvme0n1/error_injection


2️⃣Задаём ошибку
Например, возвращаем BLK_STS_IOERR для одного из десяти чтений:

echo 'add,op=READ,start=0,status=IOERR,chance=10' \
> /sys/kernel/debug/block/nvme0n1/error_injection


Можно ограничить правило диапазоном секторов или выбрать другую операцию:

op=READ
op=WRITE
op=DISCARD


А вместо IOERR можно, например, имитировать BLK_STS_MEDIUM.

3️⃣Что происходит дальше
Ошибка появляется не потому, что NVMe или SATA-диск физически сломался.

Запрос проходит через block layer, там срабатывает правило, и операция завершается с заданным статусом.

Дальше уже интересно смотреть, что делает верхний уровень:

dmesg -w


и параллельно проверять поведение файловой системы, device-mapper, RAID или приложения.

Правила можно удалить:

echo removeall \
> /sys/kernel/debug/block/nvme0n1/error_injection


⚡️Получается довольно мощный способ тестировать recovery: можно воспроизвести I/O error на конкретной операции и диапазоне диска, не дожидаясь реальной аппаратной неисправности.
  • ❤ 6
  • 🔥 2
Post #3156 889
АЙТИШНИКИ БЕСПЛАТНОЕ ОБУЧЕНИЕ

Проект «Terminal» стал крупнейшей библиотекой бесплатного образования. В одном канале собраны курсы, книги, полезные инструменты и практические тренажёры для всех разработчиков:

• Практические курсы и задания
• Книги и статьи известных авторов
• Полезные инструменты и ресурсы
• IT-новости и инсайды

Обучение по всем направлениям: SQL, Python, ML, Frontend, PHP, C++, Go, Git, Linux, QA, Java, Vibe-coding, InfoSec и др.

⌨️ подписаться
  • ❤ 1
  • 🤡 1
Post #3155 944
Показан открытый минималистичный браузер Northstar, полностью написанный с нуля на C.

Одно окно, одна страница, один процесс - около 177 тыс. строк оригинального кода. Сторонние движки вроде Gecko, WebKit или Blink не используются. Проект распространяется под GNU GPLv3, сборки доступны для Linux, macOS и Windows.

Northstar поддерживает актуальные HTML5, CSS и JavaScript, а соответствие стандартам проверяется непосредственно в проекте. В архитектуру заложена приватность: нет телеметрии, запросов при проверке обновлений и ИИ-функций. 


Safe Browsing использует локальный список хешей SHA-256, а cookies, хранилище и кэш изолируются по origin.

⏺GTK-оболочка работает в основном потоке, а движок страниц - в отдельном со своим event loop. Поэтому загрузка страницы или выполнение JavaScript не должны блокировать интерфейс. Весь браузер работает в одном процессе, а кодовая база остаётся достаточно компактной для изучения и аудита одним разработчиком.
  • ❤ 8
  • 👍 6
Post #3154 1.15K
sched_ext: разные scheduler policies для разных групп

Обычно scheduler в Linux один для всей системы: задачи попадают в общую модель планирования, а kernel решает, когда и на каком CPU их запускать.

sched_ext позволяет вынести часть этой логики в BPF-программу. А новая модель sub-schedulers позволяет применять отдельную policy только к выбранной группе задач.
Упрощённо:

Linux scheduler
│
├── обычные процессы → CFS / fair scheduling
│
└── выбранная группа → sched_ext
│
└── своя BPF policy


Например, можно представить систему с двумя группами:

cgroup A → обычный scheduler
cgroup B → sched_ext policy


При этом sched_ext не заменяет scheduler ядра целиком. Он получает управление только там, где задача попала под соответствующую policy, а остальные задачи продолжают обслуживаться обычным scheduler path.
Проверить доступность механизма можно через:

ls /sys/kernel/sched_ext


А состояние scheduler’а:

cat /sys/kernel/sched_ext/state


Главная сложность здесь в границе ответственности. BPF-policy должна решать, какую задачу и когда запускать, но CPU, migration, interrupts и остальные базовые механизмы ядра никуда не исчезают.

То есть получается не:
один BPF scheduler вместо Linux scheduler
а скорее:

              kernel scheduler
│
┌───────────┴───────────┐
↓ ↓
обычные задачи sched_ext tasks
│
BPF scheduling policy
  • ❤ 5
  • 🔥 3
Post #3153 1.28K
  • ❤ 9
  • 😁 6
  • 👍 4
Post #3152 1.29K
steal time: как VM понимает, что CPU забрала виртуализация

Виртуальная машина может показывать низкую загрузку CPU, но при этом работать медленно.

Причина может быть в том, что vCPU просто не получает физический CPU: гипервизор в этот момент выполняет другую VM. Это время Linux называет steal time.

1️⃣Проверяем steal time

grep '^cpu ' /proc/stat


Или:

vmstat 1


В vmstat это колонка st:

procs -----------memory---------- ---cpu---
r b swpd free buff cache us sy id st
4 0 0 ... ... ... 35 8 42 15


st=15 означает, что около 15% времени vCPU не мог выполняться, потому что физический CPU был отдан кому-то ещё.

2️⃣Почему это отличается от обычной загрузки
Допустим, приложение хочет работать постоянно:

VM хочет CPU
↓
vCPU готов выполняться
↓
гипервизор не даёт ему pCPU
↓
steal time растёт


При этом внутри VM процесс может выглядеть вполне здоровым: нет большого iowait, нет высокой загрузки памяти, а задержки растут.

3️⃣Что с этим делают сейчас

Свежая серия steal_governor предлагает использовать steal time непосредственно для scheduler’а гостя. При высоком steal time VM уменьшает набор preferred CPUs, фактически добровольно сокращая число используемых vCPU. Когда steal снижается, CPUs возвращаются обратно.

Например, пороги в текущей серии:

steal > 5% → убрать core из preferred set
steal < 2% → вернуть core


Идея в том, что иногда лучше иметь меньше реально работающих vCPU, чем много vCPU, которые постоянно конкурируют за физические CPU. Особенно это важно, если вытесненный vCPU в этот момент держал lock.
  • ❤ 7
  • 👍 3
Post #3151 1.16K
💬 Вопрос на собеседовании для DevOps-инженера

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.

❓Вопрос: Что такое RSS (Receive Side Scaling) и зачем он нужен на многопроцессорных серверах?

✅Ответ: RSS (Receive Side Scaling) - это механизм сетевых карт и ядра Linux, позволяющий распределять обработку входящего сетевого трафика между несколькими CPU. Без RSS весь сетевой трафик мог бы обрабатываться одним ядром, создавая bottleneck на высоких нагрузках.

Как это работает:
• NIC вычисляет хэш пакета (обычно по src/dst IP и портам).
• На основе хэша пакеты распределяются по разным RX-очередям.
• Каждая очередь привязывается к отдельному CPU через IRQ affinity.
• В результате обработка сети параллелится между ядрами.
  • 🔥 9
  • 👍 5
Post #3150 1.11K
128-bit PTE: зачем ARM понадобились таблицы страниц в 128 бит

ARM сейчас добавляет поддержку 128-битных page-table entries через FEAT_D128 и режим VMSAv9-128. Это не означает, что обычный процесс внезапно получает адресное пространство 2¹²⁸.

У PTE есть не только адрес physical page. В нём также нужны биты для управления памятью: permissions, attributes, security и другие MMU-флаги.

В 64-битном PTE пространство уже становится тесным для будущих расширений:

┌──────────────────────────────┐
│ physical address │
├──────────────────────────────┤
│ permissions / attributes │
├──────────────────────────────┤
│ MMU / software metadata │
└──────────────────────────────┘
64 bit


D128 удваивает размер записи:

64-bit PTE  →  128-bit PTE


Это позволяет одновременно расширять диапазоны VA/PA и оставляет больше места под дополнительные функции MMU. При этом сама геометрия таблиц меняется: в одном уровне теперь меньше entries, поэтому размеры mappings на уровнях также отличаются.

Например, для 4-KB страниц:

             D64       D128
PMD 2 MB 1 MB
PUD 1 GB 256 MB


То есть переход на 128-bit PTE - это не просто «адресов стало в два раза больше». Меняется сама организация translation tables.

Причём текущая реализация ещё не использует весь потенциал FEAT_D128: поддержка некоторых возможностей, включая 52-bit VA/PA и skip levels, пока отсутствует.

⚡️Главная идея здесь не «нам срочно понадобилось адресовать 2¹²⁸ байт». ARM заранее расширяет сам формат описания страницы, потому что 64 бит PTE постепенно становятся ограничением уже не только для адреса, но и для metadata, которую MMU должен хранить рядом с ним.
  • ❤ 7
  • 👍 4
Post #3149 1.47K
  • 🔥 12
  • 👌 3
  • 💯 3
Post #3148 1.46K
Как понять, что упёрлись в лимиты (FD, conntrack, backlog), а не в CPU

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

Сначала проверяем файловые дескрипторы - частая причина “тихих” отказов:

cat /proc/sys/fs/file-nr
lsof | wc -l


Если значение близко к лимиту - новые соединения или файлы просто не создаются, хотя CPU свободен.
Дальше conntrack - если есть NAT или firewall:

cat /proc/sys/net/netfilter/nf_conntrack_count
cat /proc/sys/net/netfilter/nf_conntrack_max


Когда счётчик близок к max - появляются дропы и таймауты без нагрузки на CPU.

Теперь backlog и очередь входящих соединений:

ss -lnt
cat /proc/sys/net/core/somaxconn


Если растёт очередь на LISTEN или SYN backlog забит - новые подключения “висят”, хотя сервис жив.
  • ❤ 7
  • 👍 6
Post #3145 1.29K
💬 Вопрос на собеседовании для DevOps-инженера

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.

❓Вопрос: Что такое perf events в Linux и как их используют для профилирования системы?

✅Ответ: perf events — это подсистема ядра Linux для сбора информации о производительности CPU, подсистемы памяти, кэшей и других ресурсов. Она позволяет проводить точное профилирование приложений и ядра без модификации кода.

Применение на практике:
• Сбор статистики по событиям процессора (cache misses, branch mispredictions, CPU cycles).
• Профилирование узких мест в приложениях и ядре.
• Использование инструментов perf, perf stat и perf record для анализа и визуализации данных, что помогает оптимизировать производительность и выявлять узкие места на уровне CPU и памяти.
  • 👍 6
  • ❤ 3
  • 🔥 3
Post #3144 1.33K
Гибридная инфраструктура в деле: как связать локальные и облачные ресурсы в единый контур

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

Полноценный гибрид начинается с полноценной безопасной сетевой связности. И тут есть Cloud Interconnect, который соединяет on-premises и облачную инфраструктуру по приватному каналу, при этом трафик между площадками не выходит в интернет.

VPC Private Endpoint — обеспечивает безопасный доступ к облачным ресурсам, таким как Object Storage или AI Studio без выхода трафика в Интернет.

Когда нужны дополнительные вычислительные мощности и получить их нужно быстро - можно подключить выделенные серверы. BareMetal Extend предоставляет возможность получить готовую инфраструктуру на базе выделенных серверов с виртуализацией или Kubernetes. Это позволяет размещать и обрабатывать данные в изолированном контуре, сохраняя при этом связь с облачными ресурсами.

Для быстрой разработки в закрытом контуре - есть Stackland. Большое обновление платформы позволяет создать полноценную платформу данных в закрытом контуре. Для этого есть решения для хранения и обработки данных, аналитический слой для работы с большими объёмами данных, инструменты для автоматизации и оркестрации процессов, а также BI-система для визуализации и анализа результатов.

Расходы и потребление ресурсов при этом можно получать в Billing через API с детализацией по сервисам, облакам и ресурсам и передавать эти данные в собственные системы аналитики.
  • 🔥 5
  • ⚡ 1
Post #3143 1.27K
Cron не запускает скрипт

Cron сам по себе работает стабильно, но его среда сильно отличается от твоего терминала.

Переменные окружения, права доступа, рабочая директория - всё это влияет на запуск скрипта. Часто скрипт не падает, а просто «теряется» из-за этих отличий.

Проверки
окружения: переменные PATH в cron могут отличаться.

env > /tmp/env_cron.log


Права: скрипт должен быть исполняемым.

ls -l /path/to/script.sh
chmod +x /path/to/script.sh


Логи cron:

journalctl -u cron -f
grep CRON /var/log/syslog


Формат crontab:

crontab -l


Убедись, что нет лишних пробелов, символов или неправильных путей к скрипту.
  • 👍 7
  • ❤ 5
Post #3142 1.39K
После сброса Windows 11 файлы могут остаться доступными для восстановления

Cloud Rebuild в Windows 11 получил безопасную очистку диска перед переустановкой системы.

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

Новый вариант «Удаление и очистка файлов» дополнительно запрашивает у накопителя безопасное стирание данных.

Это пригодится перед продажей, передачей или утилизацией ПК. Сам Cloud Rebuild позволяет переустановить Windows и драйверы через интернет даже без загрузочной флешки.
  • 👍 6
  • ❤ 2
Post #3139 1.67K
KSM: как Linux объединяет одинаковые страницы

Несколько процессов могут иметь разные виртуальные адреса, но содержать абсолютно одинаковые данные:

Process A                 Process B

0x400000 ──→ Page X 0x900000 ──→ Page Y
\ /
одинаковые


KSM (Kernel Samepage Merging) периодически сканирует подходящие anonymous pages и ищет одинаковое содержимое.
Если страницы совпали, kernel оставляет одну physical page и меняет mappings:

Process A ──┐
├──→ Page X
Process B ──┘


Теперь оба процесса читают одну и ту же страницу.

Самое интересное начинается при записи.

Process A ──┐
├──→ Page X
Process B ──┘

Process A: write()
↓
Copy-on-write
↓
Process A ──→ Page Z
Process B ──→ Page X


KSM помечает объединённую страницу так, чтобы запись не могла тихо изменить данные сразу для всех процессов. При попытке записи возникает page fault, после чего kernel создаёт отдельную копию страницы для записавшего процесса.

Проверить состояние KSM можно здесь:

cat /sys/kernel/mm/ksm/pages_shared
cat /sys/kernel/mm/ksm/pages_sharing
cat /sys/kernel/mm/ksm/pages_unshared


pages_shared показывает количество физических страниц, которые сейчас используются несколькими mappings.

⚡️KSM экономит память не за счёт сжатия данных, а за счёт того, что разные процессы временно начинают указывать на одну physical page. Как только один из них меняет содержимое, обычный Copy-on-Write разводит их обратно.
  • ❤ 6
  • 👍 4
Post #3138 1.66K
  • 😁 7
  • 🤣 4
  • ❤ 3
Older posts →

About this channel

How can I read @admguides without a Telegram account?
TGViewer shows the public web preview Telegram publishes for Admin Guides | Сисадмин: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does Admin Guides | Сисадмин have?
Admin Guides | Сисадмин (@admguides) has 12K subscribers on Telegram, refreshed roughly every 30 minutes.
Does Admin Guides | Сисадмин know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →