Я могу добраться, 100% выделили ЦП моему критическому процессу?

Я ищу способ получить последовательное измерение времени (<1%-е различие между различными выполнениями) для моей программы в соответствии с Ubuntu 14.04. perf stat шоу, что я все еще получаю довольно много контекстных переключений, хотя моя программа никогда не дает контроль к ОС (никакой ввод-вывод, никакое выделение памяти и т.д.). Я действительно выполняю использование программы sudo nice -n -20 на экранированном ЦП (мой Intel i7 CPU имеет четыре физических ядра, гиперпоточность отключена в BIOS) с -k on переключатель к cset shield.

Я понимаю, что неперемещаемые процессы ядра являются источником контекстных переключений. Так, мои вопросы: существует ли способ настроить защиту при начальной загрузке, так, чтобы те неперемещаемые процессы работали на неэкранированных центральных процессорах для запуска с? В случае, что ответ является "нет", там иначе, я могу получить чистую среду для своего критического процесса в соответствии с Ubuntu?

1
задан 6 February 2015 в 04:32

4 ответа

Im, собирающийся засунуть мою шею здесь и сказать, что это не возможно на Linux в целом.

В системах SMP существует планировщик, работающий на каждом ядре, которое является, почему Вы все еще получаете контекстные переключения. Если Ваше приложение действительно настолько очень важно, возможно, необходимо использовать некоторый RTOS, а не Linux.

1
ответ дан 10 November 2019 в 10:57

Смотрите на schedtool пакет. Это предлагает средства блокировки ЦП и выбор планировщиков ЦП пользователю.

<час>

Взволнованный о вещах влияния GUI? От виртуального терминала уничтожьте X и посмотрите. Вероятно, с i7 ЦП, существует достаточно ядер для создания этого не важным. Это - весь вопрос управления совместно используемыми ресурсами с ЦП, являющимся только одним таким ресурсом. Некоторые ресурсы так многочисленны, трудно помнить, что они совместно используются, как память. Чем больше Вы удостоверяетесь, что Ваш "критический процесс" не задержан ни из-за чего больше, тем хуже Ваш Linux общего назначения ОС будет вести себя с точки зрения взаимодействия с пользователем.

1
ответ дан 10 November 2019 в 10:57

Я не знаю то, что Вы подразумеваете под неэкранированными процессорами, но ими, способ присвоить любой процесс CPU состоит в том, чтобы использовать taskset. Можно даже использовать его на модулях ядра для принуждения сырой политики NUMA.

0
ответ дан 10 November 2019 в 10:57

Когда я хочу выполненный выполнить сопоставимые эксперименты I: Заблокируйте частоты тактовой частоты ЦП или регулятор, чтобы избежать возможных различий в ответе; Вызовите задачу работать на определенном ЦП (если не многопоточный); Если существует какой-либо дисковый ввод-вывод, включенный, или какой-либо другой источник кэширования, сбросьте кэш памяти между выполнениями для справедливого сравнения.

Для моих экспериментов, который всегда был достаточно хорош, но возможно не для Ваших. Я отредактирую это с большим количеством деталей при желании.

Редактирование: Я забыл упоминать, и очень важный. Я только использую выпуск сервера Ubuntu для этого типа работы. Рабочие столы имеют путь к большому количеству другого материала, всегда работающего. и таким образом, "в других отношениях неактивный" компьютер действительно не, где почти бездействуют. На неактивном сервере существует только случайное задание крона, которое может и действительно портить то выполнение эксперимента.

, Например, я сделал 262 выполнения программы, которая занимает в среднем 5,6217 секунд для выполнения. Стандартное отклонение времени выполнения составляло 0,0119 секунды, и очень худшие случаи в целом составляли +0.68% и-0.56%. Я вызвал ЦП 7 и вызвал режим производительности (но обратите внимание, что даже в процессорах Intel i7 режима производительности может замедлить тактовую частоту собой.)

, Кроме того, если я отключаю intel_pstate регулятор частоты и использую acpi_cpufreq один в "powersave" режиме, в основном блокируя центральные процессоры в минимуме pstate (самая низкая частота), тогда я добираюсь о +/-изменения времени выполнения на 0,01% на среднем времени выполнения 13,22 секунд.

0
ответ дан 10 November 2019 в 10:57

Другие вопросы по тегам:

Похожие вопросы: