Обнаружьте, если двоичный файл ELF был создан с gprof инструментарием?

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

Потребляемая мощность может значительно различаться со временем в зависимости от рабочей нагрузки. Центральные процессоры теперь возвращают к исходному состоянию, когда загрузка является низкой. Диски завершат работу, когда неактивный. Инструменты как powertop отследят процессы, которые инициировали потребление увеличений мощности. Другие инструменты будут настойчиво настраивать вниз потребляемую мощность.

Забота UPSs о потребляемой мощности и часто имеет доступные данные.

Спецификации производителей дадут Вам некоторое представление о потребляемой мощности, но реконфигурирование аппаратных средств может изменить потребляемую мощность. Это - вероятно, хорошее место, чтобы запустить и оценить. Добавление новых устройств или замена существующих могут изменить загрузку питания.

Существуют устройства как Уничтожать-ватт, который может использоваться для измерения потребляемой мощности. Однако они требуют отключения устройства так, чтобы питание пробежало устройство.

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

11
06.06.2011, 16:52
3 ответа

Вы могли проверить на ссылки на функцию mcount (или возможно _mcount или __mcount согласно Реализации Профилирования). Эта функция необходима для профилирования для работы и должна отсутствовать для непредставленных двоичных файлов.

Что-то как:

$ readelf -s someprog | egrep "\s(_+)?mcount\b" && echo "Profiling is on for someprog"

Вышеупомянутые работы над быстрым тестом здесь.

10
27.01.2020, 19:58

Регулярное выражение в ответе выше не всегда работает..., но общее представление держать для "mcount" в выводе 'readelf-s [двоичный файл]' корректно, я думаю

2
27.01.2020, 19:58

Добавление к ответам:

  1. Чтобы проверить наличие инструментария, выполните grep для mcount/gmon:

    $ readelf -s  | egrep "gmon|mcount" 
    20: 00000000000000401160 63 FUNC GLOBAL DEFAULT 12 __gmon_start__ 
    28: 0000000000000000 0 FUNC GLOBAL DEFAULT UND mcount@GLIBC_2.2.5 (2) 
    36: 0000000000000000 0 FILE LOCAL DEFAULT ABS gmon-start.c 
    39: 000000000000004011a0 0 FUNC LOCAL DEFAULT 12 call_gmon_start 
    100: 0000000000401160 63 ФУНКЦИЯ ГЛОБАЛЬНЫЙ ДЕФАУЛЬТ 12 __gmon_start__ 
    114: 0000000000000000 0 FUNC GLOBAL DEFAULT UND mcount@@GLIBC_2.2.5 
    
  2. Необходимо компилировать, а также линковать с флагами -pg, иначе gmon.out не будет сгенерирован. stackoverflow link.

  3. Я обнаружил, что бинарник, на котором я запускал gprof, не генерировал никакого файла gmon.out, несмотря на компиляцию/связку с флагом -pg. Причина - я убивал свое приложение, это не был чистый выход. gprof генерирует вывод только при нормальном завершении программы. stackoverflow link

0
27.01.2020, 19:58

Теги

Похожие вопросы