높은, 내가 숙고하고있는 설계 질문에 대한 의견을 누군가에게 줄 수 있는지 궁금하다. 지금은 데이터 스트림에서 많은 계산을 수행 할 때마다 CPU 사용률이 85 %로 1 초마다 상승하는 자바 프로그램이 있습니다. 듀얼 프로세서를 활용하고 싶지만 현재 디버깅과 테스트에 많은 시간을 투자 했으므로 프로그램을 멀티 스레드로 재 설계하고 싶지는 않습니다. 만약 두 개의 별도의 JVM 인스턴스에서 프로그램을 실행하고 이론적으로 성능을 향상시키는 작업 부하를 분할한다면 어떻게 될까요? - 던컨동일한 기계 성능 질문에 두 개의 개별 JVM으로 작업량 분배하기
가답변
작업 부하를 분할하려고하는 경우가 작동 뭔가를 깨는에 대해 걱정하는 경우, 당신은 아마 ...
futhermore 더 낫다는 멀티 스레드해야 할 어떤 리팩토링 것, 그 의미 향후 리팩터링이 원활하게 진행될 수 있도록 충분한 테스트를 작성하지 않았습니다. 따라서 핵심 기능을 포착하는 몇 가지 테스트를 작성한 다음 문제 공간을 분할하고 스레딩을 사용하는 리팩터링을 작성하는 것이 좋습니다.
스레딩은 여러 가지 방법으로 프로그램의 속도를 높일 수 있습니다 : 여러 개의 코어가있는 경우, 스레딩이 그 코어를 활용하기 위해 활용 될 수
1).
2) 프로그램이 IO 집중적 인 경우 계산 항목을 IO를 처리하는 스레드와 분리 된 스레드로 분리하는 것이 좋습니다. 이것은 프로그램이 실행되고 있지만 CPU가 고정되어 있지만 디스크가있는 경우입니다.
3) 내가 아는 것보다 더 똑똑한 사람들.
당신은 또한 스레딩을 할 수 있습니다 - 하나의 CPU에서 실행되도록 1000 개의 스레드를 생성하는 것은 의미가 없을 수도 있습니다. 스레드를 유지 관리하는 오버 헤드로 인해 성능이 저하 될 수 있습니다.
편집 - 2 개의 jvms를 실행하기위한 오버 헤드가 몇 개의 스레드를 실행하는 오버 헤드보다 훨씬 높습니다.
마지막으로 문제는 '파일 묶음의 텍스트로 작업하기'와 같은 경우 파일을 2 개의 개별 디렉토리로 분리하고 각기 다른 프로그램 실행 인스턴스를 가리킬 수 있습니다. 그러나 그것은 내게 더러운 느낌이 ...
멀티 스레딩에 대해 이해할 수없는 점은 하루가 끝날 때마다 1 초마다 계산해야하는 계산량이 있으면 단일 CPU 환경에서 속도를 높일 수 있다는 것입니다. CPU가 한 번에 한 명령 씩 실행할 수있을 때 얼마나 많은 효과를 낼 수 있습니까? –
@duncan 위 참조 - 내 대답에 내 통찰력을 넣으십시오. – hvgotcodes
정보를 제공해 주셔서 감사합니다. 귀하의 의견을 투표하려고 시도했지만 새로운 사용자가 될 수 없습니다. –
- 1. 두 개의 개별 구조를 동일한 마스터 데이터에 동기화합니다.
- 2. VS2008 : 동일한 솔루션에서 두 개의 개별 프로젝트를 실행하는 방법
- 3. 두 개의 숫자를 더하는 튜링 기계
- 4. 두 개의 유사한 객체에 대해 두 개의 개별 테이블을 만들어야합니까?
- 5. 동일한 서버에있는 두 개의 mysql 데이터베이스를 통해 쿼리하는 성능?
- 6. 두 개의 개별 클래스에 하나의 테스트 적용
- 7. 프래그먼트가있는 두 개의 패널 UI와 개별 액티비티
- 8. 두 개의 개별 쿼리에서 최대 값 반환
- 9. 두 개의 개별 응용 프로그램 간의 통신
- 10. NHibernate - 동일한 데이터베이스에 액세스하는 두 개의 SessionFactories
- 11. 두 개의 동일한 조각 다르게
- 12. 은 두 개의 동일한 선택
- 13. 개별 창 서비스의 성능 모니터링
- 14. 중간 모델이 Ruby on Rails에서 두 개의 개별 모델을 결합합니다.
- 15. 자바에서 작업량 분포/병렬 실행
- 16. log4net이 두 개의 개별 파일에 기록하는 것을 중지하는 방법
- 17. SQL Server보기를 Access db : 성능 질문에 연결
- 18. 두 질문에 2010
- 19. MySQL 성능 : GROUP_CONCAT을 사용하는 단일 쿼리 또는 두 개의 개별 쿼리?
- 20. makefile에서 두 개의 개별 실행 파일 만들기 (g ++)
- 21. 두 개의 개별 조건을 기반으로 db 테이블 업데이트
- 22. 두 개의 서로 다른 코어에서 두 개의 개별 기능을 실행하기위한 MATLAB Parallel Toolbox
- 23. 두 개의 EAR 파일, 동일한 JPA entitymanager, 동일한 트랜잭션 => 동일한 세션?
- 24. 프로그래밍 방식으로 두 개의 개별 파일에 동일한 메시지를 작성하도록 log4net 구성
- 25. Perl을 사용하여 동일한 텍스트를 두 개의 개별 파일 핸들에 쓰려면 어떻게해야합니까?
- 26. 커밋 데이터를 잃지 않고 동일한 웹 사이트의 두 개의 개별 자식 리포지토리를 "병합"하는 방법은 무엇입니까?
- 27. mysql은 두 개의 동일한 인덱스로 어떻게 작동합니까?
- 28. 동일한 컴퓨터에서 두 개의 루비 스크립트 동기화
- 29. 동일한 계약에 대한 두 개의 바인딩
- 30. 두 개의 계약을 동일한 WSDL에 결합하십시오
여러 JVM은 별도의 기계에 가야합니다. –