/gcc에서 N
개의 스레드를 만듭니다. 각 스레드는 가능한 한 빨리 for (;;) printf(...)
ID를 사용하여 씁니다. 나는 전체 프로그램을 usleep
을 사용하여 3 초 동안 실행시키고 내 4-core
CPU에서 N=4
이 약 1,000,000 개의 라인을 생성하고 N=8
이 약 4 배를 생성 할 때 CPU에 주목합니다. 4 코어 CPU 8 스레드가 더 나은 성능을 발휘하는 이유는 무엇입니까? CPU에 하이퍼 스레딩이 활성화되어 있지 않습니다.적절한 스레드 수는 무엇입니까
답변
I/O 및 CPU 작동이 매우 다릅니다. CPU 집약적 인 계산을 실행하면 N = 코어 수가 최적이됩니다. I/O의 경우 최적의 수를 훨씬 더 높일 수 있습니다.
+1. 그러나 * "I/O의 경우 최적 수는 훨씬 더 높을 수 있습니다."* - 또는 훨씬 낮을 수 있습니다. 실제로 I/O 처리량에 따라 다릅니다. – ArjunShankar
하지만 IO의 스레드 수가 최적의 이유는 무엇입니까? – Ben
I/O 작업이 네트워크 소켓에서 읽기를 차단한다고 가정합니다. 각 작업은 몇 초 동안 차단 될 수 있지만 일단 데이터가 도착하면 처리 속도가 매우 빨라질 수 있습니다. 따라서 머신은 코어를 가지고있는 것보다 훨씬 많은 연결을 처리 할 수 있지만 각 작업이 블로킹하기 때문에 동시에 모든 스레드를 처리하기 위해 많은 스레드가 필요합니다. –
4 스레드가있는 경우 각 코어에서 하나의 스레드가 실행되지 않습니다. 2와 8threads도 마찬가지입니다. 멀티 코어의 아이디어는 달성 된 작업을 분리하는 것입니다. 또한 스레드 ID 만 표시하면 가벼운 CPU 작업을 수행 할 수 있습니다. 따라서 CPU 용량을 사용하지 않고 핸들 디스플레이 이벤트 기능을 사용합니다.
"* 각 코어에서 스레드가 실행되지는 않습니다. * "왜 안 되니? 적어도 스레드를 프로세서에 바인딩하는 경우 가능합니다. – Ben
- 1. 가장 효율적인 스레드 수는 무엇입니까?
- 2. 스레드 수는 OS마다 다릅니다.
- 3. IIS7 작업 프로세스의 높은 스레드 수는 무엇입니까?
- 4. nvidia GTS 450의 스레드 수는
- 5. pthreads를 사용하는 적절한 스레드 풀
- 6. ThreadPool 사용 가능한 스레드 수는 매우 높습니다.
- 7. 한 응용 프로그램의 최대 스레드 수는 얼마입니까?
- 8. 멀티 스레드 C# 응용 프로그램의 적절한 스레드 종료
- 9. 크로스 스레드 작업 오류를 피하는 가장 간결하고 적절한 방법은 무엇입니까?
- 10. 적절한 정리는 스레드 닫 실패하는 경우 - C++
- 11. 이것은 적절한 스레드 안전 랜덤 래퍼입니까?
- 12. 내 앱의 경우 최적의 스레드 수는 몇 개입니까?
- 13. 수는
- 14. TCP/IP 서버의 최대 연결 수/스레드 수는 얼마입니까?
- 15. 개체의 직렬화 : 스레드 상태가 관련 될 수는 없습니다. 맞습니까?
- 16. 내가 스레드 오히려 거대한 수는 Clojure의 프로그램 내에서 생성되는이
- 17. 적절한 방법은
- 18. 단일 스레드 메커니즘으로 구현할 적절한 디자인 패턴 찾기
- 19. 적절한 SOAP 작업은 무엇입니까?
- 20. landscapeImagePhone의 적절한 치수는 무엇입니까?
- 21. JSON의 적절한 사용법은 무엇입니까?
- 22. opIndex의 적절한 구현은 무엇입니까?
- 23. 스레드 란 무엇입니까 (스레드 란 무엇입니까?)?
- 24. 임의의 수는
- 25. Robotium 테스트를 실행할 수는 있지만 디버깅 할 수는 없습니다.
- 26. 실행 가능한 스윙 작업자 스레드의 최대 수는 무엇입니까
- 27. 파일을 저장할 수는 있지만 볼 수는 없습니까?
- 28. Work Stealing은 항상 가장 적절한 사용자 수준의 스레드 스케줄링 알고리즘입니까?
- 29. SQLAlchemy 다중 스레드 응용 프로그램에서 적절한 세션 처리
- 30. .Net 웹 참조 클라이언트의 적절한 다중 스레드 사용
I/O 작업, 하이퍼 스레딩, 많은 작업. –
@MarcoMariani 아니요, 하이퍼 스레딩을 사용할 수 없습니다. – Cartesius00
하지만 차단 I/O를 사용하고 있습니까? peripherials가 작동하고 CPU가 그들을 기다리고있는 동안 스레드가 유휴 상태가됩니다. –