Измерение производительности процессорного времени для вызовов функций Intel SGX

Я пишу клиент-серверное приложение C++. Сервер содержит список пропусков, в котором хранится пара ключ-значение. Я могу вставить данные из клиента, и запрос достигнет сервера, и будут выполнены такие операции, как вставка, удаление, поиск.

И клиент, и сервер будут иметь анклав SGX в них. Я хочу измерить процессорное время на сервере. Для этого я могу просто рассчитать истекшее время ЦП, начиная с момента, когда я выполняю вызов анклавов SGX на сервере для работы с пропуском списков, и заканчивать время, когда вызов анклавов возвращается на сервер. Эта ссылка показывает, как рассчитать истекшее время ЦП. Измерение времени ЦП в C++.

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

Ребята, подскажите, пожалуйста, какой из перечисленных способов эффективен?

  1. Вычислите истекшее время процессора, откройте файл results.txt и запишите в него одну строку за раз. А потом вручную взять среднее? ИЛИ ЖЕ
  2. Использовать инструмент профилирования? Я не использовал никаких инструментов профилирования, так что понятия не имею, как это работает.

Несколько других связанных вопросов:-

  1. Расчет времени процессора с использованием ctime не зависит от переключения контекста и других ресурсов на моем ПК? AFAIK, когда я сделаю вызов анклава, произойдет аппаратное переключение контекста. Поэтому попытка получить истекшее время путем помещения операторов ctime на уровень ненадежных серверов не помогает. Правильный?
  2. Есть ли хороший инструмент для сбора данных, хранящихся в файле results.txt, и создания из него хорошего графика?

0 ответов

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