Пятничный деплой
4.75K subscribers
1.54K photos
37 videos
167 files
7.99K links
Подборка ссылок, статей и постов из мира DevOps\SRE\разработки. Если вы хотите прислать фидбек, интересную статью или просто поболтать пишите @count0ru https://xn--r1a.website/s/count0_digest
Download Telegram
LPC_2019_kernel_fastboot_on_the_way.pdf
692.9 KB
🐧 Clear Linux, инженеры Intel и ускорение запуска ядра до 300ms.

#intel #kernel #clearlinux
Вот вам еще про "потрошки" - доклад про новый интерфейс IO в линукс
https://www.youtube.com/watch?v=-5T4Cjw46ys #linux #kernel #io
🐧 Почему-то новость о LSM (Linux Security Modules) - новом наборе патчей от Google, прошла тихо и незаметно. Меж тем, выглядит оно интересно. Обсуждение доступно по ссылке https://lkml.org/lkml/2019/12/20/641 Людям, интересующимся безопасностью ядра и BPF, по ссылке сходить обязательно (если вы там ещё не были, конечно).

#kernel #security #bpf
🐧 Чтиво про трейсинг, ftrace и утилиты для работы с ним - trace-cmd и KernelShark. https://embeddedbits.org/tracing-the-linux-kernel-with-ftrace/

#kernel #ftrace #напочитать
🐧 Таких материалов на русском языке не так уж и много, так что бегом читать: CVE-2019-18683: Эксплуатация уязвимости в подсистеме V4L2 ядра Linux от a13xp0p0v.

По ссылке PoC эксплойт, демонстрация, обход KASLR, SMEP, SMAP, повышение привелегий и детальное объяснение всего происходящего.

#security #kernel #напочитать
🐧 kmon - интересная утилита для просмотра информации о ядре и работы с модулями ядра в системе. Посмотрел сам и показал в заметке.

📗 https://sysadmin.pm/kmon/

#kmon #kernel #linux
🐧 Пока мы тут с вами сидим, Microsoft предложила модуль ядра, который обеспечивает проверку целостности системы. Используя этот модуль, мы сами можем определить список допустимых операций, и методы верификации компонентов системы. Допускается работа в двух режимах - пассивный, когда просто ведётся логирование, и активный - при котором выполняется обработка (ограничения, разрешения и т. п.) происхоящего.

Объёмно и подробно по ссылке (en): https://lkml.org/lkml/2020/4/6/941

#kernel #lsm #security
🐧 Вот тут доступна обновлённая версия бесплатной книги по программированию модулей ядра Linux: https://sysprog21.github.io/lkmpg/

#kernel #книга #фидбечат
🐧 Getting started with Linux kernel development. Перед сном можно, например, почитать вводную в разработку для ядра. Там совсем простые вещи, но тем не менее.

#linux #kernel #фидбечат
⚙️ Pstore, The Linux Kernel Persistent Storage File System - статья о pstore, механизме, который позволяет сохранить информацию о падении в области памяти и не потерять её вместе с перезагрузкой сервера. #pstore #kernel #напочитать
🐧 Understanding a Kernel Oops! Старая статья, но как оказалась полезная даже сегодня. Ёмко и информативно о том, какую полезную информацию можно получить из дампа после kernel panic. Речь пойдёт конкретно об Oops (soft panic). #linux #kernel #напочитать
document.pdf
4.9 MB
🐧 Linux Kernel Crash Book Everything you need to know. Подробно о проекте LKCD, входящих в него инструментах и практике работы с ядерными проблемами.

Подрезал где-то в LinkedIn, но книга также доступна здесь.

#kernel #книга #crash
🔧 Инженеры Oracle про аварийные дампы ядра, размер vmcore и инструменты для работы со всем этим - A vmcore for your system may be smaller than you think!

#kernel #vmcore #напочитать
🔨 What's Inside a Linux Kernel Core Dump - Инженеры Oracle продолжают раскрывать эту тему дампов ядра. Сама статья объёмная, плюс даёт несколько дополнительных ссылок для ознакомления.

