Для некоторых клиентов, для которых мы разрабатываем программное обеспечение, мы обязаны «гарантировать» определенный объем свободных ресурсов (память, дисковое пространство, ЦП). Память и дисковое пространство просты, но процессор немного сложнее.
Один из использованных нами методов - создать процесс, который потребляет гарантированное количество процессорного времени (скажем, 2,5 секунды каждые 5 секунд). Мы запускаем этот процесс с наивысшим приоритетом, чтобы гарантировать, что он работает и потребляет все необходимые циклы ЦП.
Если наши обычные приложения способны работать с приемлемым уровнем производительности и могут пройти все тесты своей функциональности, пока также выполняется процесс свободного времени, то мы «предполагаем», что выполнили свое обязательство относительно свободного времени процессора.
Я уверен, что есть и другие методы, позволяющие делать то же самое, и хотел бы узнать о них.





С многоядерной / процессорной системой вы можете использовать Affinity в своих интересах.
SAR - это стандартный процесс * nix, который собирает информацию об оперативном использовании системных ресурсов. Он также имеет инструмент командной строки, который позволяет создавать различные отчеты, и обычно данные сохраняются в базе данных.
Так что это может быть не совсем тот ответ, который вы ищете, но если все, что вы хотите сделать, это убедиться, что ваше приложение не превышает определенных ограничений на потребление ресурсов, и вы работаете в Linux, вы можете настроить / etc / security / limits.con (может быть другой файл в выбранном вами дистрибутиве), чтобы установить ограничения для конкретного пользователя и запускать процесс только от имени этого пользователя. Это, конечно, предполагает, что у вас есть такой уровень контроля над производственной средой вашего клиента.
Если я правильно понимаю, вас беспокоит, работает ли приложение, когда определенный процент вычислительной мощности недоступен.
Самый неопровержимый подход - использовать для тестирования оборудование с недостаточной мощностью. Если процессор в вашей установке позволяет вам это сделать, вы можете уменьшить его тактовую частоту онлайн. Ядро Linux предоставляет для этого простой интерфейс, см. /sys/devices/system/cpu/cpu0/cpufreq/. Для этого также существует множество приложений с графическим интерфейсом.
Если ваш процессор не может изменять тактовую частоту в режиме онлайн, вы можете сделать это сложным способом и выбрать в BIOS меньший множитель.
Думаю, вы поняли. Если он работает на частоте 1600 МГц вместо 2400 МГц, вы можете гарантировать 33% свободного времени процессора.