FastNetMon

Показаны сообщения с ярлыком Linux kernel. Показать все сообщения
Показаны сообщения с ярлыком Linux kernel. Показать все сообщения

суббота, 13 ноября 2010 г.

Отчет о том, на чем заблокирован процесс в Linux

Возможен при активации опции ядра CONFIG_LATENCYTOP и использовании специализированного ПО - LatencyTOP от Intel.

Офигенная презентация по тонкому тюнингу Linux систем

Прямо яро рекомендую всем-всем-всем: http://timetobleed.com/slides-from-highload/

irqbalance или ручное распределение прерываний по процессорам?

Есть вот такая штука (как она работает, к сожалению, понял не особенно), но поидее она выполняет распределение прерываний по различным ядрам:
http://www.irqbalance.org/documentation.php

А вот есть отзывы об успешном использовании, а также о кернел паниках: http://www.screenage.de/blog/2008/06/02/my-package-of-the-day-irqbalance/

Какой эффект разгрузки процессора дает использование tso для сетевой карты?

Очень неплохой ни потоках более гигабита: http://kerneltrap.org/node/397

Tx/Rx TCP file send long (bi-directional Rx/Tx):
w/o TSO: 1500Mbps, 82% CPU
w/ TSO: 1633Mbps, 75% CPU

Tx TCP file send long (Tx only):
w/o TSO: 940Mbps, 40% CPU
w/ TSO: 940Mbps, 19% CPU

По материалам: http://timetobleed.com/slides-from-highload/

Что такое Linux capabilities?

А это есть очень охрененная штука: http://linux.die.net/man/7/capabilities

Как пример использования - бинд непривилегированного сервиса на порт ниже 1024го.

Breaking chroot()

Отлично знаю, что если в chroot попадает юзер с root привилегиями, то он может оттуда сбежать. Но никогда не понимал механизма, как это делается, вот отличная инструкция: http://www.bpfh.net/simes/computing/chroot-break.html

Проблема c10k

http://en.wikipedia.org/wiki/C10k_problem

четверг, 11 ноября 2010 г.

Как запретить OOM киллеру мочить процессы кроме того, которые пытается выделить лишнего?

Вот такой вот опцией ядра, установив ее в единицу:
cat /proc/sys/vm/oom_kill_allocating_task

Подробнее:
/proc/sys/vm/oom_kill_allocating_task (since Linux 2.6.24)
This enables or disables killing the OOM-triggering task in out-of-
memory situations.

If this is set to zero, the OOM-killer will scan through the entire
tasklist and select a task based on heuristics to kill. This normally
selects a rogue memory-hogging task that frees up a large amount of
memory when killed.

If this is set to nonzero, the OOM-killer simply kills the task that
triggered the out-of-memory condition. This avoids a possibly
expensive tasklist scan.

If /proc/sys/vm/panic_on_oom is nonzero, it takes precedence over
whatever value is used in /proc/sys/vm/oom_kill_allocating_task.

The default value is 0.

Для sysctl.conf это будет строчка:
vm.oom_kill_allocating_task = 1

четверг, 21 октября 2010 г.

Что такое Tun/TAP

http://en.wikipedia.org/wiki/TUN/TAP

TAP - виртуальное L2 (Ethernet) устройство.
TUN - виртуальное L3 (IP) устройство.

Виртуальное тут в значении, что мы можем свою программу заставить заменять реальную физическую сетевую карту. Вот так-то.

Что такое Relocation (в контексте динамических библиотек) ?

http://en.wikipedia.org/wiki/Library_(computing)#Relocation

Вышло ядро 2.6.36!

http://kernelnewbies.org/Linux_2_6_36

среда, 6 октября 2010 г.

пятница, 1 октября 2010 г.

Что такое Linux initrd и зачем он нужен?

Очень многие, уверен, замечали, что на Linux ядро всегда сопровождается загадочным initrd образом. Так что это за зверь и зачем он нужен?

Для начала давайте обратим внимание на то, что Linux root раздел (/) может располагаться на NFS, Linux Soft Raid или LVM разделе. Таким образом, ядро должно загрузить драйверы доступа к соответствующим подсистемам (LVM, MDRAID, NFS) на этапе первичной инициализации. Драйверы представляют собой не что иное как модули ядра, которые хранятся в папке /lib/modules/*, которая в свою очередь очень велика (сотни мегабайт) и располагается на root разделе. Так как же быть, если нужные нам драйверы лежат на устройстве, которое само требует драйверов для доступа к нему?

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

И вот приходит он - initrd. Если изъясняться просто, то это небольшой набор модулей ядра, который лежит в запакованном (gzip) виде рядом с ядром. При этом, этот набор не задан жестко и его можно очень быстро изменить (добавив, допустим, какой-то специфичный драйвер) и следом пересобрать initrd. То есть, при использовании initrd загрузка представляет собой следующую последовательность - запуск ядра, распаковка initrd, подгрузка модулей из initrd (теперь появляется возможность увидеть root раздел даже если он стоит на LVM/MDRAID/NFS), монтирование root раздела и последующая инициализация системы.

У кого есть дополнения / комментарии, милости прошу в комменты :)

четверг, 23 сентября 2010 г.

Oracle’s Unbreakable Enterprise Kernel

Теперь Oracle Unbreakable Linux имеет поддержку собственных ядер, которые зовутся "Oracle’s Unbreakable Enterprise Kernel". Ранее же использовались оригинальные RHEL ядра. Об особенностях этих ядер можете прочесть вот здесь: http://www.oracle.com/us/corporate/press/173453

пятница, 17 сентября 2010 г.

Очередной локальный root эксплоит для ядер Linux с 2.6.26-rc1 до 2.6.36-rc4 (а также ядер 2.6.18 от RHEL)

https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2010-3081

Подробности проблемы: https://access.redhat.com/kb/docs/DOC-40265

P.S. фикса еще нету.

RHEL 5 / CentOS 5 уязвимы, так как этот патч был бэкпортирован в 2.6.18 RHEL ядра.

Debian 5 Lenny уязвим, но вот фиксы: http://www.debian.org/security/2010/dsa-2110. Проблеме не подвержены ядра начиная с 2.6.26-25lenny1.

Есть workaround: http://seclists.org/fulldisclosure/2010/Sep/273

Серьезная оптимизация скорости работы lighttpd за счет использования Linux AIO

http://blog.lighttpd.net/articles/2006/11/12/lighty-1-5-0-and-linux-aio

Что есть sendfile() и с чем его едят?

Многие, уверен, часто слышали про такой системный вызов как sendfile() (например, в Nginx), но не многие задумывались, для чего он нужен и почему его часто позиционируют как "оптимизационный" (то есть, позволяющий что-либо убыстрить, ускорить).

Задача sendfaile заключается в том, чтобы скопировать из дескриптора 1 энное число байт в дескриптор 2 (также для копирования можно задать смещение). Почему такой вызов, который легко "эмулируется" последовательным read с первого дескриптора и write во второй считается оптимизационным? Да очень просто - при вызове sendfile в отличие от read/write отсутствует пересылка данных из ядра в пространство пользователя и обратно (все копирование происходит сугубо в пространстве ядра), этим и достигается экономия ресурсов.

Источник большей части вдохновения - комменты к статей на Хабре: http://habrahabr.ru/blogs/nginx/68480/

Как вывести в системе все процессы, находящиеся в D-state (ожидание ввода-вывода)?

ps aux | awk '{if($8=="D"){print $0}}'

Реализация D-Bus сервера на уровне ядра Linux

http://www.opennet.ru/openforum/vsluhforumID3/70688.html