한 프로세스의 CPU 점유율이 90% 정도가 되었습니다.

gsong의 이미지

솔라리스에서 서버프로그램을 만들고 있습니다.
Connection Oriented 방식으로 클라이언트들이 접속 하구요.
클라이언트 패킷 처리를 위해서 poll() 을 사용합니다.
그리고 간간이 클라이언트에서 패킷을 보내오구요.

근데 프로세스를 처음 시작할때는 CPU 점유율 등이 정상적입니다. 높지 않다는 말이죠. 그러다가 어느 '특정' 상황이 되면 CPU 점유율이 높아집니다.

처음엔 프로그램의 어느 부분에서 무한루프같은것에 빠지나 싶었는데,
프로그램이 멀티쓰레드 구조도 아니고
CPU 점유율이 높은 상태에서도 정상적으로 작동을 합니다.

이런 문제를 겪으신 분들 계시면 문제점을 찾기 위해 어떤 걸 해봐야 하는지 조언 부탁드립니다.
그리고 gdb 같은 툴을 이용해서 현재 실행 중인 프로세스에서 어떠함수들을 계속 호출하는지 등의 정보를 알 수 있는 방법이 있나 싶어 질문 올려 봅니다.

그럼 고수님들의 도움 부탁드리겠습니다.

albamc의 이미지

select() 를 쓰신다면 select에 들어가는 변수값들을 확인해 보심이 좋을듯 합니다.

^^*

hey의 이미지

gsong wrote:
그리고 gdb 같은 툴을 이용해서 현재 실행 중인 프로세스에서 어떠함수들을 계속 호출하는지 등의 정보를 알 수 있는 방법이 있나 싶어 질문 올려 봅니다.

strace나 ltrace의 -p 옵션을 사용하여 해당 pid가 어떤 (시스템 혹은 라이브러리) 콜을 하는지 확인할 수 있습니다.

내외부의 특정 조건을 통해 프로그램을 안전하게 종료할 수 있다면, gprof를 통해 프로파일을 뽑아보는 것도 가능한 선택 가운데 하나 아닐까 생각해 봅니다.


----------------------------
May the F/OSS be with you..


ssoo76의 이미지

truss를 사용해 보시죠...

CPU 점유율이 90%가 넘게 되는 상황에서 truss -p pid를 하면 현재 프로세스가 어떤 system call을 사용하고 있는지 알 수 있습니다.

세상은 하나..........

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 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>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 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>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 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>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.