필자는 불필요한 함수 호출을 제거하는 데 도움이되므로 프로파일 링을위한 Flame Graph 아이디어를 정말 좋아합니다. 그러나 샘플러를 수집 할 때마다 프로파일 러가 완전한 스택 덤프를 수행해야한다는 점에서 캐치가 있습니다. DTrace 나 SystemTap을 사용하면 쉽게이 작업을 수행 할 수 있지만 우분투를 실행하는 ARM 장치에서이 작업을 수행 할 수 있어야합니다 (DTrace가 필요하지 않음). 커널을 다시 컴파일하지 않고도이 작업을 수행하고 싶습니다. SystemTap이 제거되었습니다. 플레임 그래프에서 사용하기 위해 모든 샘플의 프로파일 러에서 전체 스택 덤프를 얻는 방법은 무엇입니까?
는 Valgrind의/Callgrind 또는 OProfile은 (또는 우분투의 ARM 장치에서 실행할 수있는 다른 프로파일 링 도구)과 유사한 출력 뭔가 얻을 것이 가능 :dtrace -n 'profile-1001 /pid == 12345 && arg1/ { @[ustack()] = count(); }
가능성 : * [pstack을 (http://linuxcommand.org/man_pages/pstack1.html) * 또는 * [가난한 사람의 프로파일을
나는에 반환 한과 불꽃 그래프를 만들기위한 몇 가지 지침을 썼다 ] (http://poormansprofiler.org/) * gdb를 사용하여 스택 추적을 얻습니다. –
pstack은 유망 해 보입니다. 나는 가난한 사람의 프로파일 러보다 좀 더 자동화 된 것을 원합니다. – Leo
*/proc//stack *이 있는지 확인하십시오. 이렇게하면 커널 스택에 프로세스가 제공됩니다. 뭔가 다르지만 유용 할 수 있습니다. 'gdb' 솔루션은 * user space *만을 추적합니다. 즉, 커널이 프로세스를 대신하여 시간을 보내는 곳을 알 수 있습니다. 아마도 * dtrace * 태그를 제거하고 * linux *를 추가해야합니다. –