Какая хорошая программа на C может продемонстрировать сильные / слабые стороны разных планировщиков Linux (noop, CFS, deadline)?

#c #linux #operating-system #schedule

#c #linux #операционная система #Расписание

Вопрос:

Я пытаюсь найти способ продемонстрировать, как разные планировщики могут влиять на время выполнения программы. Пока я использую функцию time в Linux только для того, чтобы попытаться увидеть измеримые различия с помощью планировщиков noop, CFS и deadline, но мне не повезло. Для тестовых программ я только что написал кучу программ на C, которые в основном выполняют цикл и подсчитывают числа.

Я подумал, что, возможно, если я запущу один процесс, который считается с большим числом, а затем запущу второй процесс, который считается не так высоко; используя планировщик сроков, второй процесс может завершиться значительно быстрее, потому что это менее ресурсоемкая работа. Однако я не вижу никакой разницы между планировщиками. Мне интересно, может быть, мое понимание планировщиков немного ошибочное? Есть ли более подходящий тип программы, которую я мог бы попробовать создать, чтобы продемонстрировать некоторые из этих концепций?

Может кто-нибудь дать мне несколько советов, советов или что-нибудь в этом роде?

Комментарии:

1. Хороший вопрос! Разве нет доступных тестов? Не изобретайте велосипед и используйте один из них. Может быть, поищите какие-нибудь научные статьи о планировщиках и проверьте тесты, которые они использовали для их измерения.

2. Почему бы вам не использовать hackbench или некоторые другие инструменты сравнительного анализа. Или для пользовательских программ, https://github.com/tsuna/contextswitch это хорошая отправная точка.

Ответ №1:

Копаясь в коливас-коде, я наткнулся на Interbench.

Это тестовое приложение предназначено для тестирования интерактивности в Linux. Краткое определение см. в прилагаемом файле readme.interactivity.

Он предназначен для измерения влияния изменений в дизайне ядра Linux или изменений конфигурации системы, таких как процессор, планировщик ввода-вывода и изменения файловой системы и параметров. При тщательном сравнительном анализе можно сравнивать различное оборудование.

Еще один инструмент, который может пригодиться, снова от Con Kolivas и называется ConTest .

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

так что, возможно, вы могли бы использовать это, подготовив два ядра с разными планировщиками.