1.
몇 일전 트윗을 하다고 한 분과 잠시 대화를 나눴습니다. 처음으로 올린 트윗은 이렇습니다.
HP, 델, 국산으로 비슷한 사양으로 견적을 받았습니다. 차이가 큽니다. 증권사와 이야기를 하면 항상 예산이 걸립니다. 그런데 하드웨어는 고가의 장비를 고집합니다. 요건을 명확히 하고 BMT라도 하면 되는데. 결과적으로 소프트웨어예산만 줄어듭니다.
여기에 꼬리에 꼬리를 물고 이야기가 이어졌습니다.
@smallake x86서버를 도입할 경우, H/W의 비용에 비해 S/W의 비중이 너무 큽니다. 또한 변화가 심하고 vendor마다의 정책이 많이 달라. 전체 단가계약을 위한 BMT도 프로젝트별 BMT도 쉽지 않더라고요.
@Happy_N_Ding (^^) 저는 트레이딩서버을 이야기했습니다. ELW DMA를 개발한다고 할 때 SW시장가격이 있습니다. 이 경우 IBM P7시리즈와 IBM x86 그리고 국산서버를 놓고 비교하면 가격만큼 성능차이가 날지. 어떨까요?
@smallake 국산서버는 잘 모르겠고, IBM P7이랑 x86은 얼마전에 비교해본적이 있습니다. P7의 1Core가 x86의 2Core정도의 tpmC를 가진다고 보면 될것 같더군요.
@Happy_N_Ding ELW VIP를 위하여 P7 을 사용하는 경우가 많았죠. 한 팀을 위한 것이니까 네명이라고 하죠. 네명을 위한 트레이딩서버로 P7과 x86을 비교할 때 어떤 선택이 합리적이냐는 의문입니다. tpmC가 기준이 될지 의문(^^)
@smallake 아시듯이 tpmC가 기준이 될 순 없겠지만 대체할만한것도 마땅한게 없죠. 결국 case by case란 얘기인데. 기회가 되면 bmt는 해 볼 생각입니다. 정보 공유 하시죠 ㅋㅋ
@Happy_N_Ding 어! 무슨 공유할 정보가 있어서 그런 것은 아닙니다. 똑같은 x86서버를 보고 BMT도 없이 선입견을 가질까 궁금해서 올린 트윗입니다. BMT도 정확히 모델을 설정하고 해야 하는데. STAC방법론을 참고하시면 어떨지.
서로 다른 처지이기때문에 다른 이야기를 한 듯 합니다 . 위에서 잠시 등장했던 단어가 있습니다. tpmC입니다. 주로 데이타에비스서버를 비교할 때 사용하는 벤치마크값으로 알고 있습니다. 증권사의 트레이딩서버를 도입할 때 tpmC와 같은 값이 유효하지 않다고 생각합니다. 그렇다고 적합하지 않은 숫자를 가지고 비교하는 것은 의미가 없기때문에 자체적인 방법론을 찾아야 하지 않을까 합니다. STAC가 제시하는 방법도 하나의 선택이라고 생각합니다.
2.
증권사 트레이딩서버는 외국벤더들의 부침과 연결됩니다. 98년말 HTS가 도입된 이후 트레이딩서버시장은 대부분 SUN제품이 주도하였습니다. 가장 많이 사용하였던 기종인 Enterprise 3500입니다. 아마 베스트셀러가 아니었나 기억합니다. HTS동시접속자가 늘어나고 도입하는 서버댓수가 점점 늘어갑니다. 세자리수에 가까운 서버를 보유한 적도 있었습니다.? 관리비용이 늘어납니다.? 경쟁자의 윈백정책이 등장하고 가격경쟁이 불 붙었습니다. 증권사의 필요와 외적인 변화가 맞물려 트레이딩서버는 대형화하고 특정 벤더가 시장을 주도하였습니다. 그리고 현재에 이르고 있습니다.? 아마도 이런 영향을 받아서 VIP이든 프랍용 트레이딩서버든 IBM을 주로 사용한 듯 합니다.? 반면 외국계 DMA 트레이더들은 리눅스를 이용한 X.86서버를 이용한다고 들었습니다. 고비용 저효율, 저비용 고효율의 대비입니다.
그래서 리눅스 혹은 윈도우2008서버를 기본으로 채택하였습니다. 금융에서 지명도가 떨어지는 델사와 협력을 하고 있습니다. 쉽지 않을 듯 합니다. 그런데 IBM, HP 혹은 오라클 및 델사의 X,.86서버가 성능에서 많은 차이가 있을까 궁금합니다. Low Latency와 관련된 네트워크제품을 공급하는 회사의 자료를 살펴보았죠.시험환경을 소개하는 자료가 있는데 특정한 회사제품 보다는 CPU, Cache, Memory 정보만 나와 있더군요. 생각해보니 어떤 회사냐 보다 어떤 Intel 혹은 AMD CPU를 사용하였는지 Cache Memory는 얼마고 RAM은 어떤지가 더 중요한 정보라는 생각이 들더군요. UNIX를 높고 보면 각 벤더들 마다 사용하는 CPU가 다릅니다. SPARC,RISC, PA-RISC등으로 나뉘고 각각에 맞는 OS가 별도로 있습니다. 결국 하드웨어구조가 다릅니다. 반면 X.86계열은 표준화된 설계가 있지 않을까 합니다. 그에 맞춰서 생산을 하다보면 차이를 낼 수 있는 부분이 그리 많지 않다고 생각합니다. 더구나 대부분 생산은 중국이고.
3.
앞서 살펴보았던 문서를 보다 새로운 것을 하나 발견하였습니다. BIOS Configuration입니다.? Low Latency를 위하여 다음과 같이 조정을 하고 시험하였다는 이야기입니다.
C-State, C1-Enhanced, C3-Report, C6-Report,Hyperthreading, Turbo Mode:Disable
솔직히 PC를 사용할 때 BIOS를 조정하는 경우가 거의 없습니다. 오버클락을 하지도 않기때문에 HDD와 관련된 것외에 눈 여겨 보지 않았습니다. 그래서 IBM, HP 및 Dell사의 X.86서버제품을 Low Latency환경을 위한 사용할 경우 어떻게 튜닝하는지를 살펴보았습니다. 다 동일합니다. 물론 BIOS가 달라서 약간 다른 점은 있지만 넓게 보면 동일합니다. 그중 아래의 값을 Disable로 바꾸도록 권고를 공통으로 하고 있습니다.
Turbo Boost Tech: Whether the processor uses Intel Turbo Boost Technology, which allows the processor to automatically increase its frequency if it is running below power, temperature, or voltage specifications.
Enhanced Intel Speedstep Tech: Whether the processor uses Enhanced Intel SpeedStep Technology? allows the system to dynamically adjust processor voltage and core frequency, which can result in decreased average power consumption and decreased average heat production.
Hyper Threading Tech field: Whether the processor uses Intel Hyper-Threading Technology, which allows multithreaded software applications to execute threads in parallel within each processor.
Virtualization Technology field:Whether the processor uses Intel Virtualization Technology, which allows a platform to run multiple operating systems and applications inindependent partitions. If you change this option, you must power cycle the server before the setting takes effect.
Processor sleep states (C-States):Microprocessors are able to enter low-power modes or sleep states.
These sleep states can cause unbounded latencies in real-time applications.Processor C3 Report field: Determines whether the processor sends the C3 report to the operatingsystem.
Processor C6 Report field:Determines whether the processor sends the C6 report to the operating system.
이상은 아래의 자료를 참조하였습니다.
IBM Hardware, BIOS, and firmware settings
Configuring the HP ProLiant Server BIOS for LowLatency Applications White Paper
Configuring Low-LateEnvironments on DellPowerEdge Servers?
이중에서 CPU 절전모드를 관리하는 C-States는 Jitter를 줄이는데 아주 유용합니다. 특정 회사가 서버의 Jitter를 줄일 때 BIOS의 이 값을 Disable로 변경하여 성능향상을 하였습니다.
Everything You Need to Know About the CPU C-States Power Saving Modes
앞서 자료를 보면 이 문장입니다.
Microprocessors are able to enter low-power modes or sleep states.
These sleep states can cause unbounded latencies in real-time applications.
4.
트레이딩시스템이 주로 하는 일은 시세데이타 처리와 주문 및 매매체결데이타의 처리입니다. 복잡한 프로세싱이 아닙니다. 그렇기때문에 Low Latency이 무척 중요합니다. 이 경우 제품을 선택할 때 가격과 성능을 함께 고려하면 어떨까 합니다. HPC의 주된 흐름은 X.86에서 이루어지고 있기때문에 지금까지와는 다른 선택이 가능하지 않을까 합니다.
서로 다르다고 하지만 결국 하드웨어에서 조정하는 항목은 X.86계열이기때문에 동일합니다. 동일하게 하드웨어 튜닝을 하고 동일한 네트워크를 사용하여 동일한 프로세스를 가지고 시험을 할 때 과연 지명도 높은 서버가 좋은 점수를 받을까요?
C-States control 을 disable 하기 전에 확인해보고 싶어서 그러는데, 트레이딩 프로그램이 동작중인 상태에서 현재 C state 단계가 어디인지 알수있는 방법이 있나요? 이미 C0~C1 정도로 돌고있다는 굳이 변경하여도 성능 향상이 없을테니까요
제가 Disable 전후를 국내증권사에 실제로 적용할 결과를 보니까 차이가 많이 납니다. 가장 중요한 점은 Jitter부분입니다. 편차가 많이 줄어들더군요.
그리고 프로그램은 잘 모르지만 구글링하니 powertop이라고 있네요.
http://www.linuxpowertop.org/