
Я использую Ubuntu Server Edition 11.10, и у меня есть две чрезвычайно ресурсоемкие программы, работающие на одном ядре. Ни один из этих процессов не был запрограммирован для многоядерной обработки. Есть ли способ указать процессу A работать на ядре 1, а процессу B — на ядре 2?
решение1
Принятый ответ может быть хорошим советом, но он определенно не является ответом на ваш вопрос. Ваш вопрос не означает, что вы не имеете квалификации, чтобы услышать ответ, на самом деле, это звучит как хороший пример ситуации, в которой вы хотели бы конкретно указать, какие процессоры должны что делать.
Переходя к сути, вам нужны CPU Sets. Они поддерживаются в Ubuntu 11.10, поскольку она использует достаточно новое ядро Linux. Я считаю, что требуется Linux 2.6.
Вы можете прочитать страницу руководства по cpuset здесь:http://www.kernel.org/doc/man-pages/online/pages/man7/cpuset.7.html
Вот еще одна страница для общего чтения:http://www.bullopensource.org/cpuset/
Linux, возможно, «отлично» решает, как распределить процессорное время, но он не идеален.
решение2
Надеюсь, это не покажется грубым, но если вы задаете этот вопрос, вам даже не стоит его рассматривать. Это одна из тех вещей, в которых Linux действительно хорош в самостоятельном понимании. Если вы это сделаете, это, скорее всего, очень негативно скажется на производительности. Даже если программа не рассчитана на использование большего количества процессоров, Linux переместит их на другие ядра по мере необходимости. Программа этого не заметит.
Возможно, вы захотите присвоить им обоим низкие nice
значения с помощью nice
команды, чтобы присвоить им более высокие приоритеты.