#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 .
Эта программа предназначена для тестирования отзывчивости системы путем запуска компиляции ядра при различных условиях загрузки. Он предназначен для сравнения разных ядер, а не разных машин. Он использует реальные рабочие нагрузки, которые вы ожидаете найти в течение коротких периодов времени на повседневных машинах, но поддерживает их на время компиляции ядра, чтобы увеличить отношение сигнал / шум.
так что, возможно, вы могли бы использовать это, подготовив два ядра с разными планировщиками.