[1/2] Доброго всем. На связи снова безумие по работе от батареи. И мы снова пытаемся выжать максимум часов из Intel Metor Lake который есть у меня! Это ещё не конец, это промежуточный отчёт для дискуссии.
Супер кратенький вводный экскурс давней эпопеи:
1. Нормальную работу с Intel x86 я видел воочию только на MacOS - будь это хакинтош или натуральный макбук.
2. Вопреки всем мифам, на MacOS оно живёт сильно лучше чем Windows или Linux. Причины последних вроде все знают.
3. Про C/PC состояния были посты уже 1, 2 - если супер кратко, цель на ноуте, как только нагрузки почти нет, то упаковать все задачи на одно-два ядра и остальные выключить.
Так вот Intel с Meteor Lake говорит: Мы сделали классную идею. У нас P и E ядра живут на отдельной отключаемой плитке. А в SoC входит только LP ядра. А ещё задачи сначала будут загружаться на LP и по необходимости подниматься до P ядрер. Теория - космос. Реализация в Windows моё почтение. Есть Intel Thread Director, ещё есть классные штуки, что процессор сам умеет подсказывать, как положить текущую нагрузку планировщику.
А вот в Linux есть вопросы. Первый вопрос - А чего процу уже столько лет, а он всё ещё нагружает P ядра первыми при.. всегда?
Первое. На Linux нет Intel Thread Director. Точнее случился Ступор OpenSourc'ины и уже N лет, как не вмёржат ибо "очень интоль специфичное", так как изменения трогают много и планировщик и обратку и термальное воздействие и всё вместе, короч всё ещё не с нами и не готово полноценно.
Ладно, можно сказать, хрен с ним с обратной связью. Можно же просто следовать той же логике LP->E->P и чтобы планирощик ничего не ложил на E-P плитки с ядрами?
И да CFS знает, что у нас гибридный проц и даже карта эффективности есть и в андроидах по 3 типа ядер не редкость. Ага. Хрен.
Итак в десктопе linux различает только P ядра и остальные, он как бы понимает, есть E ядра нормальные и эти - какие-то недо-ядра и не использует LP вовсе.
Далее 0-ое ядро в списке - это P ядро. Linux всегда без пересборки ядра будет именно его держать online, оно же обрабатывает прерывания и используется для загрузки. В теории есть флаг CONFIG_BOOTPARAM_HOTPLUG_CPU0, чтобы потом его выключить, но чёт не рекомендуют его использовать. Итак плитка с P ядрами не уснёт получается никогда?
И раз такое дело, в дело идут костыли. Intel в итоге написали intel-lpmd [1] - этот демон призван используя те самые подсказки от процессора блокировать линуску через cgroups использование ядер, тем самым заставляя выбирать LP ядра для работы, так как других нет и при повышении нагрузки давать использовать E и P. Классная штука, но больше инженерный прототип, потому что работает хорошо если знать, как настроить. А как настроить знает только тот - кто его писал слишком много контекста отсутствует в понимании. Man не поможет вам, что в итоге писать в конфиг то. Мне вроде удалось собрать что-то рабочее, но работает оно не идеально.
Post #1472
1.76K

- 🔥 14
- ❤ 6
- 👍 3