며칠전에 모기업 개발자들과 이야기 하다가 나온건데
pc 마다 성능이 다른데 스레드를 몇개까지 생성하게 할꺼냐 이거였음
일단 우리쪽은 설정된 셋탑성능이 표준화로 되어서 제품으로 나갈꺼라
성능테스트 결과 참고로 4 개의 스레드만 생성하면 되겠군 이라고 판단하고 글케 함
이게 문제가 되진 않는데 질문 자체에 대한 답이 궁금하네;;
그래서 내가 묻고픈거는
일반적으로 pc 프로그램 에서 스레드를 생성할때 몇개를 만들어야 성능에 문제가 없이
최적의 작업을 가능한지 어떻게 판단함 ? cpu 사용량을 체크 하나 ?
계신가요->계시나요
몇일->며칠
고마움 다 바꿈
리플 단 김에 내꺼 질문 답 좀;;
만개이내
아니지.. 어차피 하나의 cpu는 하나의 스레드 밖에 실행 못해. 그래서 여러개의 스레드를 돌리면.. 그만큼 context switching(문맥교환) 횟수가 많아 지겠지? 스레드가 많아 질 수록 컨텍스트 스위칭에 대한 비용이 많아져서 부하가 걸려.. 그러면 퍼포먼스는 낮아지겠지? 그렇다고 또 스레드 갯수가 작아진다고 해서 최상의 퍼포먼스가 나오는것도 아니야.. 결국 상황에 따라 다른데 I/O가 많은 프로세스 일수록 idle time이 길고 그 만큼 멀티스레딩 효과를 볼 수 있겠지.. 결국 멀티스레딩의 퍼포먼스는 동시성 향상 효과와 또 그에 반대한 컨텍스트 스위칭의 비용에 따라서 trade off 된다고 생각하면 되
이렇게 말하니까 결국 몇개를 쓰라는건지 모르겠지? 보통.. 연산처리 위주라면 cpu당 2~3개 정도.. I/O 위주의 작업이라면 5개정도로 가이드라인을 잡는 걸로 알고 있어.. 하지만 그때 그때 상황에 맞게 하려면 많은 노하우가 필요하겠지 ㅋㅋ?
물론 시리얼라이즈는 필수로 해서 데이터의 무결성은 보장시켜야겠지? ㅎㅎㅎ~~ 이만
ㅇㅇ // 너 똥시 준비하냐??
일단 코어개수에 맞춘뒤에 io가 얼마나 발생하는지에 따라 걍 죶대로 - DCW
어렵네
원코어에 하나의 쓰레드만 돌리면 되겠다고 생각했지만요 실제 벤치마킹 해보면 이건 속도만 따져보았을때는 그렇지 않다는 것을 알 수 있어요 가장 간단한 방법은 쓰레드의 수를 순차적으로 바꿔주면서 시간을 재보는 방법이 제일 확실합니다
제일 빠른속도를 수작업으로 찾아들어가야 최적의 성능을 찾을 수 있어요