LINUX.ORG.RU

Affinity, освободить ядро

 


0

1

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

Консольная утилита - вполне пойдёт.

Upd. Пока писал - дошло что можно taskset'om выставить всем процессам в системе заданную маску, но хотелось бы не портить уже выставленные маски.

★★★★★

Последнее исправление: pon4ik (всего исправлений: 1)

У тебя дар туманно выражать свои мысли. В сформулированном тобой виде задачу решить невозможно.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)

Upd. Пока писал - дошло что можно taskset'om выставить всем процессам в системе заданную маску, но хотелось бы не портить уже выставленные маски.

Вангую что маску можно прочитать, изменить и записать.

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

Дык можно, но однострочник я не осилил, а скрипт писать не охота, подумал - мож инкапсулировал уже кто сиё.

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

Гы, ну хоть в чём то у меня дар.

Насчёт невозможности - обосновать можно? Что мешает планировщику отправить одно из физических (хотя бы) ядер в простой?

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

Ну и да, поредактировать всем маску != запретить выполнение на этом ядре новых процессов, которые в юникс лайк системах плодятся и мрут как мухи.

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

Насчёт невозможности - обосновать можно?

Хм. А это не очевидно? Окей... предположим, у тебя 2 процессора и 2 процесса, у одного affinity mask CPU0, у другого - CPU1; на каком бы процессоре ты не пытался запустить следующую программу, тебе придется испортить маску одного из процессов.

Что мешает планировщику отправить одно из физических (хотя бы) ядер в простой?

Назначение планировщика. Оно в том, чтобы загружать все процессоры системы, и единственный способ повлиять на это - affinity mask.

И чтобы два раза не вставать: с помощью isolcpus задача в твоей формулировке тоже не решается.

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

Эмм, ну либо у меня плохо с формулировкой, либо у тебя с парсером. Однако isolcpus, по факту то что мне нужно, с оговоркой что нужно перегружаться, или как то перезагрузить ядро на ходу (х3 можно ли так). По идее сию штуку вполне себе должно быть реально и без перезагрузок провернуть.

Вопрос как бы был не про общий случай, а про одно ядро. Единственное, что таки не покрывается сим чудным параметром, это таки кейс с несбрасыванием масок.

Ещё чудный весчь который приходит на ум - это изолировать все ядра кроме одного, по умолчанию. И пропатчить загрузчик, что бы он вызывал sched_setaffinity для всех пущенных процессов с нужной маской (брать из конфига) на все ядра. Ну и запилить утиль которая «освобождает» ядро посредством выставление нужной маски в конфиге загрузчика и заданного affinity всем процессам в системе. Конечно, вырожденный случай таким образом не покрывается - одно ядро таки будет безраздельно доступно юзерспейсу. Однако работать должно.

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

ога, не допёр слово dedicate приплести, оно сразу и выплывает.

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

Да, наследуется, точно. Не сообразил.

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

Эмм, ну либо у меня плохо с формулировкой, либо у тебя с парсером

Я склоняюсь к первому.

Ещё чудный весчь который приходит на ум - это [...]

Какую прикладную задачу всё это призвано решать (не то, что изложено в хедпосте, а реально)? И чем этот «чудный весчь» лучше установки affinity mask процесса init в скрипте старта системы?

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

Никакую, мне прост интересно стало.

И чем этот «чудный весчь» лучше установки affinity mask процесса init в скрипте старта системы

Ничем, на что мне выше товарисч уже намекнул.

Я склоняюсь к первому.

Ясен пень :)

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

Правильно, я понимаю, что это читается как: на шестом ядре изменить алгоритм планировщика на очередь, и положить в эту очередь указанный процесс?

pon4ik ★★★★★
() автор топика
Последнее исправление: pon4ik (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.