LINUX.ORG.RU

Патчи pf-kernel для Linux 4.12

 , ,


2

5

Состоялся пятый выпуск pf-kernel для ядра Linux ветки 4.12.

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

В эту версию входят:

  • планировщик процессов BFS от Кона Коливаса (Con Kolivas) с дополнениями VRQ v0.96e от Альфреда Чена (Alfred Chen) (поскольку MuQSS и -ck1 ещё не готовы);
  • реализация техники слияния одинаковых страниц памяти UKSM от Най Ся (Nai Xia);
  • патч от Graysky, расширяющий список процессоров для оптимизации ядра компилятором;
  • несколько специфических исправлений для устройств автора;
  • бекпорты из ветки 4.13 для корректной работы blk-mq;
  • дополнительные исправления для BFQ.

Планировщик ввода-вывода BFQ уже включён в основное ядро и больше не входит в состав pf-kernel. Обратите внимание, что он доступен, только если используется многопоточный вариант блочной подсистемы (blk-mq). Планировщики ввода-вывода при использовании blk-mq нельзя указывать через командную строку ядра в загрузчике. Вместо этого используйте правило udev, например:

ACTION=="add|change", KERNEL=="sd[a-z]*", ATTR{queue/scheduler}="bfq"

Чтобы включить подсистему blk-mq, ядро нужно собрать с опцией CONFIG_SCSI_MQ_DEFAULT=y или передать параметр scsi_mod.use_blk_mq=1 из загрузчика.

Патч применяется к чистому ядру версии 4.12 без стабилизационных патчей. В него входит последняя стабильная версия ветки — 4.12.4.

Также доступны бинарные пакеты для Arch Linux (x86_64) без оптимизаций и с оптимизациями для процессоров Intel Silvermont и Skylake.

>>> Скачать патч

>>> Официальный сайт

★★★★★

Проверено: jollheef ()
Последнее исправление: sudopacman (всего исправлений: 2)

обеспечивают повышенную отзывчивость
уменьшают использование памяти

Объясните мне, глупому, почему

не входят в основное ядро

?

SuoiCat
()
Ответ на: комментарий от SuoiCat

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

С KSM то же самое (почти).

post-factum ★★★★★
() автор топика
Последнее исправление: post-factum (всего исправлений: 1)

Спасибо!
Кстати, а для fedora уже есть собранная версия ?
Т.к. судя по последним активностям репа от hubbitus давно протухла :(

joy4eg ★★★★★
()
Ответ на: комментарий от post-factum

Допустим, так. Но ещё допустим, что я рядовой пользователь debian/ubuntu/mint, который хочет работать, а не пересобирать ядро, и был бы не против, если бы система была поотзывчивее и поэкономнее, чтобы работать было приятнее. В таком случае - полагаю - существует другая, более весомая причина, почему такую классную плюшку не внедрили в ядро.

SuoiCat
()

KMS
UKSM

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

anonymous
()
Ответ на: комментарий от SuoiCat

Т.е., двух причин — технической и политической — недостаточно?

С другой стороны, смотри — BFQ таки смогли.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от SuoiCat

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

buddhist ★★★★★
()
Ответ на: комментарий от post-factum

а сколько памяти высвобождает KMS/UKMS по сравнению с ядром без него? почему могут возникать одинаковые страницы у меня только два предположения: 1) что-то дико копирует память; 2) страницы полностью заполнены нулями. сколько процентов выигрыша получается: 10-20-30-...?

anonymous
()
Ответ на: комментарий от anonymous

Зависит от workload'а, понятное дело. Виртуалочки там одинаковые, например. У меня сейчас экономит (аж :)) 90 МиБ. Наверное, из-за вкладок в браузере.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Замерял на одном из прошлых релизов с MuQSS — разницы особой не заметил, хотя Кон утверждает, что если система idle, то живёт ноутбук от аккумулятора дольше.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от BratSinot

