Параметры ядра
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Параметры ядра
Имеется материнка с припаяным двухядерным процессором 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 приложения выполняться на одном ядре, а остальное все на другом? и как?
Установлена 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 приложения выполняться на одном ядре, а остальное все на другом? и как?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Параметры ядра
isolcpus именно это и делает.Lexxa писал(а):Можно ли все же заставить real-time приложения выполняться на одном ядре, а остальное все на другом? и как?
Всё правильно - isolcpus действует.Lexxa писал(а):При этом открываю htop и вижу, что при запущенном latency-test и одном glxgears ядро (второе или первое соответственно) становится загружено на 100%, при том, что другое бездельничает полностью.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- torvn77
- Мастер
- Сообщения: 2442
- Зарегистрирован: 02 июн 2012, 22:12
- Репутация: 215
- Откуда: Россия,Санкт-Петербург
- Контактная информация:
Re: Параметры ядра
Смотрите, htop вполне позволяет назначать определённое соответствие процесса пользователя или ядра ОС и определённого ядра CPU (cpu affinity).Lexxa писал(а):Можно ли все же заставить real-time приложения выполняться на одном ядре, а остальное все на другом? и как?
То есть в принципе это возможно.
Остаётся написать програмулину для мониторинга процессов которая поделит 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: Параметры ядра
UAVpilot, ну а почему второе ядро безбожно простаивает тогда?UAVpilot писал(а):isolcpus именно это и делает
В чем же смысл 2-х ядерного проца, если второе ядро ничего не может считать в момент, когда isolcpus работает.
Честно говоря, я не шибко шарю в англ. языке и понял из траблшутинга латенси так, что real-time выполняется на процессоре с наивысшим номером, поэтому рекомендуется выключая HT делать isolcpus=1, при этом система должна зарезервировать ядро 1 и все выполнять на ядре 0. Но real-time тоже переезжает на ядро 0, вместо 1, а цель real-time на 1, gui и прочая хрень на 0.
torvn77, не, htop это просто монитор.
Как сразу запустить приложение на ядре 0, если isolcpus=1 не зная его pid?
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Параметры ядра
taskset 1 linuxcnc /путь_к_ini запустит все дочерние процессы на ядре 0 или нет?
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Параметры ядра
сам спросил, самответил - да, все дочерние на том же ядре, который указан в taskset.
Теперь вопрос, чем это плохо?
Теперь вопрос, чем это плохо?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Параметры ядра
А как ты это узнал?Lexxa писал(а):Но real-time тоже переезжает на ядро 0, вместо 1, а цель real-time на 1, gui и прочая хрень на 0.
RT код выполняется не внутри пользовательских процессов (которым доступно только 0 ядро), а внутри ядра, которое безраздельно пользует ядро 1.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Параметры ядра
загрузкой процессора равной нулю при отработке УП в linuxcncUAVpilot писал(а):А как ты это узнал?
- torvn77
- Мастер
- Сообщения: 2442
- Зарегистрирован: 02 июн 2012, 22:12
- Репутация: 215
- Откуда: Россия,Санкт-Петербург
- Контактная информация:
Re: Параметры ядра
1)Linuxcnc состоит из нескольких процессов и не факт, что его потомки будут запущены с теми же ограничениями на ядра, что и их родитель.Lexxa писал(а):загрузкой процессора равной нулю при отработке УП в linuxcnc
2)Обработка УП при открытии может идти и в пользовательском пространстве.
Что не понятно, так это то что запуск процесса с маской 12 или 48 не приводит к запуску на соседних ядрах,
хотя по идее должен,что в случае AMD-FX представляет из себя существенную разницу.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Параметры ядра
Всё правильно, планировщик работает не в RT, а значит на общем процессоре.Lexxa писал(а):загрузкой процессора равной нулю при отработке УП в linuxcnc
Загрузку процессора RT компонентами увидеть никак не получится, т.к. они выполняются в составе ядра Linux, а загрузку процессора самим ядром посмотреть нечем
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Параметры ядра
ага, значит
isolcpus=0
в купе с
taskset 0x01 /usr/bin/linuxcnc /путь_к_ini
изолирует все, что связано с linuxcnc (RT, планировщик, GUI итд и тп) от X и всей ОС в целом?
Хорошо это или плохо?
isolcpus=0
в купе с
taskset 0x01 /usr/bin/linuxcnc /путь_к_ini
изолирует все, что связано с linuxcnc (RT, планировщик, GUI итд и тп) от X и всей ОС в целом?
Хорошо это или плохо?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Параметры ядра
taskset тут не нужен.
RT код работает внутри ядра, ну а ядро большую часть своих действий перенесёт на освободившийся процессор (но всё равно будет использовать оба).
Нет. isolcpus резервирует один процессор исключительно для нужд ядра. X, планировщик, GUI итд и тп - это всё обычные процессы и им всем придётся тесниться на оставшемся процессоре.Lexxa писал(а):изолирует все, что связано с linuxcnc (RT, планировщик, GUI итд и тп) от X и всей ОС в целом?
RT код работает внутри ядра, ну а ядро большую часть своих действий перенесёт на освободившийся процессор (но всё равно будет использовать оба).
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: Параметры ядра
я просто разобраться хочу.
Тогда как понимать что
если
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.
Тогда как понимать что
если
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.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Параметры ядра
isolcpus запрещает планировщику ядра учитывать второй процессор при распределении задач по процессорам.Lexxa писал(а):isolcpus=1
taskset назначает процессу конкретный процессор минуя планировщик.
Таким образов в случае
на процессоре №2 будут работать RT код и процессы LinuxCNC (мешая друг другу).Lexxa писал(а):isolcpus=1 taskset 0x01 /usr/bin/linuxcnc /путь_к_ini
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Кандидат
- Сообщения: 41
- Зарегистрирован: 01 янв 2019, 20:35
- Репутация: 3
- Настоящее имя: Алексей
- Откуда: Башкортостан
- Контактная информация:
Re: Параметры ядра
Комп собран на плате ASRock J3455B-ITX 2 ГБ оперативки. Проц 4х ядерный. После загрузки УП в линуксцнц размером 23МБ начинает жутко тормозить. В диспетчере задач вижу что грузится только один процессор, причем на максимум. Если я правильно понимаю, что это как раз такая же проблема?
Сколько максимально ядер можно отдать под программу? 3 или 4?
Для ничего не понимающего в линукс, подскажите какую именно команду надо забить, что б сделать это. И куда?
Сколько максимально ядер можно отдать под программу? 3 или 4?
Для ничего не понимающего в линукс, подскажите какую именно команду надо забить, что б сделать это. И куда?
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
-
- Кандидат
- Сообщения: 41
- Зарегистрирован: 01 янв 2019, 20:35
- Репутация: 3
- Настоящее имя: Алексей
- Откуда: Башкортостан
- Контактная информация:
Re: Параметры ядра
Отключал, практически не помогает.Сергей Саныч писал(а):Отключите отображение траектории.
Виснет так, что невозможно выставить 0. То совсем не реагирует на клаву, то сорвётся и до упора.
-
- Кандидат
- Сообщения: 41
- Зарегистрирован: 01 янв 2019, 20:35
- Репутация: 3
- Настоящее имя: Алексей
- Откуда: Башкортостан
- Контактная информация:
Re: Параметры ядра
Убрал все галки, где начиналось со слова "показать" и о чудо, тормозов нет.Сергей Саныч писал(а):Отключите отображение траектории.
Оказалось не установлены драйвера на встроенную видеокарту. Теперь новый вопрос - как их установить?
Если правильно нашел, то по этой ссылке есть то, что мне нужно https://01.org/linuxgraphics/downloads/ ... ack-recipe Но вот что конкретно скачивать и как устанавливать?
Мой процессор в списке там есть.