[Thread] thread 최적 갯수에 관한 질문..
글쓴이: zhangyuan / 작성시간: 화, 2004/07/27 - 8:19오후
:cry:
솔8.0 에 sun v240 model을 주로 사용하는 유저입니다...
요그저그 뒤져는 보고 있지만...
아무래도 실전과 이론에는 차이가 있음엔 어쩔수가 없기에...
위 환경에서 thread의 최적 갯수를 질문합니다...
어떡하면 막연할수도 있지만.... 최대한 최적의 프로세스만을 돌릴수 있도록
하기 위해 알아보고 있는 중입니다.........
혹시나 알고 계시거나 경험하신 분들께서는 조언 부탁드립니다..
꾸벅~!
Forums:
Re: [Thread] thread 최적 갯수에 관한 질문..
최적의 갯수라는것은 없다고 생각합니다.
이것이 최적이다라고 말할수가 없다는거져..그때그때마다 H/W,S/W,Business Logic등 상황이다르니..
아무래도 최적이라는것은 본인이 느끼는 것이 기준이 되지않을까여..
쓰레드 갯수에 관한거라면 아래링크를 참고하세여.
http://bbs.kldp.org/viewtopic.php?t=30361&highlight=pthread_stack
스트레스 테스트를 통한 경험적인 수치밖에는 믿지 못할 것입니다. 프로그램
스트레스 테스트를 통한 경험적인 수치밖에는 믿지 못할 것입니다. 프로그램의 특성을 많이 타기 때문이지요. 쓰레드는 많으면 많을 수록 시스템에 조금씩 더 부담이 되는 것은 사실입니다. 대표적으로 스케줄링을 위한 CPU 소모 및 스택을 위한 메모리 등...
그러나 쓰레드는 프로그램을 쉽게 하기 위해서 어느 정도는 필요합니다. 다만 시스템이 버벅 거리지 않는 한도에서 개수를 제한해야 할 수 있습니다. 그 이상의 성능을 원한다면 가장 병목이 되는 부분을 떼어서 단일 쓰레드로 재작성하는 등의 최적화를 하면 될 것입니다.
그렇다고 해도 하드웨어 입출력 성능의 한계에 다다른 경우에는 소용없을 수도 있습니다. 단일 쓰레드로 재작성하는 것은 CPU를 조금 더 아끼는 정도의 효과가 있으며 잘못된 멀티 쓰레드 코드보다는 효율적일 수 있을 뿐입니다. (윈도우즈 개발자 문서에는 약 64개 수준에서 효율이 갈릴 거라고 되어있습니다. 리눅스에서는 그 수치가 다를 수도 있겠죠. 아마도 100 개 이내일 거라고 예상됩니다.)
FreeBSD에서 쓰레드를 만들어보면 5만개 이상도 만들 수 있습니다만 무척 비효율적이구요. (스케줄링만으로도 CPU 100%. 단, uthread일 경우입니다. KSE는 다를 지도... ) 아파치 같이 어쩔 수 없이 쓰레드를 많이 써야 하는 경우에는 저희 회사 웹서버(펜3 1G)에서 300개 정도로 설정했었습니다. DB 서버의 경우에는 보통 CPU 개수 x 2를 추천하더군요.
뭐, 결국 정답은 없다는 것이 되겠네요. ㅜ.ㅜ 100개, 200개, 300개 설정해보고 걸리면 250개, 270개 이렇게 튜닝해가는 수 밖에요. -_-;;;;
음..그럼 . 제가 아는한에서는 system stack 영역을
음..
그럼 .
제가 아는한에서는 system stack 영역을 여러 스레드가 나눠갔는것으로
알고 있는데..
이 나눠갔는 문제에 대해서 좀더 알고싶습니다.
스레드 생성시에서 스택영역을 system stack의 크기만큼을 정의할수 있는건가요?
이때 최소한의 크기와 최대의 크기는 어디까지인가를 알고싶습니다.
예로, system이 8k 라면, 1k씩 8개의 스레드에 동등 할당한다던지.
노가다 방식으로 해봐서 얻어야 하나, 여러가지로 여건이 허락치 않아 이렇게 무례하게 질문을 드립니다.
조언 부탁드립니다. 꾸벅!
삶의 이탈을 꿈꾸며..
우선 pthread_attr_setstacksize()를 이용하면 될거
우선 pthread_attr_setstacksize()를 이용하면 될거 같구요.
스텍사이즈는 PTHREAD_STACK_MIN요놈이 젤 작은걸로 알고 있습니다.
그리고 쓰레드 관련 문의는 여기 계시판을 뒤져보면 많이 나와있을 겁니다.
집에나 갈까?
댓글 달기