Действительно ли возможно отключить ЦП, не ядро? Я хочу сделать тест, чтобы проверить, могла ли производительность иметь большое значение или нет.
Я использую Ubuntu 10.10.
Помимо выполнения этого в Вашей личинке BIOS назвали опцию maxcpus
.
Можно отредактировать эту опцию в при выборе параметра загрузки личинки путем добавления maxcpus=1
к параметрам. Случайное изображение личинки:
Выберите 'e', и Вы добираетесь до командной строки, где можно добавить опции.
Можно также создать постоянный параметр загрузки в личинке путем создания копии текущего параметра загрузки и добавить maxcpus=1
к параметрам начальной загрузки. Можно назвать эту 'Ubuntu, ядро 2.5.12-9-386 (1 CPU)' и иметь его среди других параметров загрузки как шоу изображения.
Можно проверить работу 1 CPU путем издания:
cat /proc/cpuinfo | grep processor
это должно показать что-то вроде этого:
processor : 0 processor : 1
И 2-я строка должна исчезнуть после начальной загрузки с 1 ЦП.
Можно всегда отключать ЦП от его сокета. Это - грубая сила, но Вы, как гарантируют, получите тест, который Вы хотите, и Вы не должны волноваться, делает ли переключатель kernel/BIOS/whatever действительно то, что Вы надеетесь, что это делает.
Моя компания имеет большие установки ферм сервера в различных местоположениях во всем мире. В нашей лаборатории мы будем иногда удалять центральные процессоры из сокетов для просто такого теста.
Существует интересная вариация на этот тест, что можно сделать с мульти-ЦП системы NUMA. На тех типах материнских плат можно удалить всю память DIMMs, которыми управляет один физический ЦП. Система все еще загрузится очень хорошо, и можно затем запустить тесты с приложением, прикрепленным к различным ядрам, которые позволят Вам измерять влияние "локальной" или "удаленной" памяти.
Хотел бы видеть производительность многопоточного приложения наряду с количеством ядер? Если это так, можно использовать taskset утилиту. Я предполагаю, что у Вас есть машина NUMA. Можно установить numactl утилиту, и при помощи ее можно найти который соответствие ядер который ЦП. Например, Ваша машина имеет два четырехъядерных CPU (микросхемы). При помощи taskset утилиты можно сделать ядра одного ЦП как набор и выделить их приложению. Затем Ваше приложение использует только один ЦП/микросхему (четыре ядра). Сообщите мне, нужно ли Вам больше информации.
Можно динамично отключить центральные процессоры через /sys/devices/system/cpu/cpuN/online
, например, для отключения ЦП 1 используйте:
echo 0 | sudo tee /sys/devices/system/cpu/cpu1/online
и повторно включить, используйте:
echo 1 | sudo tee /sys/devices/system/cpu/cpu1/online