Когда я разрабатываю приложение и хочу его оптимизировать, мне нужна обратная связь о ресурсах, которые оно в целом использовало для выполнения задачи. Я использую в настоящее время top
и просто посмотрите, например, на процент использования ЦП. Это дает мне приблизительное представление о производительности приложения, разделенной на службы, которые использует приложение.
Однако этот способ «измерения» очень неточен и его трудно воспроизвести в точности, поскольку на сервере работают разные службы, которые выходят за рамки измерения, а также вызывают колебания доступных ресурсов для разрабатываемого мной приложения. Кроме того, значение использования ЦП в 20% дает очень абстрактное значение, с которым никто не может сравниться.
Есть ли какой-либо инструмент командной строки или графического интерфейса пользователя, который мог бы измерять потребление служб приложения и возвращать общее абсолютное значение, идеально в виде отчета, который я мог бы сохранить в файл, а затем использовать в качестве отправной точки для улучшения приложений?
Я предполагаю, что может быть инструмент измерения использования ресурсов, который дает свои измерения ЦП в тиках ЦП на каждое задействованное ядро, а не в процентах, и, кроме того, измерение может быть запущено вручную (или с помощью сценария) перед запуском приложения, которое находится в разработке, и один раз приложение завершает свою задачу, измерение останавливается, а затем мне предоставляется сводка (общая) всех тиков ЦП, которые потребовались для выполнения задачи, вместо реального времени использования ЦП, которое может сильно варьироваться во время приложение запущено.
Для использования ЦП мне достаточно иметь только общее количество тиков, потребляемых службой приложения, но для памяти или любого другого ввода-вывода было бы полезно иметь общее количество попыток доступа, максимальное пиковое распределение, общий обмен данными для записи / чтения.
Есть ли такой инструмент? Думаю, в каком-нибудь наборе инструментов для профилирования могут быть такие инструменты? Но я предполагаю, что наборы инструментов для профилирования нацелены не на сервисы, а на исходные коды, верно?
Я ищу инструмент измерения, который не предназначен для измерений, выполненных на основе исходного кода, а инструмент, который измеряет скомпилированные службы, запущенные в системе - в основном что-то вроде top
но не показывать значения в реальном времени, а генерировать общую сводку после завершения измерения.
Идеально, если бы измерительный инструмент поддерживал белый список имен сервисов, чтобы я мог сузить измерение до конкретных сервисов, которые требуются для выполнения задачи, и получить их общее потребление ресурсов.
Большинство разрабатываемых мной приложений помещаются в контейнеры Docker, если это имеет значение.
Если вы все еще здесь, то, возможно, вы знаете о каком-либо стандарте измерения использования ресурсов приложения, своего рода отраслевой практике, которая сохраняет такой результат измерения в определенном формате, чтобы его можно было поместить в репозиторий в качестве ориентира для будущей разработки. или поделился с другими людьми, чтобы они также могли измерить и сравнить свою платформу, если она более эффективна для выполнения конкретной задачи?