Профилирование для анализа низкоуровневых доступов памяти моей программы

EXPOSE не предоставляет само CMD, CMD является отдельным параметром в синтаксисе файла Docker. С учетом сказанного ваш Dockerfile должен выглядеть следующим образом:

FROM ubuntu 
RUN apt-get update 
RUN apt-get install –y apache2 
RUN apt-get install –y apache2-utils 
RUN apt-get clean 
EXPOSE 80 
CMD [“apache2ctl”, “-D”, “FOREGROUND”]
5
задан Eduardo 10 January 2009 в 19:41
поделиться

4 ответа

Если Вы выполняете аппаратные средства Intel, то VTune для Linux является, вероятно, лучшим и большая часть полнофункционального инструмента, доступного Вам.

Иначе можно быть обязаны считать счетчик производительности MSRs непосредственно, пользуясь perfctr библиотекой. У меня нет опыта с этим на Linux самого, но я нашел несколько бумаг, которые могут помочь Вам (предположение, что Вы находитесь на x86 - при выполнении PPC ответьте, и я могу предоставить более подробные ответы): http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel5/11169/35961/01704008.pdf?temp=x http://www.cise.ufl.edu/~sb3/files/pmc.pdf

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

Оснащенный режим VTUNE делает это для Вас автоматически через целую программу. Эквивалентным инструментом AMD является CodeAnalyst. Valgrind утверждает, что был профилировщиком кэша с открытым исходным кодом, но я никогда не использовал его сам.

1
ответ дан 15 December 2019 в 01:12
поделиться

Возможно, cachegrind (часть valgrind комплекта) может подойти.

1
ответ дан 15 December 2019 в 01:12
поделиться

Вам нужны что-то большее чем команда Unix top обеспечит? Это обеспечивает использование CPU и использование памяти программ Linux в легком для чтения формата представления.

Если Вам нужно что-то более определенное, профилировщик, возможно, язык программного обеспечения (java/c ++/etc.) поможет определить, какой профилировщик является лучшим для Вашей ситуации.

0
ответ дан 15 December 2019 в 01:12
поделиться

Не возможно определить все доступы к памяти, так как это не имеет большого смысла. Доступ к памяти мог выполнять следующую инструкцию (программа находится в памяти), или когда Ваши чтения программы или пишут переменную, таким образом, Ваша программа почти получает доступ к памяти все время.

То, что могло быть более интересным для Вас, могло быть, следуют за использованием памяти Вашей программы (и "куча" и стек). В этом случае можно использовать стандартную главную команду.

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

Больше полного контроля, чтобы сделать все отладило бы Вашу программу посредством gdb отладчика. Это позволяет Вам управлять своей программой, такой как установка точек останова к переменной, таким образом, программа является interrputed каждый раз, когда это считано или записано (возможно, это - то, что Вы искали). С другой стороны, GDB может быть хитрым для изучения так DDD, который является gtk графическим frontend, поможет Вам начинающийся с ним.

Обновление: То, что Вы ищете, является действительно низкоуровневым доступом к памяти, что это не доступно на уровне пользователя (который является задачей ядра операционной системы). Я не уверен, обрабатывается ли даже управление кэшем L1 прозрачно ЦП и скрыто к ядру. То, что ясно, - то, что необходимо пойти так же вниз как уровень ядра, таким образом, KDB, объясненный сюда o KDBG, объясненный сюда.

Обновление 2: кажется, что ядро Linux действительно обрабатывает кэш ЦП, но только кэш L1. Книга, Понимая Диспетчера виртуальной памяти Linux explais, как управление памятью работ ядра Linux. Эта глава объясняет некоторые кишки обработки кэша L1.

2
ответ дан 15 December 2019 в 01:12
поделиться
Другие вопросы по тегам:

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