LINUX.ORG.RU
ФорумAdmin

Можно ли выбрать boot cpu отличающийся от CPU0?

 ноутбук boot


1

3

Собственно в чем суть. Есть новые интеловские процессоры начиная с метеорлейка , arrow тоже такой же и видимо все последующие линейки плиточных интелов будут такими же. Там есть SOC-плитка с двумя E-ядрами - они последние в списке. В моем случае 125Н это CPU 16 и 17. Остальные P и E ядра на другой плитке, и суть интеловской идеи при легкой нагрузке и в режиме сна S0iX отключать процессорную плитку полностью, а все легкие ждущие задачи крутить на ядрах SOC плитки. Ее по любому не отключишь - там контроллер памяти, порты , шина и прочая хабовая часть.

Под оффтопом так и работает, а вот онтопик бутится всегда с CPU0. Засунуть команду в ядро ограничить количество CPU на буте можно - но это всегда будет CPU0 а это всегда жручий P-core. И соффланить его потом после загрузки с передачей всех функций на 16 или 17 cpu не выходит. Нагрузку через шедьюлер можно перебросить на E-ядра (с этим отлично справляется intel_lpmd) - но вот разные служебные ядерные процессы продолжают вертеться на CPU0 что не позволяет отключить плитку с ядрами поностью и перейти на SOC. Поэтому вот и ищется странное - как заставить линукс грузиться с определенного ядра.

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

Увы в доках осталось а из кода выпилили в версии 6.4

Значит похоже что никак - так и будет жрать как ни в себя.

Qui-Gon ★★★★★
() автор топика

isolcpus - Isolate CPUs from the kernel scheduler. Данный параметр позволяет заставить Linux не использовать определенные процессорные ядра в процессе своей работы, т.е. мы можем выделить себе несколько ядер на многоядерном процессоре и запускать на них необходимый софт.

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

isolcpus - Isolate CPUs from the kernel scheduler.

Тоже думал об этом - но вот только не ясно на каком ядре будет крутиться сам kernel scheduler, RCU и прочая шняга. С изолированием пользовательских процессов от P-ядер отлично справляется intel_lpmd. То есть если наблюдаешь загрузку процессорных ядер - то вся работа летит сначала на LP (ядра SOC), потом на E и только при полно загрузке на P. Но при этом на ядре 0 постоянно выскакивает какая-то смехотворная нагрузка - на уровне «белого шума» можно сказать - но она периодически выскакивает.

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

Как я понял по документации, без cpu0_hotplug нельзя перекинуть обработку системных прерываний на другие ядра. Из-за этого нельзя отключить cpu0 (bootstrap processor).

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

The isolcpus makes sure that the system does not use those CPU cores for anything, not even to handle hardware interrupts. Some hardware may be unable to move interrupts off the core #0 so don’t use it for dedicated tasks.

anonymous
()

но вот разные служебные ядерные процессы продолжают вертеться на CPU0

Это точно так? Например в Haiku после инициализации ядра CPU 0 не выполняет каких либо специальных функций и может быть хоть вообще отключён.

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

cpu0 не имеет псевдофайла online.

cpu0 - это bootstrap processor, его нельзя просто так выключить.

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

Вроде так нельзя. Можно выключить все Е ядра, но все P ядра выключить нельзя, хотя бы одно P ядро должно быть активно

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

Ну в том то и беда онтопика в сравнении с оффтопиком. Как я понял из прочтения истории cpu0 hotplug там вся фенька в том что если заоффлайнить cpu0 то система не проснется из гибернации и S3-suspend. S3 для новых процессоров уже не нужно ибо выпилено как класс, а перед гибернацией нужно cpu0 обратно заонлайнить видимо.

Суть как опять же написано в том что для работы ОС этот cpu0 не сильно важен. Но то что его нельзя вырубить - гадит и в s0ix и в работе системы.

Qui-Gon ★★★★★
() автор топика

Привет, ребята. Пишу сюда, потому что тут вроде как активное обсуждение. Вот установил я Gentoo Linux, да? Теперь нужно установить драйвера на видеокарту (Nvidia GeForce RTX 3060). Вот в Вики пишут что мне нужно поставить USE-флаги vdpau и nvenc, но есть же ещё и vaapi. Так вот, вопрос один: vdpau или vaapi? Или оба? Спасибо.

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

хотя бы одно P ядро должно быть активно

Интересно, для какого ядра и на каком ядре выполняется микрокод процессора? Что будет если микрокод попытается выполнить команду неподдерживаемую E-ядром.

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

откуда в ноутбуке настройки биос. Это сказки. Сейчас в ноутбуках 2 настройки - время поставить и пароль установить. А для десктопа все это энергосбережение P и E ядра нужны как собаке даже не пятая а сто пятая нога.

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

