Параметры ядра

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Параметры ядра

Сообщение Lexxa »

Имеется материнка с припаяным двухядерным процессором Intel Atom.
Установлена Ubuntu 10.04 с linuxcnc и ядром 2.6.32-122-rtai.

Hyper-Treading выключен в BIOS.
lscpu показывает 2 физических ядра
С пустой строкой параметров ядра Max Jitter около 25000
Со строкой
GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=0"
или
GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=1"
Max Jitter не превышает 10000, но вся система становится крайне тормозной, крайне. :evil: :evil: :evil:
При этом открываю htop и вижу, что при запущенном latency-test и одном glxgears ядро (второе или первое соответственно) становится загружено на 100%, при том, что другое бездельничает полностью.

Можно ли все же заставить real-time приложения выполняться на одном ядре, а остальное все на другом? и как?
:bender:
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Параметры ядра

Сообщение Serg »

Lexxa писал(а):Можно ли все же заставить real-time приложения выполняться на одном ядре, а остальное все на другом? и как?
isolcpus именно это и делает.
Lexxa писал(а):При этом открываю htop и вижу, что при запущенном latency-test и одном glxgears ядро (второе или первое соответственно) становится загружено на 100%, при том, что другое бездельничает полностью.
Всё правильно - isolcpus действует.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Параметры ядра

Сообщение torvn77 »

Lexxa писал(а):Можно ли все же заставить real-time приложения выполняться на одном ядре, а остальное все на другом? и как?
Смотрите, htop вполне позволяет назначать определённое соответствие процесса пользователя или ядра ОС и определённого ядра CPU (cpu affinity).
То есть в принципе это возможно.
Остаётся написать програмулину для мониторинга процессов которая поделит c помощью cmdline процессы на группы, которые будет раскидывать по ядрам.
Ну или хотя бы с будет всё выгонять с определённых ядер кроме процессов с определёнными cmdline, которые наоборот, будет на эти ядра загонять.

Занимается этим утилита taskset
Например разрешим процессу с PID 4222 работать только на втором процессоре
taskset -p 0x2 4222
На первом и втором
taskset -p 0x3 4222
только на первом
taskset -p 0x1 4222
Смысл в том, что если просмотреть побитную запись чисел 0x1 0x2 0x3 то можно увидеть следующее:
0x1=001
0x2=010
0x3=011
Где единица разрешает присутствовать на конкретном ядре CPU
Получить pid и cmdline процесса можно командой ps ax -o pid,cmd
Ну а дальше делайте из этого скрипт на bash
Последний раз редактировалось torvn77 18 ноя 2015, 10:35, всего редактировалось 1 раз.
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: Параметры ядра

Сообщение Lexxa »

UAVpilot писал(а):isolcpus именно это и делает
UAVpilot, ну а почему второе ядро безбожно простаивает тогда?
В чем же смысл 2-х ядерного проца, если второе ядро ничего не может считать в момент, когда isolcpus работает.

Честно говоря, я не шибко шарю в англ. языке и понял из траблшутинга латенси так, что real-time выполняется на процессоре с наивысшим номером, поэтому рекомендуется выключая HT делать isolcpus=1, при этом система должна зарезервировать ядро 1 и все выполнять на ядре 0. Но real-time тоже переезжает на ядро 0, вместо 1, а цель real-time на 1, gui и прочая хрень на 0.

torvn77, не, htop это просто монитор.
Как сразу запустить приложение на ядре 0, если isolcpus=1 не зная его pid?
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: Параметры ядра

Сообщение Lexxa »

taskset 1 linuxcnc /путь_к_ini запустит все дочерние процессы на ядре 0 или нет?
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: Параметры ядра

Сообщение Lexxa »

сам спросил, самответил - да, все дочерние на том же ядре, который указан в taskset.

Теперь вопрос, чем это плохо?
:bender:
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Параметры ядра

Сообщение Serg »

Lexxa писал(а):Но real-time тоже переезжает на ядро 0, вместо 1, а цель real-time на 1, gui и прочая хрень на 0.
А как ты это узнал? :)
RT код выполняется не внутри пользовательских процессов (которым доступно только 0 ядро), а внутри ядра, которое безраздельно пользует ядро 1.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: Параметры ядра

Сообщение Lexxa »

UAVpilot писал(а):А как ты это узнал?
загрузкой процессора равной нулю при отработке УП в linuxcnc
:bender:
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Параметры ядра

Сообщение torvn77 »

Lexxa писал(а):загрузкой процессора равной нулю при отработке УП в linuxcnc
1)Linuxcnc состоит из нескольких процессов и не факт, что его потомки будут запущены с теми же ограничениями на ядра, что и их родитель.
2)Обработка УП при открытии может идти и в пользовательском пространстве.

