2015-01-14 2 views
-2

스레드가없는 간단한 프로그램이 많은 코어를 가진 일부 컴퓨터에서 더 빨리 실행할 수 있는지 궁금합니다. 또는 리눅스 서버 클러스터에서? 최근에 내 PC (코어 i7, 16GB RAM)에서 수십억 개의 IP 패킷을 처리해야하는 알고리즘을 실행했으며 처리를 완료하는 데 1881 분이 걸렸습니다. 그렇다면 10 개의 프로세서와 48GB RAM을 가진 각 노드에서 리눅스 서버 클러스터에서 알고리즘을 실행하여 결과를 더 빨리 얻을 수 있다고 생각했습니다. 그러나 두 실험 간에는 큰 차이가 없습니다. 누군가 내가 누락 된 의견을 말할 수 있습니까?자바 프로그램을 더 빨리 실행하는 방법은 무엇입니까?

+2

프로그램이 CPU 바인딩 또는 IO 바인딩입니까? 당신은 당신이 사용하고있는 코어의 수를보기 위해 최고 명령을 실행할 수 있습니까? – qqibrow

+3

대답은 "그것이 달려 있습니다", 코드, 입력 데이터 및 작업 배포 방법 및 기타 다른 것들입니다. 이 세부 사항 중 아무 것도 알려지지 않았기 때문에 ... 잘, 그것은 달려있다 – reto

+0

아마도 당신은 하둡을 찾고 있습니까? – Tanay

답변

2

알고리즘이 실제로 이러한 여러 인스턴스와 여분의 메모리를 사용하지 않는 한 많은 차이가 없어야합니다. 병렬 프로그래밍은 독자적인 기술이며 "일반"단일 스레드 프로그램은 병렬로만 변경되는 것이 아닙니다.

0

더 많은 코어를 실행하는 단일 스레드가있는 경우 CPU 또는 시스템이 도움이되지 않습니다. 오직 더 빠른 CPU만이 처리 속도를 높이고 프로세스가 CPU 바운드이고 IO 바인딩이 아닌 경우에만 가능합니다.

먼저 처리 시간이 소비 된 곳, CPU에서 또는 IO를 기다리는 지 확인해야합니다. 상당량의 CPU 사용량이있는 경우 작업을 병렬 처리하여 데이터를 청크로 분할하고 다른 스레드를 resp 할 수 있습니다. 기계가 병렬로 처리합니다.

관련 문제