공유 준비 대기열로 멀티 프로세서 시스템의 확장 성을 제한 할 수 있습니까?공유 준비 대기열로 멀티 프로세서 시스템의 확장 성을 제한 할 수 있습니까?
답변
간단히 말하면, 가장 확실합니다. 몇 가지 토론을 읽으십시오.
서비스 튜닝은 예술 형식이거나 벤치마킹이 필요합니다 (그리고 벤치 마크에 필요한 많은 양의 공간이 큽니다). 나는 그것이 다음과 같은 요인들에 달려 있다고 믿는다 (이것은 완전한 것이 아니다). 작업자 스레드는
-
준비 qeueue에서 포착 된 항목을 처리하는 데 걸리는 시간이 얼마나
- 및
- 자신의 얼마나 많은?
- 생산자는 몇 명이며 얼마나 자주 생산합니까?
- 어떤 대기 개념을 사용하고 있습니까? 스핀 락이나 커널 대기 (후자는 더 느리다)?
그래서, 항목들은 생성 된 경우, 스레드의 양이 크고, 처리 시간이 부족한 경우, 상기 데이터 구조 가 따라서 탈곡 일으키는 큰 윈도우에 대해 고정 될 수있다.
다른 요소에는 사용 된 데이터 구조 및 연결된 구조가 포함 된 큐를 관리하기 위해 연결된 목록을 사용하는 경우 데이터 구조가 잠기는 시간이 포함될 수 있습니다. add
및 remove
oprations는 일정 시간이 소요됩니다. 항목이 added
일 때 프리 오 대기열 (힙)은 평균적으로 몇 가지 작업을 더 많이 수행합니다.
시스템이 방금 사용하여 사진에서이 질문에 걸릴 수 처리 사업을위한 경우 :
- 프로세스 기반의 아키텍처로 그냥 여러 생산자 소비자 프로세스를 산란 및 통신을 위해 파일 시스템을 사용하여,
- stackless python, Lua 또는 Erlang과 같은 비 우선적 협업 스레딩 프로그래밍 언어를 사용합니다.
참고 : 동기화 원시는 not good 인 프로세서 간 캐시 응집 플러드를 야기하므로 가끔 사용해야합니다.
논의가 박사 학위 논문을 채우기 위해 갈 수 : D
준비 큐는 데이터 구조에 대한 자연 선택입니다 당 CPU를했다. 이것은 대부분의 운영 체제가 동일한 CPU에 프로세스를 유지하려고하기 때문입니다. 여러 가지 이유로 인해 Google을 사용할 수 있습니다. 그게 무엇을 의미합니까? 스레드가 준비 상태이고 다른 CPU가 유휴 상태이면 OS는 스레드를 다른 CPU로 신속하게 마이그레이션하지 않습니다. 로드 밸런싱은 장기적으로 만 실행됩니다.
상황이 다르다면, 스레드 - CPU 친화력을 유지하는 것이 디자인 목표가 아니라 스레드 마이그레이션이 자주 발생하고 CPU 당 실행 큐를 별도로 유지하는 것이 비용이 많이 든다는 것입니다.
- 1. 확장기의 확장 성을 전환 할 수 있습니까?
- 2. 멀티 프로세서 시스템의 스톱워치에 대한 모범 사례?
- 3. WebLogic에서 멀티 프로세서 시스템의 모든 프로세서를 사용하는 방법
- 4. 인텔 멀티 프로세서 설명서
- 5. 확장 성을 위해 mysql을 사용해야합니까?
- 6. 프로토콜 또는 멀티 메소드를 사용하여 ClojureQL을 확장 할 수 있습니까?
- 7. 확장 파일 시스템의 저널은 어디에 있습니까?
- 8. 멀티 코어 시스템의 Netfilter 후크
- 9. 공유 라이브러리에 공유 라이브러리를로드 할 수 있습니까?
- 10. 북마크릿을 제한 할 수 있습니까?
- 11. Hadoop 애플리케이션의 확장 성을 최적화하는 도구는 무엇입니까?
- 12. System.Delegate를 확장 할 수 있습니까?
- 13. DataColumn.Expression을 확장 할 수 있습니까?
- 14. 내 응용 프로그램의 확장 성을 확인하는 방법
- 15. 샤딩/확장 성을 위해 mongodb를 설정 하시겠습니까?
- 16. 다중 데이터 컨테이너 용 멀티 코어 프로세서
- 17. IIS에서 Perl 스크립트의 실행 시간을 어떻게 제한 할 수 있습니까?
- 18. 다른 클래스를 확장 할 수있는 클래스 제한
- 19. iOS에서 전달한 inNumberFrames를 AURenderCallback 함수에서 제한 할 수 있습니까?
- 20. Win32 : 멀티 코어/멀티 프로세서 시스템에서 스레드 CPU 사용률을 계산하십시오.
- 21. Java에서 스레드 실행 프로세서 사이클 제한
- 22. 메모리 내 SQLite 데이터베이스에 확장 가능한 멀티 스레드 액세스를 수행 할 수 있습니까?
- 23. Hadoop을 예비 CPU주기로 제한 할 수 있습니까?
- 24. UITextField의 문자 집합을 제한 할 수 있습니까?
- 25. MySQL에서 어떻게 선택을 제한 할 수 있습니까?
- 26. 다운로드 속도를 어떻게 제한 할 수 있습니까?
- 27. XML 요소의 내용을 제한 할 수 있습니까?
- 28. git-svn을 어떻게 제한 할 수 있습니까?
- 29. ASP.net HttpHandler 범위를 제한 할 수 있습니까?
- 30. "항목 추가"권한을 제한 할 수 있습니까?