우분투 top명령어 프로세스 cpu점유율이 80%가 나오는데요 개선이 필요한가요? 멀티스레드 사용시

timul16의 이미지

우분투에서 Qt프로그래밍을 하고 있습니다.

프로그램을 단일프로세스에서 멀티스레드로 바꿔서 프로세스상태를 관찰해 보았는데요 (pthread를 사용

단일 스레드로 돌아갈시 프로세스 점유율이 40%이하인 상태였는데
멀티 스레드로 구현을 하니 80%로 올라가버리더라구요

이론적으로는 멀티 스레드로 구현시 구동이 훨씬 유연하게 동작할것으로 보였는데
top명령의 cpu점유율을 확인해보면 이와 같이 나오고 있습니다.

현재 버츄얼박스에서 우분투 10.04버전으로 사용중이구요
이런경우에는 단일 스레드를 사용하는게 적합한건가요?

스레드를 다눈 범주는
1. 데이터를 읽어오는 곳
2. 데이터를 뿌려주는 곳
이렇게 두부분으로 나눠서 멀티스레드를 구현하였구요

단일 스레드시에는 데이터를 스레드로 받아서
그 스레드함수 끝부분에 페인트를 호출하도록 구현하였습니다.

jick의 이미지

적어주신 정보만 가지고는 뭐라고 할 수가 없겠는데요.

(시나리오 1) 단일 쓰레드로 10초 걸리던 작업이 쓰레드 두 개로 하니 기다리는 시간이 줄어 5초에 끝난다. (CPU 사용시간은 둘 다 4초)
(시나리오 2) 쓰레드를 나누면서 쓸데없는 오버헤드가 걸려 10초 걸리던 작업이 여전히 10초 걸린다. (CPU 사용시간은 4초에서 8초로 증가)

1번이면 좋은 거고, 2번이면 나쁜 거고...

mirheekl의 이미지

멀티스레딩은 놀고있는 코어를 더 사용해서 더 나은 퍼포먼스를 얻는게 목적이므로 CPU점유율이 올라가는 것 자체는 이상한게 아닙니다.

하지만, 만약 송수신 데이터가 많지 않은 아이들 상태에서도 점유율이 저렇다면 구현 방법상의 문제가 있다고 봐야죠. 데이터 송수신이 단순한 폴링으로 돼있다든지.

--

dontdieych의 이미지

htop으로 보시면 코어 별 점유율을 "매우 섬세한" 그래픽으로 표현해 줍니다. 구현 별로 각각 돌려 보시면 도움이 될 것 같습니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.