Как лучше всего измерить «свободное» процессорное время в системе на базе Linux?

Для некоторых клиентов, для которых мы разрабатываем программное обеспечение, мы обязаны «гарантировать» определенный объем свободных ресурсов (память, дисковое пространство, ЦП). Память и дисковое пространство просты, но процессор немного сложнее.

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

Если наши обычные приложения способны работать с приемлемым уровнем производительности и могут пройти все тесты своей функциональности, пока также выполняется процесс свободного времени, то мы «предполагаем», что выполнили свое обязательство относительно свободного времени процессора.

Я уверен, что есть и другие методы, позволяющие делать то же самое, и хотел бы узнать о них.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
505
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

С многоядерной / процессорной системой вы можете использовать Affinity в своих интересах.

SAR - это стандартный процесс * nix, который собирает информацию об оперативном использовании системных ресурсов. Он также имеет инструмент командной строки, который позволяет создавать различные отчеты, и обычно данные сохраняются в базе данных.

Ответ принят как подходящий

Так что это может быть не совсем тот ответ, который вы ищете, но если все, что вы хотите сделать, это убедиться, что ваше приложение не превышает определенных ограничений на потребление ресурсов, и вы работаете в Linux, вы можете настроить / etc / security / limits.con (может быть другой файл в выбранном вами дистрибутиве), чтобы установить ограничения для конкретного пользователя и запускать процесс только от имени этого пользователя. Это, конечно, предполагает, что у вас есть такой уровень контроля над производственной средой вашего клиента.

Если я правильно понимаю, вас беспокоит, работает ли приложение, когда определенный процент вычислительной мощности недоступен.

Самый неопровержимый подход - использовать для тестирования оборудование с недостаточной мощностью. Если процессор в вашей установке позволяет вам это сделать, вы можете уменьшить его тактовую частоту онлайн. Ядро Linux предоставляет для этого простой интерфейс, см. /sys/devices/system/cpu/cpu0/cpufreq/. Для этого также существует множество приложений с графическим интерфейсом.

Если ваш процессор не может изменять тактовую частоту в режиме онлайн, вы можете сделать это сложным способом и выбрать в BIOS меньший множитель.

Думаю, вы поняли. Если он работает на частоте 1600 МГц вместо 2400 МГц, вы можете гарантировать 33% свободного времени процессора.

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