Как получить параметр ядра isolcpus, работающий с Precise 12.04 amd64?

5

Я тестировал этот материал, пытаясь зарезервировать некоторые процессоры на хосте с двумя Intel E5645, но я не могу заставить его работать по какой-то причине. Последующие шаги:

  1. Редактировать / etc / default / grub и добавить isolcpus = 0,1 в GRUB_CMDLINE_LINUX_DEFAULT

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash isolcpus=0,1"

  2. Запустите update-grub

  3. Reboot

После этого cat / proc / cmdline показывает:

BOOT_IMAGE=/boot/vmlinuz-3.2.0-26-generic root=UUID=52cfedad-40be-41b9-9f88-c282a7ae3f24 ro quiet splash isolcpus=0,1 vt.handoff=7

Протестировано с использованием стресса:

apt-get install stress && stress -c 24

Мониторинг с использованием верхнего и нажатия 1 для отображения отдельных характеристик процессора. До сих пор никакие ЦП не изолированы от планировщика, и все они находятся под напряжением.

Cpu0  : 99.7%us,  0.3%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu1  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu2  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu3  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu4  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu5  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu6  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu7  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu8  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu9  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu10 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu11 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu12 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu13 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu14 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu15 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu16 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu17 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu18 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu19 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu20 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu21 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu22 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa
Cpu23 :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa

Протестировано то же самое в CentOS 6 x86_64 и работает как ожидалось.

Искал базу данных ubuntu и linux ошибок в панели запуска, но пока ничего не нашел.

Разве я не тупой, или я что-то упускаю? Подсказки?

Спасибо!

работ:

Ссылка

    
задан rubiojr 18.07.2012 в 14:55
источник

2 ответа

4

Отключено SMT (Hyper-Threading) в BIOS, питание циклически, проверено снова с выключенным HT и Isolcpus работает, как ожидалось.

Перезапустимый SMT в BIOS, работающий циклически, по-прежнему работает, как ожидалось.

Определенно не лучший ответ, который вы могли бы ожидать, но он работал для меня тем не менее.

    
ответ дан rubiojr 19.07.2012 в 12:56
2

isolcpus только isloate от активности пользовательского пространства ceratin и не будет изолировать процессор от активности ядра (сторожевые псы, kworkers, linux stack ...). Кроме того, вы не должны изолировать cpu 0 (который имеет множество специальных действий, таких как обнаружение usb, настройка таймера acpi, диспетчеризация wrmsr / rdmsr ...., которая, как правило, составляет 2% со стандартным дистрибутивом, где все драйверы включены по умолчанию)

Вы можете проверить, какие процессы выполняются на каких ядрах, путем отображения всех потоков, отсортированных по номеру ядра.

ps -aFeL | cut -c 48- | sort -n

Вам также необходимо проверить и изменить аффинности в / proc / irq / *, чтобы попытаться изменить сродство к прерываниям.

Вы можете динамически резервировать cpus и удалять «большинство» задач ядра Linux с помощью инструмента cpuset.

вместо

taskset -c 3-7,11-15 program args

попробуйте это

sudo apt install cpuset
cset set --list
cset shield -c 3-7,11-15
cset set --list
cset shield -e program -- args  

И тогда вы можете оценить разницу

ps -aFeL | cut -c 48- | sort -n

При выполнении этих двух команд

cset shield -e stress -- -c 16
stress -c 16
    
ответ дан Pierre 20.02.2017 в 19:03