LINUX.ORG.RU

Включить все ядра cpu

 , , ,


0

1

Подскажите, как заставить ядро на Андроиде использовать всегда все 8 ядер, а ни 4. Мне сильно мешает это ограничение, из-за него плохая производительность в одной программе, если бы я мог обойти это ограничение, то всё решилось бы. Но какие есть способы? Перекомпилировать ядро? Тогда что мне туда дописать? Нигде в интернете нет рабочего решения, и информации хотя бы про то, какой параметр добавить во время компиляции ядра. Если есть ещё какой-то способ с помощью root, подскажите, очень нужно сломать эту идиотскую систему huawei по занижению производительности

У меня такое же было с kernel auditor из fdroid на китайфоне с кастомом от васяна, только там было 1 ядро из 2 и оно, по-видимому никогда не использовалось. Kernel auditor имел опцию включать 2 ядро при загрузке или при нагрузке. Только после очередного обновления kernel auditor что-то сломалось (а вообще это говнософт, даже печально как-то что мало нормального софта на мобилки).

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

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

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

В job я уже задал вопрос, никто не отвечает

Озвучь стоимость работ (в job'е) и укажи e-mail в профиле. Если сойдемся в цене сделаю за пару дней.

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

Вообщем ситуация такая, на одних телефонах (большинство) 8 ядер начинают работать только когда нагрузка превышает первые 4, постепенно рывками проходит во вторые, чем больше программ тем дольше подъемы на других ядрах. То есть заточено всё так, чтобы нагрузка всегда была как в 4 ядра, и полностью забивается только половина, остальные используются как подкачка для других программ.

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

Мне нужно как-то включить второе поведение, чтобы другие 4 ядра не подкачивали, а брали нагрузку также как рабочие. Нашёл /dev/cpuset, но заменяется не везде там, осталось две папки, top-app и vip, где указано 0-3, и когда я пытаюсь изменить там эти значения, они возвращаются назад какой-то защитой. Мне кажется проблема здесь. Как можно найти эту причину и отключить защиту от изменений?

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

Мне кажется, твоя программа работает неправильно.

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

MX player, про который ты писал, декодирует видео или аудио. Обычно это задача для встроенных в SoC видеодекодеров, и она практически не напрягает CPU. Но если она по каким-то причинам делается на CPU, идеально она не параллелится.

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

Да блин, mx player здесь не при чём, я про exagear щас бьюсь, на моём телефоне он выдаёт 8 fps, на другом таком же, но где работают все 8 ядер а не 4, выдаёт 40! Такая проблема в 70% людей!

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

на другом таком же, но где работают все 8 ядер а не 4, выдаёт 40!

Так у тебя просто бракованный экземпляр. Купи новый или поменяй по гарантии.

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

Я имею в виду не мой такой же телефон, а другая модель совершенно, но на ней тоже cortex-a53, только использованы все 8 ядер а не 4

masteruser82841
() автор топика

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

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

на ней тоже cortex-a53

A53 это не конкретное ядро, это семейство ядер. Там могут быть разные объёмы кеша, разные частоты. Это влияет на производительность. Да даже теплоотвод влияет.

i-rinat ★★★★★
()
Ответ на: комментарий от masteruser82841

Нашёл /dev/cpuset

Вот это поворот! Тебя к нему за ручку привели несколькими постами выше.

когда я пытаюсь изменить там эти значения, они возвращаются назад какой-то защитой.

Какой командой меняешь?

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

Не командой, в проводником с root правами. Одни папки меняются, другие (/dev/cpuset/vip/cpu и /dev/cpuset/top-app/cpu откатываются обратно на 0-3)

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

Я пишу umount меня просит дать аргумент. А как его правильно написать? И что будет, если я испорчу систему этой отмонтировкой?

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

Нашёл /dev/cpuset ... я пытаюсь изменить там эти значения, они возвращаются назад какой-то защитой

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

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

Ну а что делать? Без пересборки ядра вообще никак?

Скажем так, делать за тебя никто ничего не будет. А в соседней теме ты вообще включил режим попрошайки с табличкой, изображая жертву. Еще и дерзить успеваешь. Фу таким быть.

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

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

man umount

И что будет, если я испорчу систему этой отмонтировкой?

Никаких гарантий. Всё на твоей совести. Это же правило будет работать если ты решишь залить пропатченное хз кем ядро.

Не ной. Не груби. Читай документацию, оценивай риски.

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

Не назвав плату и проц? Не зная ничего о прошивке? А вдруг там big.LITTLE? А вдруг переключение ядер происходит под управлением прошивки, и ядро андроида вообще к этому не имеет доступа?

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

Это ещё что... Представьте моё разочарование, когда я убедился, что мой преспективный китайский смартфон с вероятностью 30% совершает ошибку записи на встроеный диск, если размер файла больше 4Мб... На уровне ядра или контроллера, независимо от фс, приложения, рута и вообще всего. Спустя год траханья с «кривыми» прошивками...

kirill_rrr ★★★★★
()

В big-LITTLE низзя все 8. Не надо вестись на маркетинг.

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

Если есть доступ к конфигурации загрузчика, то можно подать ядру параметр «отключить управление cpu через cgrops». Довольно жирное ЕСЛИ для андроидоустройства, к тому же последствия могут быть непредсказуемыми.

А самый предсказуемый сценарий непредсказуемых последствий это внезапное увеличение выделения тепла в 2 раза выше рассчётного...

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

Как это сделать? Моё устройство называется Huawei Honor 7C Pro, LND-L29, 8-ядерный процессор, все ядра Cortex A53, то есть он не big.LITTLE, а на самом деле способен работать на всю мощность, но я не знаю кто его ограничивает, всегда используются на всю мощность только 4 ядра, а другие 4 просто как резерв

masteruser82841
() автор топика
Ответ на: комментарий от kirill_rrr

Процессор qualcomm snapdragon 450. Если тепла будет много поставлю охлаждение, а если нужно будет снизить потребление энергии вручную выключу половину ядер, с этим проблем не будет. Мне главное убрать эту фигню, которая урезает мне производительность

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

Я хз как. Для этого надо быть спецем по хуевеям и по снапдрагонам и по андроидам. По крайней мере, если других идей нет, у тебя есть направление куда гуглить.

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

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

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

У меня была другая ситуация: неадекватные настройки памяти через cgrop. RPi3, systemd. И я просто отключил управление памятью через cgrop в ядре на стадии загрузки.

root@raspberrypi:/home/rrr# cat /media/mnt/cmdline.txt 
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 fsck.repair=yes rootwait swapaccount=0 cgroup_disable=memory

cgroup_disable=memory - вот эта команда, передаваемая загрузчиком ядру при старте. Для вас это будет не memory, а cpu (это ещё надо уточнить в мануале). Но главная проблема - получить доступ к загрузчику вашего смарта чтобы прописать ему нужную опцию.

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

тут если pdf от того проца, и они там не врут, то скорее всего у тебя там или есть сервис, регулирующий выключение ядер, или в ядре указан не тот проц. В первом случае надо смотреть код фирмвари, или в кишки /init.*rc на предмет необычних бинарников. Qualcomm много чего выкладывает, но что там у китайцев - хз. Сам андроид таким не страдает.

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

Для сборки кастомного ядра нужно решить ту же самую проблему: доступ к загрузчику. Вариант с параметром проще.

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

На примере десктопного линукса: Есть загрузчики (lilo, grub, grub2), Они устанавливаются на диск скриптом или пользователем вручную, у них есть файлы конфигурации, где написано какое ядро и как грузить, пользователь имеет полный доступ ко всему этому. Хочешь вот это ядро, с этими параметрами а система, лежащяя вот на этом диске? Пара строк, и готово.

На Raspberry Pi в принципе аналогично, но загрузчик всего один, опций в нём поменьше и его код не открыт, он просто предоставлен броадкомом.

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

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

Вообщем, я в этом врятли разберусь, где там эти опции, загрузчик, я хочу просто скомпилировать другое ядро. Есть у меня исходник, что дальше? Куда там что написать чтобы 8 ядер заработали?

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

Куда там что написать

Это и есть главный вопрос. Не только у меня на полке лежит arm-железка, для которой я не осилил «загрузи мне вот это ядро».

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

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

Беглым просмотром по аналогичному ядру (смотрел по https://github.com/xBrownieCodez/Y6-ATU-Kernel, там есть поддержка LND-L29 и Snapdragon 450) не нашел описываемой тобой логики.

просто скомпилировать другое ядро

Ну для совсем новичка это не факт что вовсе посильная задача.

Есть у меня исходник, что дальше? Куда там что написать чтобы 8 ядер заработали?

По хорошему у тебя «два путя»:
1. читать доки -> дебажить ядро -> ловить моменты локов ядер -> править код -> собирать свою прошивку. Если будешь культурно общаться то тут тебе с этим всем помогут (именно помогут, а не сделают все за тебя).
2. Заплатить кому-то, кто это сможет сделать. На такую работу сумма будет стартовать от 200у.о. Да и не имея девайса на руках сделать это будет очень геморно.

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

Что за ядро? С чего вы решили, что оно заработает на 7c pro lnd-l29? Не на шли потому что это либо ядро, где это заранее исправили, то про что я задал здесь вопрос, либо блокирует всё сама прошивка.

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