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