Как хромопользователь смею не согласиться. Еще как для десктопа годно. + больше сэкономленной памяти - больше кэшей

timdorohin ★★★★
()
Последнее исправление: timdorohin (всего исправлений: 1)
Ответ на: комментарий от anonymous

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

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от BratSinot

я уже посмотрел видео по ссылке. там китаец создаёт большое изображение в гимпе состоящее полностью из белых пикселей и показывает как сэкономилось 35 мегабайт, хотя и так понятно, что все те пиксели имеют одинаковое значение 0xFFFFFFFF. файрфокс вероятно память заранее выделяет, memory pool какой-нибудь или что-то такое, выделяет 200 мегабайт, но реально использует только 100 из них, остальное на потом и возможно временно забито нулями. если поскролить страничку или по ссылке перейти, количество сэкономленого не уменьшается?

но да, это скорее одинаковые виртуалочки запускать или что-нибудь такое

anonymous
()
Ответ на: комментарий от intelfx

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

anonymous
()

Также доступны бинарные пакеты для Arch Linux (x86_64) без оптимизаций и с оптимизациями для процессоров Intel Silvermont и Skylake.

не работал ещё с OBS, это можно как-то подключить в виде репозитория?

h4tr3d ★★★★★
()

Саша, а как текущий патч можно адаптировать для Debian?

Кто-нить пакеты собирает?

Twissel ★★★★★
()
Ответ на: комментарий от timdorohin

Будут какие-нибудь цифры? Скажем, из-за 50метров лишних не стоит возиться.

onlybugs ★★
()
Ответ на: комментарий от Twissel

Наверняка можно, почему нет :). Кто собирает и собирает ли вообще — не знаю.

Собрать ядро в Дебе проще простого, даже проще, чем в Арче.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от anonymous

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

Если ты находишься на уровне защиты, в котором ты можешь следить за ядром, то ты имеешь доступ к любым данным любых процессов. Что тебя так удивиляет?

diverter
()
Ответ на: комментарий от joy4eg

Ну попробуй

make rpm
запустить. Должно вроде собраться.

slaykovsky ★★★
()

Спасибо за то, что продолжаешь пилить! Всегда рекомендую именно pf-kernel всем, кто спрашивает про отзывчивость в линуксе.

Сам сейчас сижу на gentoo-sources с UKSM-патчем. Недавно ставил 4.12-pf3, но наткнулся на то, что у меня сломался скрипт, ограничивающий RAM для процессов (создаёт cgroup и запускает процесс с привязкой к ней). Разбираться было лень, поэтому забил. :)

spijet ★★★
()
Ответ на: комментарий от post-factum

Честно скажу, не знаю. Скрипт вот такой:

#!/bin/sh

## Script params:
CGROUP="$(basename $0)"
TASKFILE="/sys/fs/cgroup/memory/${CGROUP}/tasks"
MEM_MB="200"
PROGRAM="/usr/bin/${CGROUP}"

# First, create the cgroup (if it doesn't exist):
if ! [ -f "${TASKFILE}" ]; then
    sudo /usr/bin/cgcreate -a "${USER}:${USER}" -t "${USER}:${USER}" -g "memory,cpu:${CGROUP}"
    # Now, set memory limit:
    /usr/bin/cgset -r "memory.limit_in_bytes=$(( MEM_MB * 1024 * 1024 ))" "${CGROUP}"
fi

# Finally, call the executable:
/usr/bin/firejail --cgroup="${TASKFILE}" "${PROGRAM}" "$@"

spijet ★★★
()
Ответ на: комментарий от spijet

Похоже на v1. Ну, НЯЗ, v1 и v2 могут сосуществовать. Посмотри mount | grep cgroup и покажи ошибки со своего скрипта, желательно в отдельной теме.

post-factum ★★★★★
() автор топика
Последнее исправление: post-factum (всего исправлений: 1)
Ответ на: комментарий от post-factum

Попробую на недельке, если что — кастану. Спасибо!