nvidia это vdpau. Все остальное - vaapi. Но там вопрос еще совместимости софта - как я понимаю на нвидиевскую технологию все забили и в софт встраивают поддержку vaapi что логично - декодирование через нвидию никакой энергоэффективности не принесет, там и энергосбережение отвратное и декодеры говно. Но как я понимаю для драйверов нужно.

В принципе для совместимости есть прослойка транслирующая vaapi в vdpau или наоборот.

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

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

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

Как я понял по документации, без cpu0_hotplug нельзя перекинуть обработку системных прерываний на другие ядра

А если так попробовать

cat /proc/irq/32/smp_affinity 
echo 0x030000 >/proc/irq/32/smp_affinity

каждый бит - одно ядро, т.е. 0x030000 это ядра 16 и 17 (нумерация с нуля)

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

А если так попробовать

У меня этим занимается intel_lpmd. Этот демон может выводить ядра из шедъюлера через cgroup и мигрировать irq через smp_affinity в зависимости от нагрузки на комп. То есть если комп не нагружен - ну как сейчас - активеы только 16-17 и smp_affinity 0x30000. Если что-то запущу - то демон сначала расчехлит E-ядра, а затем уже и P. Кстати штука классная и очень полезная - без нее ужор батареи катастрофический на интеле.

То есть по запускаемым процессам все отлично, проблема - нутро самого кернела. Нагрузка там смешная просто, но она есть. То есть жырное P-ядро просыпается за каким-то хреном и поджирает энергию. Причем судя по утилизации 16-17 ядра легко бы осилили эту задачу.

Расширенные настройки BIOS (комментарий)

Почти все - преданья старины глубокой. Единственный ноут из попадавшихся мне в руки где реально можно вывалиться в инженерные настройки - GPD Win Max 2. Для АМД есть внешняя приблуда - делаешь загрузочный флеш и там можно копаться в процессорных настройках(ну в том что АДМшное - понятно что фичи ноута не от АМД эта приблуда не умеет). Еще иногда получается хакнуть биос и вытащить из него список UEFI переменных - и потом править их через расширенный GRUB. Таким баловался на Dell когда undervolt еще был закрыт на уровне биоса а не на уровне железа. Но в нынешнем варианте - Honor, у этой штуки нипойми какой биос и как к нему подступиться. Впрочем новые леновы не сильно лучше.

Qui-Gon ★★★★★
() автор топика

Нет, Linux всегда загружается с CPU0. Обходных путей нет, так как CPU0 жестко привязан к инициализации системы и обработке прерываний. Intel не предоставляет механизмов смены boot CPU, и Linux не поддерживает такую возможность.

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

Intel не предоставляет механизмов смены boot CPU

Для линукса. В вындовз все норм - выжимают по 18 часов со сраного метеорлейка против 6 в линуксе. Не зря прижился термин wintel - вроде как и вкладываются в линукс, и в драйвера, и в разработку - но какую-нибудь вонючку надо зарыть чтобы в чем-то линукс был принципиально непреодолимо хуже. Ну в общем нам не привыкать…

Qui-Gon ★★★★★
() автор топика
Ответ на: комментарий от router

тогда не будет работать поверсейвинг в видеокарте. Он приземлился только в 6.14-rc, а этот импакт будет поболе чем легкая загрузка CPU0. Да и вообще поддержка Arc в 6.1 грустная.

В общем куда ни плюнь а поддержка этого Little-Big архитектуры x86 в линуксе грустна. А теперь еще и амд пошел тем же путем и запихал малые и большие ядра. И куда теперь крестьянину податься….

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

И как работает гипергипервизор в кольце -1?

anonymous
()

Пока добавил только rcu_nocbs=0-7 в параметры загрузки

Получил

rcu: Offload RCU callbacks from CPUs: 0-7.

Не то чтобы полностью получилось разгрузить P-ядра, но хоть что-то.

Юзерскими процессами и перемещаемыми IRQ рулит intel_lpmd - достаточно эффективно в общем-то рулит.

В итоге удалось выжать из 3К амолед ноута потребления ниже 7 ватт при проигрывании VP09 FHD ютуба в окне. Ну правда на 138-nightly со всеми последними патчами от Мартина. И да - на малой яркости конечно. Но это в общем-то вполне достойно, особенно учитывая что без всех этих оптимизаторских извращений ноут просил на тот же ролик ватт 12.

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

rcu_nocbs=0-7

А если наоборот, раз cpu0 не усыпить, пусть все прерывания только он и обрабатывает, за одно и частоту у него порезать? А остальные будить только для приложений?

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

