함께 놀자! Linux와 Python

Linux환경에서 SSD 성능 최적화하기

1. SSD가 대세입니다. SSD의 가격이 낮아지면서 속도를 원하는 일반 이용자들도 SSD를 사용합니다. CPU나 Ram을 늘리기 보다 SSD를 적용하면 체감속도는 휠씬 빠르다고 합니다. Low Latency를 원하는 트레이더들의 경우도 SSD는 기본입니다. 처음 SSD를 바라본 시각은 HDD의 대체재였습니다. HDD 보다 SSD를 이용하면 저장매체가 다르므로 당연히 빠릅니다. 딱 여기까지만 생각했습니다. 그런데 NHN 개발자 블로그에 올란 온 글을 보니 더 가야할 길이 있었습니다. SSD는 소프트웨어…
Read more

리눅스의 시간동기화와 HyperThreading

1. 지난 8월 리눅스 기반의 트레이딩시스템에서 시간동기화를 어떻게 해야 하는지를 다루었습니다. 트레이딩시스템을 위한 시간 동기화 이 때 STAC에서 발표한 자료 때문에 Symmetricom에 메일을 보냈다고 했었습니다. 이후 아무런 소식이 없었는데 어제 HFT Review가 white Paper를 받으라고 메일을 보냈네요. 지난 번 글에서 자세히 소개하지 못한 내용을 글로써 자세히 정리하고 있습니다.

Mutex Vs Spinlock

1. 어플리케이션에서 레이턴시를 줄이는 일은 그리 간단하지 않습니다. 예를 들어 Multi-Threaded Trading Application을 구현할 때 Lock-free Algorithm을 사용하는 경우가 많다고 하였습니다. 전략의 복수이벤트처리 그렇지만 Lock-Free Algorithm이 전가의 보도(傳家寶刀)처럼 Latency를 확 줄여주지 않습니다. 반대로 많은 프로그램들은 쓰레드동기화를 위하여 Lock을 사용합니다. 대표적인 방법은 Mutex입니다. Mutex를 사용한다고 해서 무조건 느린 어플리케이션이라고 할 수도 없습니다. 목표로 하는 업무와 하드웨어환경에 따라 최적화한 방법을 꾸준히 찾아내는…
Read more

어플리케이션 로그와 레이턴시

1. 그동안 네트워크, 메모리와 관련한 레이턴시이야기를 했습니다. 오늘은 파일시스템입니다. 정확히 File System을 구성하는 저장매체에 대한 이야기입니다. 트레이딩시스템을 구축할 때 여러가지를 고려합니다. 그중의 하나가 SSD입니다. 요즘 트레이딩시스템을 구현하면 대부분 메모리를 이용합니다. shared Memory를 이용하여 데이타를 관리합니다. 하지만 이것외에도 시스템의 I/O에 영향을 주는 부분이 있습니다. 어플리케이션 로그입니다. 로그를 업무에 따라 다양하게 정의하여 사용할 수 있습니다. 트레이딩시스템의 로그중 가장 중요한 로그는 주문 및…
Read more

Memory Latency와 LMbench

1. 레이턴시가 여전히 화두입니다. 레이턴시는 컴퓨터구조를 공부하도록 합니다. 레이턴시를 이야기할 때 자주 등장하는 그림입니다. 하드디스크보다는 메모리, 메모리보다는 CPU 캐시를 이용한 어플리케이션이 빠른 이유입니다. 그런데 똑같은 어플리캐이션이라고 하더라도 하드웨어가 다르면 다른 성능을 보입니다. 좀더 좋은 CPU나 TOE를 지원하는 네트워크카드를 선호하는 이유이기도 합니다. ?하드디스크를 대신하여 SSD를 이용하는 것도 같습니다. 그런데 메인메모리는 한번 깊이 생각해보지 않았습니다. 몇 일전 메인메모리를 검토할 기회가 생겼습니다. Netlist사의…
Read more

어떤 멋진 모임

1. 몇 일전 CPU이야기를 소개하였습니다. 오늘은 커널을 소개하고자 합니다. 아침에 일어나서 구글로 지난 뉴스를 뒤적거렸습니다. 그중 C11과 관련한 내용을 찾아보았습니다. C11은 2011년에 만들어진 C언어에 관한 표준규격입니다. 그동안 표준은 C99였습니다. C99라고 해서 C11보다 최신 표준인 것으로 착각했습니다. C와 C++의 표준은 제정한 해의 마지막 두자리를 기준으로 버전을 정한다고 합니다. C Finally Gets A New Standard C11 Draft 같이 일하는 파트너는 concurrency와 관련한…
Read more

IPC와 False Sharing

1. 멀티코어시대가 열리면서 메시징시장은 변화합니다. 그중 하나가 IPC 지원입니다. 코어와 코어간의 통신이 중요해지면서 IPC가 각광을 받기 때문입니다. ZeroM도 그렇고 ZeroAOS도 IPC를 쓰레드간의 통신을 위하여 사용합니다. 시세<->OMS, OMS<->FEP게이트웨어는 IPC로 연결합니다. ZeroAOS의 성능측정을 위하여 여러번 시험을 해보았습니다. 시험을 할 때마다 이상한 증상이 보였습니다. Jitter로 해석할 수 없는 비정상적인 값들이 보이더군요. 무얼까 열심히 고민을 해보았습니다. 수많은 데이타를 보면서 일정한 패턴을 찾을 수가 없었습니다….
Read more

윈도우에서 리눅스 명령어 익히기

1. 제가 자주 가는 일본 ITPro에 ?아래와 같은 문제가 있었습니다. 윈도우의 Command Prompt에서 리눅스의 명령어와 쉘을 사용할 수 있도록 해주는 프로그램은? 1. GDB 2. KVM 3. GOW 4. PAM 5. LVM 정답을 아시나요? 저는 찍어서 맞추었습니다.(^^) 답은 3번입니다. GNU On Windows의 약자라고 합니다. 저도 처음 알았습니다. Gow – The lightweight alternative to Cygwin 보통 윈도우에서 Linux와 비슷한 환경을 만들 때…
Read more

전략의 보안과 리눅스

1. 어떤 설명회 자리였습니다. 고객이 질문을 하더군요? “가상화든 아니든 하드웨어 자원을 제공 받더라고 다른 사람이 접근가능하냐?” “시스템 관리자가 권한을 관리를 합니다.” “그러면 내가 개발한 전략이 노출될 위험이 있지않으냐?” “전략이라고 하지만 C언러로 개발한 후 컴파일한 오브젝트파일이라 알기 힘듭니다.” “그래도 불안하니까 흔적을 남기지 않는 방법이 없는지? 혹시 메모리를 이용할 수 있나요?” “음! ?메모리 디스크를 만들면 가능하지만 흔적이 남기 때문에 쉽지 않아보이네요.” 트레이더는…
Read more