예스스탁
예스스탁 답변
2012-06-20 16:24:24
안녕하세요. 예스스탁입니다.
현재 저희 예스스탁의 시뮬레이션 최적화는 멀티 코어를 통한 병렬처리를
지원하고 있습니다. 따라서, CPU의 Core 개수가 많을수록 시뮬레이션 최적화의
속도가 증가합니다.
또한, CPU의 클럭속도는 컴퓨터의 기본연산 속도와 관련이 있으므로 클럭이
높을수록 처리속도가 증가합니다.
그러므로 기본적으로는 CPU가 고사양일수록 시뮬레이션 최적화를 빨리 끝낼 수
있습니다.
다음으로 메모리 문제는 현재 컴퓨터의 상태에 따라 많이 달리지게 되고
어려운 문제이므로 기본적인 개념만 설명드리겠습니다.
현재 저희 프로그램은 32bit 운영체제만을 지원하고 있기 때문에 고객님이
64Bit운영체제를 사용하고 있더라도 프로그램이 사용할 수 있는 최대 메모리는
약 1.4GB까지만 사용할 수 있습니다.
현재 고객님의 RAM이 1.75GB이므로 1.4GB까지 사용할 수 있다고 생각할 수
있겠지만, 실제로는 윈도우와 기타 필수 프로세스들이 거의 절반을 차지하여
다른 프로그램들이 나머지 메모리를 나눠쓰게 되고, 그 상황에서 프로그램이
1.4GB까지 메모리가 필요하게되면 윈도우에서는 부족한 부분을 가상메모리를
통해 프로그램에 할당합니다. 가상메모리는 하드디스크를 이용하게 되므로
속도는 엄청나게 느려지게 됩니다. 따라서, 1.4GB를 모두 RAM에서 할당받을 수
있을 때 성능이 향상될 수 있으므로 이 부분은 고객님께서 윈도우를 잘 운영하셔야
합니다. 기본적으로 메모리는 많을 수록 좋지만 소켓에 RAM을 아무리 많이 장착하더라도 32Bit운영체제에서는 약 3.4GB까지만 인식합니다.
참고로 시뮬레이션 최적화의 병렬처리는 마지막 변수 최적화 개수를 병렬처리하고
있습니다. a, b, c 세 개의 변수를 각각 1~5, 11~20, 21~60 씩 최적화할 때를 예로
설명드리겠습니다. 이때의 총 최적화 횟수는 5 x 10 x 40 = 2000 입니다.
최적화는 (a, b, c)를
(1, 11, 21), (1, 11, 22), ..., (1, 11, 59), (1, 11, 60),
(1, 12, 21), (1, 12, 22), ..., (1, 12, 59), (1, 12, 60),
...
(2, 11, 21), (2, 11, 22), ..., (2, 11, 59), (2, 11, 60),
(2, 12, 21), (2, 12, 22), ..., (2, 12, 59), (2, 12, 60),
...
(5, 19, 21), (5, 19, 22), ..., (5, 19, 59), (5, 19, 60),
(5, 20, 21), (5, 20, 22), ..., (5, 20, 59), (5, 20, 60)
이런식으로 변수를 하나씩 증가시키면서 시스템을 적용해 최적의 변수를 찾습니다.
병렬처리는 마지막 변수를 21~60까지 CPU의 코어가 나눠서 처리하고 있습니다.
따라서, 쿼드코어(4)일 경우 40개를 코어하나가 10개씩 나눠서 처리하고 옥타코어(8)일
경우 코어하나가 5개씩 나눠서 처리합니다.
또한, 마지막 변수를 최적화하므로 총 최적화 개수가 같더라도 a, b, c를 1~5, 11~20,
21~60 최적화할 때가 21~60, 11 ~ 20, 1~5를 최적화할 때보다 빠릅니다.
그러므로, 최적화 개수가 제일 많은 변수를 마지막으로 선언하는게 좋습니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 컴퓨터 사양과 시뮬레이션 속도
> 내용 확인 중입니다. 확인 이후에 추가 답변드리겠습니다.
> 별이777 님이 쓴 글입니다.
> 제목 : 컴퓨터 사양과 시뮬레이션 속도
>
현재 컴퓨터 사양은 아래와 같습니다.
cpu : AMD Athlon(tm) 2 X2 245 Processor 2.91GHZ
RAM : 1.75 GB
현재 시뮬레이션 형태
대상 : 2004-2012 연결선물 1분봉
코딩형태 : SWINGHIGH, SWINGLOW 함수포함되어있으며,
다소 여러봉을 읽어야하는 로직들이 포함되어있는형태.
시간 : 보통 2-3분 (변수변집을통한 추가 범위안주었을경우.즉 한번.)
2-3분이라하면, 짧은시간일수도있지만, 계속 상황별로 바꿔가면서
시뮬레이션해야할경우가 많아서 짧지않고, 빠르게테스트하기 힘든시간임.
여기에다 변수에 범위를 주고 여러번을 한꺼번에 시뮬레이션들어갔을경우,
말그대로 10분이상 걸리는경우 다반사이며, 로직검증하기가 너무 어려움.
(참고로 3-8분주기의 단순한 로직들은 바로 시뮬레이션이 몇초만에 나와서,
속도감있게 시뮬레이션하고있음.)
여기서 컴퓨터 사양을 높이면 시뮬레이션 속도를 높일수 있는지 궁금합니다.
CPU, RAM UPGRADE시 각각에 대한 효과도 궁금합니다.
최근출시되는 최고사양수준의 PC를 사용할경우의 효과도 궁금합니다.
PC사양 UPGRADE 이외의 다른 대안도 혹시 있는지도 궁금합니다.
답변 부탁드립니다.