Как включить все ядра процессора в линукс
Ядро (англ. kernel) – то, вокруг чего строится всё остальное. Именно оно и называется Linux. Сейчас словом Linux в быту называют построенную на нём операционную систему, хотя по-хорошему она называется GNU/Linux (ядро Linux и ПО от проекта GNU, многие десятилетия находящейся в разработке).
В Ubuntu исппользуется ядро с большим количеством патчей, часть из которых добавляет нестабильные и экспериментальные возможности 1) .
Версия Ubuntu | Версия ядра |
---|---|
4.10 | 2.6.9 |
5.04 | 2.6.11 |
5.10 | 2.6.13 |
6.06 LTS | 2.6.15 |
6.10 | 2.6.18 |
7.04 | 2.6.19 |
7.10 | 2.6.20 |
8.04 LTS | 2.6.24 |
8.10 | 2.6.27 |
9.04 | 2.6.28 |
9.10 | 2.6.31 |
10.04 LTS | 2.6.32 |
10.10 | 2.6.35 |
11.04 | 2.6.38 |
11.10 | 3.0.4 |
12.04 LTS | 3.2 |
12.10 | 3.5 |
13.04 | 3.8 |
13.10 | 3.11 |
14.04 LTS | 3.13 |
14.10 | 3.16 |
15.04 | 3.19 |
Шаг 1. Получение исходного кода ядра
Исходники ядра Ubuntu можно получить двумя способами:
Установив архив из репозитория, с автоматическим наложением последних официальных патчей. При этом скачается пакет размером ~150 Мб в текущую папку. Чтобы получить исходники ядра, версия которого установлена на компьютере выполните команду:
Или вместо `uname -r` можно указать конкретную версию из имеющихся в репозитории.
Список имеющихся в репозитории версий можно увидеть набрав команду: «apt-get source linux-image-» и, не нажимая Enter , нажать два раза клавишу Tab .
Не забудьте включить общий доступ к исходникам в репозитории ( Параметры системы → Программы и обновления → Программное обеспечение Ubuntu → Исходный код ). Из консоли это сделать можно раскомментировав строки начинающиеся с deb-src в файле /etc/apt/sources.list, а затем выполнить обновление командой: «sudo apt-get update».
Где - имя релиза, например:
Другие ядра
Распакуйте полученный архив, используя команды:
Или в случае с linux-source:
Шаг 2. Получение необходимых для сборки пакетов
Выполните следующие команды для установки основных пакетов:
Далее всё зависит от того, каким способом вы хотите произвести конфигурацию ядра. Это можно сделать несколькими способами.
config - традиционный способ конфигурирования. Программа выводит параметры конфигурации по одному, предлагая вам установить для каждого из них свое значение. Не рекоммендуется для неопытных пользователей.
oldconfig - файл конфигурации создаётся автоматически, основываясь на текущей конфигурации ядра. Рекомендуется для начинающих.
menuconfig - псевдографический интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в терминале.
xconfig - графический (X) интерфейс ручной конфигурации, не требует последовательного ввода значений параметров.
gconfig - графический (GTK+) интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в среде GNOME.
localmodconfig - файл конфигурации, создающийся автоматически, в который включается только то, что нужно данному конкретному устройству. При вызове данной команды большая часть ядра будет замодулирована
localyesconfig - файл конфигурации, похожий на предыдущий, но здесь большая часть будет включена непосредственно в ядро. Идеальный вариант для начинающих.
В случае, если вы хотите использовать config, oldconfig, defconfig, localmodconfig или localyesconfig, вам больше не нужны никакие дополнительные пакеты. В случае же с оставшимися тремя вариантами необходимо установить также дополнительные пакеты.
Для установки пакетов, необходимых для использования menuconfig выполните следующую команду:
Для установки пакетов, необходимых для использования gconfig выполните следующую команду:
Для установки пакетов, необходимых для использования xconfig выполните следующую команду:
Конфигурирование
Распакуйте полученый архив 5) и, для удобства, создайте символическую ссылку на полученую в результате директорию:
Для упрощения процесса конфигурации ядра можно скопировать настройки текущего:
Если вы хотите узнать какие различия появились между новой и текущей версией ядер выполните:
Начиная с версии ядра 2.6.32 появилась возможность обновлять конфигурацию только тех модулей, которые используются в данной системе:
Существует три основных варианта конфигурирования ядра:
Способ для смелых и отважных. Конфигуратор задаст вам около четырехста вопросов на которые нужно будет дать ответ.
Предоставляет псевдографический конфигуратор, в котором все настройки разложены по пунктам.
Предоставляет графический конфигуратор.
Шаг 4. Конфигурация будущей сборки ядра
Перейдите в папку, куда вы распаковали ядро, выполнив команду
где 2.6.x.y - версия загруженного вами ядра.
На данный момент вы уже должны были определиться с методом конфигурации ядра (если нет, то ознакомьтесь с ними в разделе «Получение необходимых для сборки пакетов». В зависимости от этого, выполните следующую команду для запуска выбранного вами способа конфигурации:
config - традиционный способ конфигурирования. Программа выводит параметры конфигурации по одному, предлагая вам установить для каждого из них свое значение. Вызывается командой
oldconfig - файл конфигурации создаётся автоматически, основываясь на текущей конфигурации ядра. Рекомендуется для начинающих. Вызывается командой
defconfig - файл конфигурации создаётся автоматически, основываясь на значениях по-умолчанию для данной конкретной архитектуры. Вызывается командой
menuconfig - псевдографический интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в терминале. Вызов:
localmodconfig и localyesconfig - автоматические конфигураторы. Конфиг создается на основе вызванных в данных момент модулей и запущенного ядра. Разница между этими двумя конфигураторами в количестве модулей. В первом случае их будет не менее 50% ядра, а во-втором не больше 2 модулей. Вызов:
После вызова соответствующая программа конфигурации будет запущена. Произведите необходимые настройки в соответствии с вашими потребностями, сохраните файл конфигурации и переходите к следующему шагу.
Шаг 5. Сборка ядра
Итак, приготовления завершены. Теперь можно запустить процесс сборки ядра. Чтобы это сделать, выполните команду:
Сборка ядра может занимать от 20 минут до нескольких часов в зависимости от конфигурации ядра и технических параметров компьютера. Сборка при многодерном процессоре может быть в несколько раз быстрее
Компиляция ядра
Перед началом сборки ядра необходимо установить следующие пакеты:
Все дальнейшие действия необходимо выполнять от лица суперпользователя:
Сборка
Сборка ядра производится командой
Вместо ваша_версия подставьте название для вашей версии ядра.
Процесс сборки может занять некоторое время. По его окончанию появятся пакеты содержащие скомпилированное ядро и заголовочные файлы. Их можно будет установить при помощи dpkg .
Получается что все 7 серверов сидят только на одном ядре, остальные ядра пустые. Загрузка процессора показывает 80%. Как только сервер заполняется он отключается.
У меня точно такой же компьютер дома. Установлен Windows 7. Запускаю дома 10 серверов заполняю все сервера ботами по 32 на сервере, максимальная загрузка процессора 10%.
Так вот помогите пожалуйста настроить линукс.
Ядро стандартное, или кастомное? И man affinity
прости не пойму man affinity, я нуб в линух, если можна пишите командами.
Почитайте про планировщики (elevator) ввода / вывода: noop, deadline, cfq.
Так же почитайте про уровень энергосбережения процессора, возможно у вас сейчас включен консервативный уровень.
Попробуйте включить governor performance или governor ondemand.
Пожалуйста по подробней. Я нуб в линуксе.
Покажите скрипт запуска серверов
если можна пишите командами
Это и есть команда.
screen -A -m -d -S hlds ./hlds_run -game cstrike +ip 0.0.0.0+port 27015 -autoupdate -pingboost 3 +sv_lan 0 -master +maxplayers 32 +map de_dust2
man affinity No manual entry for affinity
А если сервер так запустить
И да я выше ссылку давал про тасксет, прочитал?
Все равно, они сидят на первом ядре.
Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz : 3401.00MHz
Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz : 800.00MHz
Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz : 800.00MHz
Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz : 800.00MHz
Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz : 800.00MHz
Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz : 800.00MHz
Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz : 800.00MHz
Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz : 800.00MHz
Да разбираюсь, попробую, если не получится то отпишусь.
screen -A -m -d -S hlds ./hlds_run -game cstrike +ip 0.0.0.0+port 27015 -autoupdate -pingboost 3 +sv_lan 0 -master +maxplayers 32 +map de_dust2
ты дал вот эту вот команду семь раз подряд?
может их надо как-то по портам разным разнести?
Само сабой порты с 15 до 21.
cpufreq-info | grep «current CPU» current CPU frequency is 800 MHz (asserted by call to hardware). current CPU frequency is 800 MHz (asserted by call to hardware). current CPU frequency is 800 MHz (asserted by call to hardware). current CPU frequency is 800 MHz (asserted by call to hardware). current CPU frequency is 800 MHz (asserted by call to hardware). current CPU frequency is 800 MHz (asserted by call to hardware). current CPU frequency is 800 MHz (asserted by call to hardware). current CPU frequency is 800 MHz (asserted by call to hardware).
Показывает загрузка CPU 130%
Я указал ключевые слова, за подробностями в google.
если так попробывать
Не чего не работает, сажает на одно ядро и все.
Попробовал сменить планировщик ввода/вывод и в особенности governor энергосбережения процессора?
kostik87 ★★★★★ ( 27.05.14 15:55:07 )
Последнее исправление: kostik87 27.05.14 15:55:30 (всего исправлений: 1)
Снова я, возникли еще вопросы.
По вашим ответам, запустил с такими параметрами.
taskset -c 2 screen -A -m -d -S hlds ./hlds_pubsc -game cstrike +ip 144.76.224.8 +port 27015 -autoupdate +sv_lan 0 -master +maxplayers 32 +map de_dust2 -pingboost 3
-pingboost 3 Уменьшает ping поэтому нужен.
«taskset -c 2» Начал с 1 и до 7, 0 оставил. Так вот что получилось. Параметр запуска: mpstat -I SUM -u -P ALL 1
Что означает нижнее значения?
PM 0 2000 и прыгает
у тебя всё отлично, на одном ядре (нулевом) прерывания (interrupts/sec), остальные нагружены примерно на 10-15% процентов в среднем.
Как посадить каждый сервер cs 1.6 на отдельное ядро процессора линукс.
Так вот какой я сделал вывод:
1) Виндовс лучше чем линукс на 2014 год. Он быстрей, легче в установке на 100% чем линукс.
2) То что все строят из себя умных а на самом деле нечего не знают.
Никого не хочу обидеть этими словами но это факт.
Теперь о самом процессе.
У этого процессора Intel(R) Core(TM) i7-4770 как мы знаем 4 CPU Kerne + 4 HT.
Как выяснить что ядра а что НT.
Все ядра идут в таком порядке: 0,1,2,3,4,5,6,7
Смотрим на «core id», у меня они идут так: 1,2,3,4,1,2,3,4 это означает что первые 4 это ядра вторые четыре это HT.
Тоесть: 0=1ядро, 1=2ядро, 3=3ядро, 3=4ядро, 4=1HT, 5=2HT, 6=3HT, 7=4HT.
Так вот, я посадил самые загруженные сервера на ядра, а мения загруженные на HT.
Как это сделать:
С помощью команды: taskset -c (ядро) (скрипт запуска сервера).
Тоесть (пример): taskset -c 1 ./hlds_run -game cstrike +ip 0.0.0.0 +port 27015 -autoupdate +sv_lan 0 -master +maxplayers 32 +map de_dust2 -pingboost 3
-pingboost 3 Эта команда уменьшает пинг на 10, но сильно грузит процессор. Без неё при полном сервере нагрузка примерно 7-9%, с ней 50-60%.
Я оставил первое ядро так как на нем сидит весь линукс и начел с второго: taskset -c 1, taskset -c 2, taskset -c 3, и т. д. taskset -c 0 Это первое ядро.
Причём твоё не знание изначальное и превосходство винды?причём мнимое. Просто админам лень помогать, а тебе помогали простые пользователи. Нука у блондинки с виндой на ноуте спроси про сервера КС. Вот тот же эффект, что ты спросил у простых пользователей линя. Спросил бы у мегабакса,пинтбайта и тд они бы ответили даже не задумываясь.
Согласись, чтобы запустить линукс надо установить около сотни программ: это я говорю по своему опыту.
Чтобы виндовс, только установить драйвера.
Простому юзеру искать информацию о линукс очень тяжело, все непонятно.
Плюс виндовс с одинаковыми параметрами системы выдавал: загрузку процессора на 10% а линукс на 60%.
Да и я разговаривал с так называемым гуру линукс, его слова были: у тебя руки кривые ты чтото не так делаеш. Хотя объяснил четка что хочу, но он меня мучал совсем не поделу. Всякие фразы выдавал что у меня мозг лопался. В конце концов пришлось прочитать очень много материала, чтобы сообразить как это сделать.
я посадил самые загруженные сервера на ядра, а мения загруженные на HT
ахахаха))) пацталом) извините, не удержался. причём поциент судя по всему владеет вендой на том же уровне, что и линуксом. это всё печально. :(
wakuwaku ★★★★ ( 30.05.14 23:28:43 )
Последнее исправление: wakuwaku 30.05.14 23:34:00 (всего исправлений: 1)
Да, бедняжка, умаялся весь, поди.
Бред какой-то. Когда я играю в ut2004 у себя на локалхосте, ядро время от времени переключает его процесс между ядрами. Вижу это на втором мониторе. Точно никакого криминала в параметрах ядра?
бля, бред написал. kernel переключает процесс между ядрами процессора.
точнее сто семьдесят три.
манера речи этого анонимуса говорит о том, что он красноглазит гораздо больше, чем считается приличным для обычного человека. почему не ушел?
что он красноглазит гораздо больше, чем считается приличным для обычного человека
Не хочется, но линукс своими закидонами порой обеспечивает бессоные ночи.
Ушел уже. На десктопе.
2) То что все строят из себя умных а на самом деле нечего не знают.
У тебя пробелы в знаниях очевидней. Просто найди человека более подкованного в матчасти и прекрати корчить из себя эксперта. (я про выводы, да. и про всё остальное)
wakuwaku ★★★★ ( 31.05.14 01:02:55 )
Последнее исправление: wakuwaku 31.05.14 01:04:04 (всего исправлений: 1)
Согласись, чтобы запустить линукс надо установить около сотни программ: это я говорю по своему опыту.
Бородатого одмина с 20-летним опытом видно сразу, ога-ога.
Чтобы виндовс, только установить драйвера.
Бред сивой кобылы. Нужно установить кучу программ, как то: различные кодеки, офис, браузер вместо IE, какой-нибудь нормальный файловый менеджер, немалое количество компиляторов, которые ещё и весить будут больше, чем в линуксе. А в той же бубунте для домохозяек есть всё и сразу.
1) Виндовс лучше чем линукс на 2014 год. Он быстрей, легче в установке на 100% чем линукс.
Так почему бы тебе не поднять на винде свои сервера?
У тебя мнение типичного потребителя. Линукс не для тебя. Дорогу на винфак, надеюсь, знаешь.
тебе здесь никто ничего не должен. если ты невежественен и безграмотен в области работы операционых систем - то это характеризует только тебя. не приходи сюда больше, беги сразу к маме.
У тебя мнение типичного потребителя. Линукс не для тебя.
А для кого? Для программистов и админов? Вот и жрите свой 1% и не булькайте о том как все плохо и поганая винда доминирует на десктопе. Быдло мнит себя илитой, спешите видеть, епт.
Вот и жрите свой 1% и не булькайте о том как все плохо и поганая винда доминирует на десктопе.
Херню не неси. Сколько я здесь ни сидел, нытья о «доминировании винды на десктопе» не видел.
в то время, как нормальная часть просто пользуется тем, чем удобно.
Твой выпад ещё более неуместен, если учесть, что ТС действительно туповато-нагловат в том, что совершенно без всякого знания матчасти и даже элементарных команд он приходит и требует, чтобы ему всё разжевали.
Ну тут и правила и матчасть учить надо, а винде проще - инсталл - некст - некст - финиш, вуаля! Все работает! Да нахер этот линукс с его мат частью!
Вот вы тут все теперь раскудахтались.
А не один из вас не помог, это о чем говорит?
Пес. не мешки ворочить.
Действительно. Пара сотен баксов, и анальная изгородь в виде окошек с постоянными дырами готова!
А ты и не нужен сообществу линукса, успокойся и иди учить уроки, а то ГИА не сдашь.
чтобы запустить линукс надо установить около сотни программ
Чтобы запустить линукс, нужен только бутлоадер.
P.S. Иди-ка ты на винфак.
Да, это говорит о том, что ты пришел на ЛОР, где большинство пользуют винду, как говорит нам печальная статистика (где-то её тут выкладывали, не помню где). Ну и разбираться за тебя, читая ман по CS и его параметрам запуска, который мне не нужен, как и большинству в этой теме, мне не охота. И да, почитай матчасть, самую общую, о том, как компьютер устроен и как он работает, а то пробелы в знаниях просто колоссальны. К примеру, ядро OS само будет перекидывать нагрузку между ядрами CPU, в зависимости от нагрузки и температуры конкретного ядра, чего бы ты там не сажал. Это тебе не морковка. ;)
Подскажите, как заставить ядро на Андроиде использовать всегда все 8 ядер, а ни 4. Мне сильно мешает это ограничение, из-за него плохая производительность в одной программе, если бы я мог обойти это ограничение, то всё решилось бы. Но какие есть способы? Перекомпилировать ядро? Тогда что мне туда дописать? Нигде в интернете нет рабочего решения, и информации хотя бы про то, какой параметр добавить во время компиляции ядра. Если есть ещё какой-то способ с помощью root, подскажите, очень нужно сломать эту идиотскую систему huawei по занижению производительности
А мобила твоя не слишком быстро расплавится от такого?
Поставлю охлаждение, воткну в розетку и будет отлично
Ну что, будет ответ на мой вопрос?
Во-первых, это может быть аппаратным ограничением, во-вторых, а с чего ты взял, что это что-то решит?
Я не собираюсь платить деньги за простой совет, какую опцию мне отключить
Это ограничение ядра на андроиде, решит с того что если программа задействует вместо 4-х энергосберегающих, все 8 ядер, производительность вырастет в 2 раза. Вы лучше не болтайте, а помогите
Нигде в интернете нет рабочего решения, и информации
простой совет
Ну смотри, я дам тебе ссылку на ядро для одного телефона (не моего). Его разработчик решил эту проблему. Я хочу узнать, КАК, чтобы я сам мог собрать ядро но уже для своего телефона, или каким-то другим способом отключить этот параметр, блокирующий производительность
Если бы. Там непростой коммутатор ядер.
Samsung сфейлилось на первых big.little. Запороли подключение переключателя так, что заботало только в режиме переключения между «большим» и «малым» кластерами. И то с потерей кэшей. Поздней уже нормальные выстили.
Уверен что в твоем не так же? В любом случае наверняка надо смотреть в сторону big.little или новых версий.
Это ограничение ядра на андроиде
В первых процах с big.LITTLE, по-моему, все ядра одновременно в принципе не могли работать, не факт, что твой так может. Могу, ошибаться, конечно.
производительность вырастет в 2 раза
Только если задача параллелится.
если программа задействует вместо 4-х энергосберегающих, все 8 ядер
Нет, если программа использует 4 именно энергосберегающих ядра, то он никогда не будет использовать все 8. Ибо если бы она могла, то планировщик давно бы её перекинул на big ядра, а, раз не перекидывает, то и больше мощи она физически использовать не может.
производительность вырастет в 2 раза
Нет, на big.LITTLE использование всех ядер никогда не даст 2х-кратного увеличения. Более того, в некоторых случаях производительность может упасть.
У меня программа, адаптированная для многоядерных процессоров, я проводил тест на чужом телефоне, где ставил кастомное ядро, заставляющее телефон использовать 8 ядер, и производительность тогда выросла в 4 раза. Если все 8 ядер нельзя, скажите хотя бы КАК ИСПОЛЬЗОВАТЬ BIG ВМЕСТО LITTLE
Так может просто спросить у того разработчика?
А чтобы тебе здесь кто-то помог, нужно больше инфы. Если тебе, конечно, в принципе можно тут помочь.
у меня Huawei Honor 7C, там система тупит, и не хочет включать BIG кластер даже при высокой нагрузке. При этом я проверял спец виджетом загрузку процессора, и там было чётко видно, использовалось 3 энергоэффективных ядра, и то на половину, хотя программа работала бы быстрее, если бы я хотя бы мог принудительно запустить её на бигах.
Я бы посмотрел в программах типа Kernel Adiutor/EX Kernel Manager и тд. Опции включить все ядра я не увидел, но можно поиграться с планировщиками. Ну и да посмотри кастомные ядра, может ктонить собирает ядра с возможнстью разгона может там есть подобные опции
Разработчика нет в сети с 2018 года
Я пробовал включать режимы performance, разгонял до максимума, ничего не помогло. Как использовал little так и используют, а big всегда простаивает
Я не собираюсь платить деньги за простой совет
Тогда читай бесполезные бесплатные советы.
Господи, ты бы хоть на википедию сходил. Это про модель, у которой самсунг поставил 8ми ядерный чип, но програмно отключили 4 из них. Подобных моделей в мире полторы штуки, ты уверен, что твоя из таких?
У меня модель, которая включает другие 4 только когда запущено много программ в фоне, например много проигрывателей видео и игр
Мне не важно, почему он их отключил, я хочу ПРОСТО включить обратно, а не когда телефон перегружен. Просто навсегда включить, использовать либо big, либо все сразу, не включая для энергосбережения
У тебя хоть в /proc/cpuinfo все эти восемь ядер видны? А то может оказаться так, что ядра у тебя только парами работают, и их никак нельзя оба из пары одновременно включить. Погугли ещё MP vs. IKS про big.LITTLE.
Ядра то видны, но всегда используется только 4, независимо от того загружен телефон или нет. К тому же я замерил разницу между big и little, и она составила всего 30%, а на том телефоне где мод на 8 ядер разница 4 раза!! 4 блин. Мне не терпится найти способ превратить big.little в true octa-core
Мне не терпится найти способ превратить big.little в true octa-core
Ещё скачай побольше ОЗУ и патч на апгрейд GPU до 1080ti.
There are no user level or middleware level code changes. The big.LITTLE software lies entirely in kernel space and is delivered as a relatively small patch set that is applied by the silicon vendor in board and chip support libraries.
И что ты хочешь мне сказать этой ссылкой? Я в курсе что система их отключает, я хочу узнать как запретить ей это делать
И что ты хочешь мне сказать этой ссылкой
Слишком нетерпелив ты, юный падаван, на Темную Сторону приведет это тебя.
Да понятно всё это, где само решение проблемы? Как перенастроить cpu, чтобы он работал в режиме heterogeneous switching (HMP)?
Всё что я хочу это готовое решение, где мне внести изменение, чтобы система использовала все ядра одновременно, и ничего не убирала по своим кластерам
Например сделать так, чтобы в обоих кластерах было не 0-3 и 4-7, а 0-7, тогда он будет думать, что у меня 16 ядер, в каждом кластере по 8, а на самом деле просто 8. Как угодно обмануть эту систему, потому что производительность отвратительная
Есть один совет, но без инфы не скажу ;)
Кстати. Некоторые ядра не совсем совместимы, даже если их объединили. Там не то, что одновременно запустить больше потоков сложно, но и следить постоянно надо на каком ядре находишься. Вроде разрабы mono писали про проблемы и крэши с некоторыми конфигурациями из-за этого.
нету там восьми) либо 4 одних, либо 4 других))
darkenshvein ★★★★★ ( 22.06.19 20:06:47 )
Последнее исправление: darkenshvein 22.06.19 20:06:53 (всего исправлений: 1)
хех. один клиент у нас заказывал винсервер с 12 ядрами. я с удивлением наблюдал в мониторе нагрузку в однопоток.
после чего через месяц читал от них же гневное письмо, «у вас слабый сервер наша раззвездатая программа тормозит», емнип.
надо было использовать наш Российский биглитттл Эльбрус!
КАК ИСПОЛЬЗОВАТЬ BIG ВМЕСТО LITTLE
разве это не автотюн по нагрузке?
Всех приветствую! Помогите по проблеме: Есть некоторая программа, которой необходимо использовать все ядра/потоки ЦПУ при необходимости, ей доступно лишь одно ядро и один поток, программа имеется в исполнении как для Windows так и для Linux, в Windows все нормально, т.е. ей доступны для задействования все ядра и потоки моего ЦПУ а Linux только одно ядро и один его поток, а именно пробовал в Kubuntu 16.04 и 18.04 в других линуксах пока не пробовал, хотя есть вероятность что и в остальных такое же может быть, процессор у меня AMD Ryzen 7 и видимо для ЦПУ от AMD, для подобной программы, требуется какая то дополнительная настройка через настройки устройств системы в псевдофайловой системе Sysfs, я в этом не силен, может поможет кто советом? Т.к. с процессорами от Intel c задействованием ядер/потоков в линуксе ни у этой ни у каких либо других программ проблем нет
нужно несколько функций int __ryzen main(), по количеству ядер
Куда эту функцию вставить?
которой необходимо использовать все ядра/потоки ЦПУ при необходимости
Она написана специально с расчётом на это? libpthread в выводе ldd путь/к/исполняемому/файлу есть?
ей доступно лишь одно ядро и один поток
Откуда это известно?
Ох уж этот заветный потанцевал.
/sys, /proc смонтированы? Ты там не из-под голого ядра его запускаешь?
пиши в гитхаб аффтарам, у них спрашивай, почему у тебя в 8 раз меньше производительсность на линуксе, мы откуда знаем тут
Писал без ответа, вот думаю может систему надо поднастроить
Стандартно установленная Убунта(кубунта точнее), без самодеятельности, вся система на одном томе - /, /Home на втором, свап на третьем, sys и proc на томе с системой как я вижу имеются
может там видеокарта нужна
Нет, это только CPU майнер, для видюх у этих авторов отдельная прога
может у амдкукурузенов AVX инструкций нет, а сабж их активно использует?
В винде то XMrig работает нормально - выдает около 500-600 H/s В линуксе мне выдает около 50-60 H/s AVX у меня на Ryzen'е есть
А я все эти настройки и смотрел и в конфиге прописывал, ничего не изменилось
А top например, что пишет по загруженности ядер? Может быть не в ядрах и дело.
В смысле что другие процессы могли загрузить ядра и проге ничего не осталось? Вряд ли в этом дело, как бы только на свежеустановленной системе запускал прогу, больше ничего особенно лишнего в системе не устанавливал и не запускал, откуда там столько лишней нагрузки сразу на все 8 ядер возьмется, сейчас вот к сожалению не могу посмотреть, снес систему чтобы другие линуксы перепробовать, хотя есть сомнения что это чтото изменит Также по инструкции включал поддержку больших страниц в памяти
On Linux you will need to configure large page support and increase your ulimit -l.
To set large page support, add the following lines to /etc/sysctl.conf:
To increase the ulimit, add following lines to /etc/security/limits.conf:
* soft memlock 262144 * hard memlock 262144
You WILL need to log out and log back in for these settings to take affect on your user (no need to reboot, just relogin in your session).
В данном пошаговом руководстве вы узнаете, как правильно собрать и установить ядро ветвей >2.6 в семействе ОС Ubuntu.
Форки
pf-kernel – форк ядра, развиваемый одним из участников русскоязычного сообщества. Цель сего проекта — собрать максимально оптимизированное по скорости и возможностям ядро под себя, заодно предоставив другим возможность пользоваться этими наработками.
Zen Kernel – форк, в рамках которого развивается ядро пригодное для ежедневного использования. Не расчитано на серверные системы.
Установка
Ядро является одним из жизненно важных компонентов каждого дистрибутива Linux. В Ubuntu ядро содержится в пакетах linux-image-версия_ядра-тип_ядра . Для простоты обновления так же имеется пакет linux-image-тип_ядра , в зависимостях которого указана последняя версия ядра имеющеяся в репозитории.
В репозитории Ubuntu поддерживаются следующие типы ядер:
generic-pae 2) – ядро, включающее в себя возможность адресовать больше 4Гб оперативной памяти на 32-битных системах.
Начиная с Ubuntu 10.04 при установке с MinimalCD 3) система автоматически определяет объем оперативной памяти и устанавливает подходящее ядро.
generic-pae ядро позволяет 32-битной системе использовать до 64ГБ общего объёма оперативной памяти, выделяя под нужды конкретного процесса не более 4ГБ, в то время как простое ядро generic работает не более чем с 4ГБ ОЗУ.
64-битное ядро позволяет адресовать до 1ТБ памяти, потребляемой процессами.
Шаг 6. Установка образов и заголовков ядра
Когда сборка ядра подошла к концу, в вашей домашней папке появятся два deb-пакета. Их и необходимо установить. Для этого выполните команды:
где 2.6.x.y - версия собранного ядра, arc - архитектура процессора (i386 - 32-бит, amd64 - 64-бит).
Если вы не знаете точного названия пакета, выведите список файлов в домашнем каталоге командой
и найдите эти самые два пакета.
Ссылки
Получение исходного кода
Исходный код ядра, используемого в Ubuntu можно получить установив пакет linux-source :
После установки в директории /usr/src появится архив называющийся linux-source-верися_ядра.tar.bz2.
Шаг 7. Генерация начального RAM-диска
Для корректной работы Ubuntu требует наличия образа начального RAM-диска. Чтобы его создать, выполните команду:
где 2.6.x.y - версия собранного ядра.
Шаг 8. Обновление конфигурации загрузчика GRUB
Для того, чтобы новая версия ядра была доступна для выбора при загрузке компьютера, выполните следующую команду:
Файл menu.lst (для GRUB версии 1) или grub.cfg (для GRUB версии 2) обновится в соответствии с наличием установленных операционных систем и образов ядер.
Этот шаг тоже можно пропустить, потому что во время установки ядра команда update-grub вызывается postinst-скриптом
Шаг 9. Проверка ядра
Сборка и установка ядра успешно выполнены! Теперь перезагрузите компьютер и попробуйте загрузить систему с новым ядром. Чтобы удостовериться, что система запущена с новым ядром, выполните команду
Она выведет на экран используемую версию ядра.
Если всё сделано правильно, то вы можете удалить архивы с исходным кодом и весь каталог linux-2.6.x.y в вашей домашней папке. Это освободит около 5 ГБ на вашем жёстком диске (размер освобождаемого пространства зависит от параметров сборки).
На этом процесс сборки и установки завершён, поздравляю!
Шаг 3. Применение патчей
Официальные патчи уже наложены на исходники, если ядро получалось описанной выше командой:
Если вы никогда до этого не применяли патчей к исходному коду, то выполните следующую команду:
Эта команда установит программу patch, необходимую для, как можно догадаться, применения патчей. Теперь скачайте файл патча в папку, куда вы распаковали ядро. Это может быть либо архивный файл (напр. Bzip2 или Gzip), либо несжатый patch-файл.
На данный момент подразумевается, что вы уже сохранили файл в ту папку, куда ранее распаковали ядро, и установили программу patch.
Если скачанный вами файл был в формате Gzip (*.gz), тогда выполните следующую команду для распаковки содержимого архива:
Если скачанный вами файл был в формате Bzip2 (*.bz2), тогда выполните следующую команду для распаковки содержимого архива:
где 2.6.x.y - версия патча ядра. Соответствующие команды распакуют файл патча в папку с исходным кодом ядра. Прежде чем применить патч, необходимо удостовериться, что он заработает без ошибкок. Для этого выполните команду:
где 2.6.x.y - версия патча ядра. Эта команда сымитирует применение патча, не изменяя сами файлы.
Если при её выполнении не возникнет ошибок, то изменения можно смело внедрять в сами файлы. Для этого выполните команду:
где 2.6.x.y - версия патча ядра. Если не было никаких ошибок, значит к исходному коду был успешно применён патч.
где 2.6.x.y - версия патча и ваших исходников
Читайте также: