LINUX.ORG.RU

2
Всего сообщений: 27

Intel Vtune vs perf vs gprof vs Cachegrind etc

Вкратце, вопрос в том, есть ли в vtune нечто такое, что в нём добиться МОЖНО и чего нельзя в perf, gprof и т.п. Если что-то такое есть, то за счёт чего в vtune это возможно? И почему это что-то недоступно всяким гнушным профайлерам или валгринду?

 

igloev ()

Максимально простое gui приложение, что бы рисовать графики

Для тех кто не шарит в этих ваших математиках. Что бы можно было за ползунки потягать и посмотреть график в нужной перспективе, без предобработки данных.

 , , ,

onhydro ()

Python line_profiler и @property

Использую line_profiler из Jupyter, наткнулся на затруднение:

from time import sleep

%load_ext line_profiler

class Foo:

    @property
    def foo(self):
        sleep(.1)        

    def bar(self):
        sleep(.1)

Вот такой код:

%lprun -f Foo.bar Foo().bar()

работает нормально, а вот этот:

%lprun -f Foo.foo Foo().foo

не работает с warning-ом:

UserWarning: Could not extract a code object for the object <property object at 0x7f0bb0608048>

Кто-нибудь сталкивался? line_profiler-ом вообще property толком не отладить? Что порекомендуете на замену?

 , ,

omegatype ()

Как найти узкое место в многопроцессном приложении?

Привет всем!

Пишу высоко нагруженное приложение на python, состоящее из множества процессов. Тяжёлые работы (вычисления) производятся с помощью numpy и dlib. Разделение на процессы сделано с через модуль multiprocessing. Отдельный процесс на источник данных, несколько процессов рабочих, один процесс сбора статистики и вывода результатов. Обмен большими данными производится через общую память (несколько объектов multiprocessing.Array(ctypes.c_uint8, buffer_size, lock=False)). Обновление состояния, сообщения о событиях - multiprocessing.Pipe(). Изначально была очередь, но работало совсем медленно, с переписыванием на Pipe стало более-менее.

Проблема в том, что рабочие процессы грузят ядра процессора процентов на 60 - 70. Т.е. по неизвестной причине они простаивают 30% времени. Я никак не могу найти это узкое место.

Мне нужно некое средство профилирования, для работы с множеством процессов. В моём понимании примерно следующее:
В нужных местах кода добавляются вызовы для вывода (в файл или stdout) точных отметок времени с комментариями (что за функция, какие-то параметры, т.п.). По этим отметкам потом строится график, где по оси X отмечается время, по Y - процессы, а на плоскости графика - сами отметки с комментариями.
Так я бы смог понять, какой процесс кого и когда ждёт и где искать это узкое место.
Вывод временных отметок можно и самому навелосепедировать, не сложно. Но, может быть, есть что-то готовое? А вот с графиком сложнее, в идеале он должен быть векторным и масштабируемым, с поиском и инструментами измерения (сколько времени прошло от события А до события Б), т.к. временных отметок предполагается ну очень много.

Как-то так...
P.S.: Переписать с Python'а на что-то другое не вариант.

 , ,

ls-h ()

Ищу C профайлер с хорошей детализацией.

Сабж. Я попробовал gperftools, но выхлоп меня несколько смущает: я получаю смесь информации о самопальных и библиотечных функциях. В целом это лучше, чем ничего, но не помогает выяснить, откуда хвосты растут.

Пример: gsl_histogram_pdf_free по статистике жрёт 10% ресурсов. Проблема в том, что я вообще не использую эту функцию, никак, она даже подключаться не должна. Я нашёл тот участок кода, который так себя странно ведёт, но больше информации выжать не удалось.

 , ,

ZERG ()

Какие есть живые opensource проекты где экономят наносекунды в юзерспейсе?

Ну ещё не embeded что бы.

Пока набралось:

  • kernel bypass dpdk, pf_ring, netmap
  • Кодеки ffmpeg
  • Возможно, компиляторы для c и c++
  • Программное ускорение графики mesa
  • Реализации green threads и прочие способы отжать управление у системного планировщика (реализации LWKT, NPTL)

 ,

onhydro ()

lttng и trace compas

В каком виде, лучше всего передавать записи lttng сессий по сети для последующего просмотра в trace compas?

 , ,

pon4ik ()

Профайлеры для продакшена

Коллеги, подскажите современный профайлер для php который бы :

  • Подходил бы для использования в продакшене( то есть он запускался бы перед каждым дерганьем php файла и overhead в десятках % ) [я так понимаю Xdebug не очень быстрый для этого ]
  • Генерировал файлы из который как https://metacpan.org/pod/Devel::NYTProf мог делать наглядные html страницы ( https://timbunce.files.wordpress.com/2008/07/nytprof-perlcritic-index.png )
  • Был opensource , а лучше libre software( я там буду дописывать его чтобы на все sql делалось sql explain )

 , ,

pinachet ()

У кого-нибудь остались исходники OpenPat и AMD CodeAnalyst?

openpat.org (open source Performance Analysis Toolkit) закрыт, codeanalyst влился в монстра CodeXL

Исходники, что первого, что второго, выдавались после регистрации, потому в archive.org их нет. На гитхабе не нашел.

Поиск CodeAnalyst-3_3_18_0361-Public.tar.gz = ссылки на ссылки, ведущие в nil.

 

