Страница 1 из 1
Параметры ядра
Добавлено: 17 ноя 2015, 22:47
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, но вся система становится крайне тормозной, крайне.
При этом открываю htop и вижу, что при запущенном latency-test и одном glxgears ядро (второе или первое соответственно) становится загружено на 100%, при том, что другое бездельничает полностью.
Можно ли все же заставить real-time приложения выполняться на одном ядре, а остальное все на другом? и как?
Re: Параметры ядра
Добавлено: 18 ноя 2015, 01:56
Serg
Lexxa писал(а):Можно ли все же заставить real-time приложения выполняться на одном ядре, а остальное все на другом? и как?
isolcpus именно это и делает.
Lexxa писал(а):При этом открываю htop и вижу, что при запущенном latency-test и одном glxgears ядро (второе или первое соответственно) становится загружено на 100%, при том, что другое бездельничает полностью.
Всё правильно - isolcpus действует.
Re: Параметры ядра
Добавлено: 18 ноя 2015, 02:34
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
Re: Параметры ядра
Добавлено: 18 ноя 2015, 08:52
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?
Re: Параметры ядра
Добавлено: 18 ноя 2015, 09:11
Lexxa
taskset 1 linuxcnc /путь_к_ini запустит все дочерние процессы на ядре 0 или нет?
Re: Параметры ядра
Добавлено: 18 ноя 2015, 09:21
Lexxa
сам спросил, самответил - да, все дочерние на том же ядре, который указан в taskset.
Теперь вопрос, чем это плохо?
Re: Параметры ядра
Добавлено: 18 ноя 2015, 09:51
Serg
Lexxa писал(а):Но real-time тоже переезжает на ядро 0, вместо 1, а цель real-time на 1, gui и прочая хрень на 0.
А как ты это узнал?

RT код выполняется не внутри пользовательских процессов (которым доступно только 0 ядро), а внутри ядра, которое безраздельно пользует ядро 1.
Re: Параметры ядра
Добавлено: 18 ноя 2015, 10:14
Lexxa
UAVpilot писал(а):А как ты это узнал?
загрузкой процессора равной нулю при отработке УП в linuxcnc
Re: Параметры ядра
Добавлено: 18 ноя 2015, 10:50
torvn77
Lexxa писал(а):загрузкой процессора равной нулю при отработке УП в linuxcnc
1)Linuxcnc состоит из нескольких процессов и не факт, что его потомки будут запущены с теми же ограничениями на ядра, что и их родитель.
2)Обработка УП при открытии может идти и в пользовательском пространстве.
Что не понятно, так это то что запуск процесса с маской 12 или 48 не приводит к запуску на соседних ядрах,
хотя по идее должен,что в случае AMD-FX представляет из себя существенную разницу.

- Screenshot.png (2.69 КБ) 5536 просмотров
Re: Параметры ядра
Добавлено: 18 ноя 2015, 13:05
Serg
Lexxa писал(а):загрузкой процессора равной нулю при отработке УП в linuxcnc
Всё правильно, планировщик работает не в RT, а значит на общем процессоре.
Загрузку процессора RT компонентами увидеть никак не получится, т.к. они выполняются в составе ядра Linux, а загрузку процессора самим ядром посмотреть нечем
Re: Параметры ядра
Добавлено: 18 ноя 2015, 13:13
Lexxa
ага, значит
isolcpus=0
в купе с
taskset 0x01 /usr/bin/linuxcnc /путь_к_ini
изолирует все, что связано с linuxcnc (RT, планировщик, GUI итд и тп) от X и всей ОС в целом?
Хорошо это или плохо?
Re: Параметры ядра
Добавлено: 18 ноя 2015, 13:40
Serg
taskset тут не нужен.
Lexxa писал(а):изолирует все, что связано с linuxcnc (RT, планировщик, GUI итд и тп) от X и всей ОС в целом?
Нет. isolcpus резервирует один процессор исключительно для нужд ядра. X, планировщик, GUI итд и тп - это всё обычные процессы и им всем придётся тесниться на оставшемся процессоре.
RT код работает внутри ядра, ну а ядро большую часть своих действий перенесёт на освободившийся процессор (но всё равно будет использовать оба).
Re: Параметры ядра
Добавлено: 18 ноя 2015, 14:12
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.
Re: Параметры ядра
Добавлено: 18 ноя 2015, 15:20
Serg
Lexxa писал(а):isolcpus=1
isolcpus запрещает планировщику ядра учитывать второй процессор при распределении задач по процессорам.
taskset назначает процессу конкретный процессор минуя планировщик.
Таким образов в случае
Lexxa писал(а):isolcpus=1 taskset 0x01 /usr/bin/linuxcnc /путь_к_ini
на процессоре №2 будут работать RT код и процессы LinuxCNC (мешая друг другу).
Re: Параметры ядра
Добавлено: 22 янв 2019, 08:49
ГАлексей
Комп собран на плате ASRock J3455B-ITX 2 ГБ оперативки. Проц 4х ядерный. После загрузки УП в линуксцнц размером 23МБ начинает жутко тормозить. В диспетчере задач вижу что грузится только один процессор, причем на максимум. Если я правильно понимаю, что это как раз такая же проблема?
Сколько максимально ядер можно отдать под программу? 3 или 4?
Для ничего не понимающего в линукс, подскажите какую именно команду надо забить, что б сделать это. И куда?
Re: Параметры ядра
Добавлено: 22 янв 2019, 10:46
Сергей Саныч
Отключите отображение траектории.
Re: Параметры ядра
Добавлено: 22 янв 2019, 11:11
ГАлексей
Сергей Саныч писал(а):Отключите отображение траектории.
Отключал, практически не помогает.
Виснет так, что невозможно выставить 0. То совсем не реагирует на клаву, то сорвётся и до упора.
Re: Параметры ядра
Добавлено: 28 янв 2019, 14:36
ГАлексей
Сергей Саныч писал(а):Отключите отображение траектории.
Убрал все галки, где начиналось со слова "показать" и о чудо, тормозов нет.
Оказалось не установлены драйвера на встроенную видеокарту. Теперь новый вопрос - как их установить?
Если правильно нашел, то по этой ссылке есть то, что мне нужно
https://01.org/linuxgraphics/downloads/ ... ack-recipe Но вот что конкретно скачивать и как устанавливать?
Мой процессор в списке там есть.