#kernel #dump #напочитать
📺 И вот ещё один плейлист, на этот раз конференции Kernel Recipes 2024. Доступны 20 докладов на различные околоядерные темы...

https://youtube.com/playlist?list=PLQ8PmP_dnN7L11sHfHc3CF9__SCV_vL2T

#видео #kernel
1
Forwarded from about:performance
photo_2025-01-20_08-36-01.jpg
60.5 KB
Ранее я писал о баге Haproxy: после рестарта треды не завершались, что приводило к их накоплению, память иссякала и приходил OOM Killer.

Проблему решали костылем — директива hard-stop-after принудительно завершает треды после рестарта.

Но Haproxy не сдается и наносит ответный удар!

Причины еще предстоит выяснить, поэтому это скорее "заметка с полей"


Симптомы схожи: утечка памяти.

Но сбой наступает когда (это гипотеза) заканчивается память для TCP-буферов (net.ipv4.tcp_mem) - ядро с переменным успехом пытается освободить память для новых / существующих соединений, что приводит к затруднению в сетевых взаимодействиях.

На скрине такой период отмечен красным прямоугольником.

# sysctl net.ipv4.tcp_mem
net.ipv4.tcp_mem = 90435 120582 180870


Где 180870 - максимальное значение (в страницах памяти) под все TCP сокеты в системе, что равно ~ 706MB.

Оказалось, что система насыщается "повисшими" соединениями, чьи буферы сокетов содержат данные:
# ss -ntOai | awk '{for(i=1;i<=NF;i++)if($i~/^lastsnd:/){split($i,a,":");print a[2], $2, $4, $5}}' | sort -n | tail 

#lastsnd # Recv-Q #Src #Dst
234423668 157355 10.11.12.4:57354 10.11.6.123:80
235316436 302417 10.11.12.4:56232 10.11.6.124:80
238200680 301585 10.11.12.4:37940 10.11.6.124:80
238726828 300103 10.11.12.4:58944 10.11.6.124:80
243816724 297015 10.11.12.4:51700 10.11.6.125:80
251456440 302959 10.11.12.4:52324 10.11.6.125:80
252237780 302464 10.11.12.4:47786 10.11.6.123:80
257868244 163453 10.11.12.4:41568 10.11.6.125:80
259905196 300433 10.11.12.4:40202 10.11.6.123:80
261307944 214022 10.11.12.4:54888 10.11.6.123:80 # это ~ 72 часа

где:
* lastsnd - время с последней отправки данных, в милисекундах;
* Recv-Q - объем не прочитанных данных, в байтах.

А раз есть не прочитанные данные, значит таймер TCP keepalive не взводится:
static void tcp_keepalive_timer (struct timer_list *t)
{
...
/* It is alive without keepalive 8) */
if (tp->packets_out || !tcp_write_queue_empty(sk))
goto resched;

...

resched:
inet_csk_reset_keepalive_timer (sk, elapsed);
goto out;

...

out:
bh_unlock_sock(sk);
sock_put(sk);
}

Был бы повод, а костыль найдется!

Ребята из CloudFlare писали в свое время статью When TCP sockets refuse to die, где в виде решения предлагалось использовать опцию сокета TCP_USER_TIMEOUT:
...it specifies the maximum amount of time in milliseconds that transmitted data may remain unacknowledged, or buffered data may remain untransmitted (due to zero window size) before TCP will forcibly close the corresponding connection and return **ETIMEDOUT** to the application...


В свою очередь Haproxy поддерживает ее через tcp-ut.

Посмотрим, как себя покажет.

tags: #tcp #linux #kernel #troubleshooting
👍2
🐧 Demystifying the Kernel Boot Sequence: From ‘Starting Kernel…’ to Userspace” - описание процесса загрузки ядра. Автор приводит в качестве примера 32 битный ARM процессор, но и общие шаги в статье также описывает...

https://bootlin.com/blog/demystifying-kernel-boot-sequence

#kernel #boot #напочитать