멀티스레드 코드를 짤 때
스레드 숫자를 물리적 스레드 솟자로 하는것보다 물리적 스레드+1의 숫자로 하는 게 처리시간이 더 빠르던데
이거는 왜 그런거임..?
분명히 책에서는 물리 스레드 숫자에 비해 논리 스레드 숫자가 크면 처리 오버헤드때문에 오히려 더 느려진다고 배웠는데
확실히 물리스레드+2보다 더 많으면 느려지는건 맞긴한거같은데 물리스레드+1일때 가장 빠른 이유는 잘 모르겠음..
멀티스레드 코드를 짤 때
스레드 숫자를 물리적 스레드 솟자로 하는것보다 물리적 스레드+1의 숫자로 하는 게 처리시간이 더 빠르던데
이거는 왜 그런거임..?
분명히 책에서는 물리 스레드 숫자에 비해 논리 스레드 숫자가 크면 처리 오버헤드때문에 오히려 더 느려진다고 배웠는데
확실히 물리스레드+2보다 더 많으면 느려지는건 맞긴한거같은데 물리스레드+1일때 가장 빠른 이유는 잘 모르겠음..
하는 작업마다 다름, N일떄하고 N + 1일때 CPU 유틸보셈 I/O같은데서 병목일어나서 CPU가 노는거 N + 1/2일 때 좀 줄일 수 있음. - dc App
cpu가 실직적으로 돌아가는 비율(io작업 비중)과 컨텍스트 스위칭 비용을 생각해봐요
옛날에는 x2라고 그랬음. 걍 상황봐서 맞추는거지