spijet ★★★
()
Ответ на: комментарий от anonymous

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

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

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

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

anonymous
()
Ответ на: комментарий от anonymous

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

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

1. выделяем 4к или другой размер страницы 2. смотрим сколько памяти выделено ядром (free) 3. записываем случайные данные 4. смотрим сколько памяти выделено ядром 5. если размер выделеного уменьшился (страница смержилась) - дампим её в файл 6. повторяем 1-5 7. получаем красивый дамп памяти в файлах 8. ??? 9. PROFIT

не?

anonymous
()
Ответ на: комментарий от anonymous

Ну ОК, только в это же время ядро будет аллоцировать-освобождать память в других местах, и ничего полезного free тебе не покажет.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от anonymous

это всего лишь перебор одной страницы из четырёх килобайт.
...
этот KSM полностью ломает изоляцию процессов.

Ага. Нужно «всего лишь» 256^4096

bc                      
256^4096
14154610310449547890015530277449516013481307114723881672343857482723\
66634240845253596025356476648415075475872961656126492389808579544737\
84888193829625087319174392779354491301105016265127795702984696021178\
32429335212075454134849698568518511412885151632014829953890550974606\
22098635675003353929224278582935664416262572773308153277514346480313\
37198861262948148356243817892895886777785007219831617484125195559099\
66720186450936408508036796302203672013838448667914492847375182628131\
23083439037243678440420897139923778278952770312318778329004894547065\
48907759683539601715360317005037130201476244387270111137955448430971\
86623068837760104753484414936004919434790412719929201953319830649301\
06164727241438940877685164658948654886171641124473975626241632750150\
12665536998102129357006604230548248604088316563586283572863704605835\
24037560857456912394738978919990859763452037046599671574272395358365\
07133656908815246080139195569461072006301590372954830738644391138016\
06534413113120760426405389744082890466204718323437754742728769194174\
15359465108829909044778631854737985283880604575689279436339239288726\
81927502029572963130840854853739937076881035646179383055483433876051\
40203761442474890296901815918651981105154536796710376718281970913547\
90191316833093307973744081973398315272390407159081122130951267707176\
06001288898889370710896248862361503869205214536908258196921765593065\
32539283633214259441113460347550936602814569030635060185929526129626\
33310186822763175677495345710587722355676795569202407891090705212539\
87131031263902293034744367356932509952188828475362311316445284228640\
48942180926373842363093124302491458786392813471918610416466060535600\
15919627786463782954136597707826469792362890626164424180715710392825\
51289348848274522893059561717860194034698241804887531275078109603637\
16049590757999536641963641702892757339167058079681852607422609501437\
51894385792160716775407660856056041061230366696674346777234726755644\
58991671268414100801031453917736665947284956674884035306621286465183\
79869385259980332461986518185624442207923368729450853640852108741887\
39084982027105970804744802498188580114909305185127137988036291016387\
16278578874145214429026186276602289012484526830076647356828764878327\
Слишком большое сообщение

комбинаций перебрать. Делов-то!

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

ну знаешь, оно всегда так, слишком сложно, на практике не реализуемо, мою домашнюю работу съела собака,

Что «всегда так»? Что аноним опять не сумел нормально вбросить и теперь с умным видом несет *ерню? Coгласен. Анонимный разоблачитель себе хоть порядок цифр представляет? 256^4096 ~ под десять тыщ циферок в десятичной системе.

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()

Как реально увидеть профит от UKSM используя только его же данные из /sys/kernel/mm/uksm/ ? И каков смысл из увиденных чисел? Ну реально не могу понять используя 8 ГБ оперативы на ядре 4.12 и с дедублицированными 32 МБ, в среднем, за несколько недель без перезагрузки десктопа (Веб, почты, консоли, редакторы текста и графики, виртуалки, кино, музыка).

fidaj
()
Ответ на: комментарий от fidaj

~0.39% экономии как-то не серьезно, даже при минимальном использовании демоном uksm процессорного времени.

fidaj
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.