panzerito ()

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

Надо, что бы в отличии от множества гуглимых вариантов давал все замеры а не min/max/avg.

Для плюсов или сишечки. Без виртуализации. Многопоточный.

Забыл сказать - бесплатное для коммерческого использования :)

Если плюсовый, то для с++03.

 ,

pon4ik ()

Профайлер для cron скрипта на PHP

Существует ли какой то профайлер что бы можно было получить статистику по каждой строчке скрипта в порядке убывания затраченного на неё времени? Пока что используя:

class Profiler {
	public function __construct() {
		$this->profiles = [];
	}
	
	public function begin($section) {
		if (!isset($this->profiles[$section])) $this->profiles[$section] = [
			"total_time" => 0.0,
		];
		$this->profiles[$section]["start_time"] = microtime(true);
	}
	
	public function end($section) {
		$this->profiles[$section]["total_time"] += microtime(true) - $this->profiles[$section]["start_time"];
	}
}
$profiler = new Profiler();

удалось ускорить скрипт 8 раз. Но приходится писать $profiler->begin(«section»); ... $profiler->end(«section»);

Хотелось бы иметь что то типа что бы запустить `profiler ./script.php script args` и получить статистику автоматически не засоряя код скрипта. Даже для кода ассемблера такое есть. Проприетарщину не предлагать.

 ,

iluha16 ()

А есть ли в этих наших линуксах профайлеры, для анализа кода на предмет того, где жрётся CPU?

Сабж. Открытые и свободные разумеется

 

Harald ()

Посоветуйте средство профилировния для java-приложения

Есть многопоточное java-приложение, использующее много ядер, но использующее их неравномерно. Какие-то ядра в top выглядят загруженными на 99%, а какие-то простаивают. Мне бы хотелось посмотреть, какой конкретно модуль этой программы в данный конкретный момент на каких ядрах выполняется. Можно ли увидеть связь конкретных элементов кода с конкретными ядрами, сокетами?

Вопрос: посоветуйте профайлер, IDE, etc., которые могут предоставить такую информацию. Может быть, что-то из этого работает в консоли?

 , , , ,

Deleted ()

Profiler for android native code

Привет, может ли кто посоветовать каким профайлером пользоватся для нативного кода на андроидах? (c++, arm-v7-hardfloat)

 , , , ,

CyberK ()

Посоветуйте профилировщик

Мне нужен профилировщик с такими возможностями (одновременно или по отдельности; в порядке уменьшения приоритета):

а.) возможность определить, в какое время к какому месту (адресу в памяти) обращается программа
б.) возможность выводить и обрабатывать информацию из пункта а.) непосредственно в процессе работы приложения. Т.е. в трассе не должно быть системных обращений.
в.) возможность связать конкретный оператор в коде с конкретным адресом в памяти.

Рассматриваются valgrind, gprof, oprofile, Dyninst и другие средства, которые максимально близки по указанным возможностям.

 , , , ,

Deleted ()

Нужен профайлер

Есть очень многопоточный софт на с++, с чудесными утечками памяти, чем их можно найти под дебианом?
Валгринд не может искать утечки в многопоточном, т.к. все потоки выполняет в одном, из-за чего до утечек даже дойти не успевает.
Желательно профайлер без необходимости ставить иксы хотя бы на сервере.

 ,

zlofenix ()

QML Profiler

Не могу запустить профайлер, проект под qt 4.8.2

QML Profiler: Connecting to 127.0.0.1:45432 ...
QML Profiler: Failed to connect!

Enable QML галочка против стоит...

Qt Creator 3.1.1 (opensource)
Based on Qt 5.2.1 (GCC 4.6.1, 32 bit)

Built on May 16 2014 at 04:10:44

From revision 79ed722724

Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.57-3+deb7u1 i686 GNU/Linux

Это последняя СДК но точно так же не работает и на дебиановской из репозиториев.

 , ,

LinuxDebian ()

Вывести в консоль данные профилировщика javascript!

Есть код:

console.profile('js');
my_func();
console.profileEnd();

Как просмотреть результат работы встроенного профилировщика?

P.S. Браузер Firefox.

 ,

djnoob ()

Как работают профайлеры для компилируемых языков?

Интересует сабж для C/C++. Возьмите любой, скажем, платный. Лицензии 50-100к евриков в год в легкую. Я вот не могу понять, там какие-то супер алгоритмы? Или где?

Как вообще профилировать С/C++ код (я хочу понять, как это внутри устроено, допустим, я хочу свой профайлер написать, с графиками и отчетами)?

 , ,

maverik ()

Как делается серьезный проект на с++

Сабж. Я недавно в линуксе и с/с++ потому хотелось бы знать, что на в самом деле нужно уметь. Т.е. гит и всякие контроли версий это понятно. Меня больше интересует отладка, построение архитектуры проекта, ТДД, если есть. В особенности ТДД. Какой стандарт чаще используется?

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

Как я делаю, открываю qt-creator, создаю проект, добавляю его в гит, создаю парочку форм, оформляю и провожу некоторый тестинг. Я хочу более грамотно подойти к делу. Т.е. создать проект, обеспечить ему хорошую отладку, тесты, профилирование и так далее.

Прошу помочь словом.

 , , ,

n1l ()