Что не понятно, так это то что запуск процесса с маской 12 или 48 не приводит к запуску на соседних ядрах,
хотя по идее должен,что в случае AMD-FX представляет из себя существенную разницу.
Screenshot.png
Screenshot.png (2.69 КБ) 4878 просмотров
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Параметры ядра

Сообщение Serg »

Lexxa писал(а):загрузкой процессора равной нулю при отработке УП в linuxcnc
Всё правильно, планировщик работает не в RT, а значит на общем процессоре.
Загрузку процессора RT компонентами увидеть никак не получится, т.к. они выполняются в составе ядра Linux, а загрузку процессора самим ядром посмотреть нечем
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: Параметры ядра

Сообщение Lexxa »

ага, значит
isolcpus=0
в купе с
taskset 0x01 /usr/bin/linuxcnc /путь_к_ini
изолирует все, что связано с linuxcnc (RT, планировщик, GUI итд и тп) от X и всей ОС в целом?
Хорошо это или плохо?
:bender:
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Параметры ядра

Сообщение Serg »

taskset тут не нужен.
Lexxa писал(а):изолирует все, что связано с linuxcnc (RT, планировщик, GUI итд и тп) от X и всей ОС в целом?
Нет. isolcpus резервирует один процессор исключительно для нужд ядра. X, планировщик, GUI итд и тп - это всё обычные процессы и им всем придётся тесниться на оставшемся процессоре.
RT код работает внутри ядра, ну а ядро большую часть своих действий перенесёт на освободившийся процессор (но всё равно будет использовать оба).
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: Параметры ядра

Сообщение Lexxa »

я просто разобраться хочу.
Тогда как понимать что
если
isolcpus=1 и просто запустить linuxcnc, то htop показывает, что загружен только процессор №1, а процессор №2 простаивает (т.е. на нем только RT, которое мы не видим)
и если
isolcpus=1 taskset 0x01 /usr/bin/linuxcnc /путь_к_ini
то следуя логике на процессоре №2 останется RT и принудительно запустится linuxcnc, что подтверждает htop, показывая загрузку и процесора №1 и процессора №2.
И если в htop сделать сортировку по процессорам,то будет видно, что все процессы не связанные с linuxcnc крутятся на процессоре №1, а связанные с linuxcnc на процессоре №2.
:bender:
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Параметры ядра

Сообщение Serg »

Lexxa писал(а):isolcpus=1
isolcpus запрещает планировщику ядра учитывать второй процессор при распределении задач по процессорам.
taskset назначает процессу конкретный процессор минуя планировщик.

Таким образов в случае
Lexxa писал(а):isolcpus=1 taskset 0x01 /usr/bin/linuxcnc /путь_к_ini
на процессоре №2 будут работать RT код и процессы LinuxCNC (мешая друг другу).
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
ГАлексей
Кандидат
Сообщения: 41
Зарегистрирован: 01 янв 2019, 20:35
Репутация: 3
Настоящее имя: Алексей
Откуда: Башкортостан
Контактная информация:

Re: Параметры ядра

Сообщение ГАлексей »

Комп собран на плате ASRock J3455B-ITX 2 ГБ оперативки. Проц 4х ядерный. После загрузки УП в линуксцнц размером 23МБ начинает жутко тормозить. В диспетчере задач вижу что грузится только один процессор, причем на максимум. Если я правильно понимаю, что это как раз такая же проблема?
Сколько максимально ядер можно отдать под программу? 3 или 4?
Для ничего не понимающего в линукс, подскажите какую именно команду надо забить, что б сделать это. И куда?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Параметры ядра

Сообщение Сергей Саныч »

Отключите отображение траектории.
Чудес не бывает. Бывают фокусы.
ГАлексей
Кандидат
Сообщения: 41
Зарегистрирован: 01 янв 2019, 20:35
Репутация: 3
Настоящее имя: Алексей
Откуда: Башкортостан
Контактная информация:

Re: Параметры ядра

Сообщение ГАлексей »

Сергей Саныч писал(а):Отключите отображение траектории.
Отключал, практически не помогает.
Виснет так, что невозможно выставить 0. То совсем не реагирует на клаву, то сорвётся и до упора.
ГАлексей
Кандидат
Сообщения: 41
Зарегистрирован: 01 янв 2019, 20:35
Репутация: 3
Настоящее имя: Алексей
Откуда: Башкортостан
Контактная информация:

Re: Параметры ядра

Сообщение ГАлексей »

Сергей Саныч писал(а):Отключите отображение траектории.
Убрал все галки, где начиналось со слова "показать" и о чудо, тормозов нет.
Оказалось не установлены драйвера на встроенную видеокарту. Теперь новый вопрос - как их установить?
Если правильно нашел, то по этой ссылке есть то, что мне нужно https://01.org/linuxgraphics/downloads/ ... ack-recipe Но вот что конкретно скачивать и как устанавливать?
Мой процессор в списке там есть.
Ответить

Вернуться в «LinuxCNC»