쓰레드에 대한 멀티코어의 코어배분 ?

posjkh22의 이미지

리눅스 환경에서 프로그래밍을 공부하고 있는 학생입니다.

멀티 코어를 통한 병렬처리에 대해서 공부하고 있는데요.

한 프로그램내에서 쓰레드를 이용하여 쓰레드당 CPU의 코어를 배분하고 싶습니다.

일반적으로 쓰레드를 그냥 생성 하면 운영체제에서 알아서 코어를 배분하잖습니까?

그런데, 이를 프로그래머가 제어할 수는 없나요?

근본적인 궁금증은 멀티코어 환경에서 '각 코어를, 한 프로세스 내에서의 각 쓰레드에게 배분(1)' 또는

'각 코어를, 두 개 이상의 각 프로세스에게 배분(2)' 하는 병렬처리 방법들에 대해 알고 싶습니다.

concurrent 한 처리가 아니라 parallel 한 처리 방법을 알고 싶습니다.

다양한 어떠한 방법이 있는지 알고 싶고, 혹시 코드레벨에서 가능하다면(C언어) 꼭 알고 싶네요.

shint의 이미지

네이버 책 - 멀티 코어
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=%EB%A9%80%ED%8B%B0+%EC%BD%94%EC%96%B4

코드 프로젝트. 데브피아. 네이버. 다음. 구글 검색
멀티 코어 멀티 프로세스 멀티 스레드 하이퍼 스레드
SSE MMX SIMD AVX
TBB CUDA GPGPU VPU
QEMM VirtualBox DosBox
Xen KVM
VDI Cloud

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

posjkh22의 이미지

아무래도 전문서적을 찾아보아야 할 것 같네요!

익명 사용자의 이미지

윗 분은 문제를 물어 보면 직접적인 답변은 회피하고 대부분 연관성이 낮은 검색어와 책과 기타 정보만 알려 주시니, 키워드를 찾을 수 있는 다른 분 답변을 듣는 것이 더 나을 수도 있습니다.

익명_사용자의 이미지

http://www.gnu.org/software/libc/manual/html_node/CPU-Affinity.html

이미 10년이 가까워지지만, 아직도 너무 유용한 내용이 많이 포함되어있는 What every programmer should know about memory 읽어보시길 권장합니다
: https://www.akkadia.org/drepper/cpumemory.pdf

chapter #6을 보시면 cpu affinity를 이용해 어떻게 프로세스(쓰레드)에 특정 CPU scheduling하는지 배우실수 있을것이고
(더욱 중요한) 멀티프로세스 프로그래밍을 할 때, CPU cache 가 프로그램의 성능에 어떻게 영향을 끼칠수 있는지 더 좋은 이해를 하실 수 있을겁니다.
특히 NUMA환경에서의 얘기들은 유익한 내용이 많습니다. 요즘은 기본적으로 NUMA에 24~48코어정도는 기본으로 탑재된 서버가 많아서 도움이 많이 될 문서입니다.
처음부터 끝까지 정독을 추천하는 문서입니다.

저자인 Ulrich Drepper의 홈페이지에 보면 다른 좋은 글들도 많습니다.
시간되면 쭉 읽어보세요. 멋진글이 많습니다.
: https://www.akkadia.org/drepper/

posjkh22의 이미지

차근차근 정독해 보도록 하겠습니다.^^

posjkh22의 이미지

차근차근 정독해 보도록 하겠습니다.^^

익명 사용자의 이미지

set_affinity 관련 함수 찾아보세요~

posjkh22의 이미지

한번 사용해 보도록 할게요~

댓글 달기

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