공유 라이브러리를 profiling 하고 싶습니다.

eminency의 이미지

대상이 되는 라이브러리는공유 라이브러리입니다(.so).

라이브러리와 함께 실행 바이너리가 되는 테스트 코드 역시 -g -pg 옵션을 주어서 컴파일 했는데 실행을 시킨 후 gprof를 돌려보면 테스트 코드에 있는 함수들만 profiling이 되네요.

gmon.out도 실행 디렉토리에만 생기고 공유 라이브러리가 들어 있는 디렉토리에는(/usr/local/lib) 생기지가 않습니다.
지금 해보고 싶은 것은 라이브러리에 대한 프로파일링인데 도저히 어떻게 해야 될 지를 모르겠네요.

공유 라이브러리를 프로파일링하는 방법에 대해서 아시는 분은 설명을 부탁드리겠습니다~

익명 사용자의 이미지

일단 무식하지만 정확하게 공유라이브러리 소스를 가져다가 프로파일링시에 사용하는 방법이 있겠습니다.

seoleda의 이미지

s()라는 함수가 공유 라이브러리의 함수이면, sp()라는 함수를 하나 작성해서 s()만 호출하도록 하면 비슷하게 나오지 않을까요?

eminency의 이미지

Anonymous wrote:
일단 무식하지만 정확하게 공유라이브러리 소스를 가져다가 프로파일링시에 사용하는 방법이 있겠습니다.

소스 다 있습니다. 그래서 스태틱 링크를 해서 프로파일링은 했지만 계속 이렇게 하려면 빌드 스크립트를 고쳐야 되는 문제점이 있어서요..

Quote:
s()라는 함수가 공유 라이브러리의 함수이면, sp()라는 함수를 하나 작성해서 s()만 호출하도록 하면 비슷하게 나오지 않을까요?

그렇게 되면 s()에 대한 시간만 나올 뿐, 라이브러리 내부에서 호출하는 함수들에 대한 정확한 프로파일링이 되지 않습니다. 목적은 라이브러리의 병목(bottle neck)을 찾으려는 것이거든요.

노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5

익명 사용자의 이미지

eminency wrote:

...
목적은 라이브러리의 병목(bottle neck)을 찾으려는 것이거든요.

라이브러리의 병목을 찾아서 병목을 완화하고자 한다면, 어차피 라이브러리 수준의 프로파일링이 불가피하고, 그리해야 손(?)을 볼 수 있겠지요.
그렇다면, 접근방법은 자명하지 않나요?
무식(?!)한 방법이... :twisted:

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.