не - там 4 гипертредовых P-ядра. Они дают 0-7. И их вообще теребить не хочется никогда ну разве кроме реально тяжелых вычислений. Но вот boot cpu - P ядро, и туде прилетает всякое говно. А раз оно активируется - то туда и RCU прилетает.

Потом еще 8 E ядер - на том же чиплете что и P ядра. Эти ядра не бутовые и они четко следуют рекомендациям intel_lpmd. Туда ничего лишнего не летит. А когда есть средняя нагрузка - ну пусть обрабатывают все что досталось.

Ну и еще 2 ядра лежат на SOC чиплете. По идее они как раз на малой нагрузке - ну вот например сейчас - все и тянут. По сути двухядерный атом. Но гораздо мощнее - наверное что-то вроде 10-го поколения с ограничением на 2 ггц

Тут главная проблема - boot ядро, оно живет своей жизнью. Конечно большой вопрос интелу - нахухуа вы долбоящеры сдеали CPU0 P-ядром? Какая там такая безумная нагрузка загрузить ОС с ссд и раскидать несколько десятков байтов по регистрам? В этом решении прямо стоит вонища маркетологами и эффективными менеджерами - как так загузка 1 секунду? А ну сделайте 0.5!

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

нафиг - P ядро жрет за четверых. Лучше с него убрать по максимуму что можно - и пусть оно сидит с C10 99% времени.

С прерываниями справятся LP и E ядра в перерывах от обработки задач. Их тут много.

Главная засада - что интел в рекламных заявлениях уверял что они специально вывели 2 ядра в по сути хабовую часть комбайна. То есть комп может функционировать вообще выключив процессор и оставив только хаб. Но эта идея по ходу такой же пис дил как и их хваленый thread director который на хардверном уровне будет раскидывать задачи. Ну не шмогла штарушка.

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

CPU0 всё равно будет периодически просыпаться для аппаратных прерываний, например, по таймеру [1000 Гц?], то он не успеет уйти в глубокий сон. Пусть заодно и системными задачими занимается, раз не дают спать. А остальные пусть спят не прерываясь.

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

Для корпоративно-телеметрических нужд?

Для маркетолого-мудических. Иных вариантов не вижу.

У интела наблюдается желание и рыбку съесть и на МПХ присесть - удовлетворив и геймеров и мобильных пользователей. Но как бывает в таких случаях делали как лучше а получилось как всегда. Геймеры готовы платить дополнительное бабло за проц с отключенным Е-ядрами - не с большим количеством P а просто обычный но с отключенными E, чтобы не мешали геймингу подхватывая задачи. А ноутбукеры вынуждены сливать часы автономности в ненасытную пасть нахрен не сдавшегося P-ядра CPU0. Маркетологи и эффективыне менеджеры походу везде одинаковы - как гном с его идиотической концепцией «компьютер это просто большой смартфон - зачем нам разные интерфейсы», так и интел - что ультрабук что геймерский десктоп- одно и тоже. По уму в десктопах вообще нах не сдались E-ядра, ну что там пара ватт разницы на Idle для включенного в розетку компа… С этой точки зрения кстати чиплетный дизайн может дать свои плюсы - будет проще создавать процы с разными наборами модулей для разных нужд. Ну как говорится будем посмотреть.

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

Успеет.

На самом деле пробовал экспериментально благо intel_lpmd позволяет всем этим управлять - ну кроме вот этих нежданчиков на CPU0. По батарее получается выгоднее максимально увести все на E и LP.

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

По батарее получается выгоднее максимально увести все на E и LP.

так и будет с intel_lpmd. Просто системную/ядерную нагрузку кинуть на первое ядро rcu_nocbs=2-17, которому не спится.

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

там еще и разбивка по сиблингам через жопу. 0 и 1 - это 2 разных физческих ядра.

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

Китайский нонейм ноутбук на ryzen 5700U с нонейм экраном 2560x1440 240Гц(!), intel wifi. Никакой настройки. Проигрывание онлайн потока 2K. По показаниям нонейм сенсора батареи:

  • на минимуме яркости 8.41V * 1.16A ~= 10W
  • на максимуме яркости 8.46V * 2.56A ~= 21W
anonymous
()
Ответ на: комментарий от Qui-Gon

Хоть под Librewolf (firefox), хоть mpv. Аппаратное ускорение VAAPI не сильно влияет, можно сказать плохо влияет, потребление чуть вырастает примерно на 0,5 ватта.

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

Это фенька старых амд. На новых вроде должны были исправить но сам не проверял - перешел на интел.

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

А не, вру (у сенсора очень большая задержка - больше минуты).

Librewolf потребляет 1-1,5 ватта больше 11-12 ватт при минимальной яркости.

anonymous
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.