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

1.
그동안 네트워크, 메모리와 관련한 레이턴시이야기를 했습니다. 오늘은 파일시스템입니다. 정확히 File System을 구성하는 저장매체에 대한 이야기입니다. 트레이딩시스템을 구축할 때 여러가지를 고려합니다. 그중의 하나가 SSD입니다. 요즘 트레이딩시스템을 구현하면 대부분 메모리를 이용합니다. shared Memory를 이용하여 데이타를 관리합니다.

하지만 이것외에도 시스템의 I/O에 영향을 주는 부분이 있습니다. 어플리케이션 로그입니다. 로그를 업무에 따라 다양하게 정의하여 사용할 수 있습니다. 트레이딩시스템의 로그중 가장 중요한 로그는 주문 및 체결에 관련한 로그입니다. ?특히 FEP와 통신을 할 경우 복구등을 위하여 FEP수신 데이타를 관리합니다. 이런 로그데이티를 어떻게 관리하느냐도 레이턴시에 중요한 영향을 미칩니다.

리눅스를 HDD나 SDD에 설치하는 경우를 제외하면 특수한 목적을 위해 사용할 수 있는 방법은 메인 메모리에 파일시스템을 구성하는 것입니다. 가장 보편화된 방법은 ramfs와 tmpfs입니다.

RAMDISK, ramfs, 그리고 tmpfs사이에 생기는 혼동!

두가지 모두 만드는 방법은 너무 간단합니다. 먼저 ramfs와 tmpfs를 만드는 방법입니다.

부팅때 ramfs를 생성하고 싶으면 /etc/fstab에 등록합니다. 보시면 ramfs와 tmpfs가 비슷해 보입니다만 약간 차이가 있습니다. 그중 핵심은 swap영역을 사용하느냐입니다. ramfs는 swap영역을 사용하지 않습니다. 모든 데이타를 ?ram에 저장합니다. 반면 tmpfs는 자동적으로 크기를 조절합니다. 대신 디스크의 swap영역을 사용하므로 병목이 발생할 가능성이 있습니다.

그렇지만 이것 말고 또다른 것이 없을까 조사를 해보았습니다. 그래서 찾은 것이 RapidDisk입니다.

RapidDisk is a free and open source project containing a Linux kernel module and administration utility that functions similar to the Ramdiskadm of the Solaris (operating system). With the rxadm utility, the user is capable of dynamically attaching, removing, and resizing RAM disk volumes and treat them like any other block device.

현재 2.0b까지 나왔지만 컴파일 에러때문에 1.4b를 가지고 시험을 했습니다. 그냥 아래와 같이 합니다. 다만 컴파일을 위하여 개발용 커널소스등을 설치해야 합니다.

rapidDisk를 생성하거나 삭제하는 명령어는 rxadm입니다. 자세한 내용은 man page를 보면 됩니다. 저는 1G정도의 RapidDisk를 생성하였습니다.

이제 생성한 rxd0에 파일시스템을 생성하고 특정한 폴더에 연결하여야 합니다.(Mount)

다른 것과 비교하기 위하여 ramfs를 만들었습니다. df로 확인한 내용입니다.

2.
이제 레이턴시를 측정하기 위한 방법입니다. 어제 소개하였던 LMbench도 lat_fs라는 명령어가 있지만 너무 단순합니다. 그래서 선택한 것이 IOZone입니다. CentOS에서 yum으로 설치할 수 있습니다.아래를 보시면 IOZone을 잘 설명하였습니다.

Measure Filesystem I/O Performance With iozone
IOzone Filesystem Benchmark

참고로 IOZone을 잘 사용하는 방법을 10가지로 정리한 글도 있습니다. 아주 훌륭한 도구입니다.

10 iozone Examples for Disk I/O Performance Measurement on Linux

이제 IOZone을 이용하여 시험을 할 차례입니다. 시험방법은 HDD, ramfs, RapidDisk에 IOzone을 이용하여 각각 시험을 하였습니다. 아래는 RapidDisk에서의 시험입니다.

 

이제 결과를 볼까요?

1.HDD
Parent sees throughput for 5 initial writers  =   480.03 KB/sec
Parent sees throughput for 5 rewriters     =   470.70 KB/sec
Parent sees throughput for 5 readers      =  6896.51 KB/sec
Parent sees throughput for 5 re-readers     =  3496.49 KB/sec
Parent sees throughput for 5 reverse readers  =  7129.70 KB/sec
Parent sees throughput for 5 stride readers   =  8080.01 KB/sec
Parent sees throughput for 5 random readers   =  3872.34 KB/sec
Parent sees throughput for 5 mixed workload   =   157.82 KB/sec
Parent sees throughput for 5 random writers   =   437.45 KB/sec
Parent sees throughput for 5 pwrite writers   =  3162.24 KB/sec
Parent sees throughput for 5 pread readers   ?=  3756.12 KB/sec

2.RapidDisk
Parent sees throughput for 5 initial writers  =  6032.37 KB/sec
Parent sees throughput for 5 rewriters     =  6689.65 KB/sec
Parent sees throughput for 5 readers      =  7705.46 KB/sec
Parent sees throughput for 5 re-readers     =  8213.43 KB/sec
Parent sees throughput for 5 reverse readers  =  8656.20 KB/sec
Parent sees throughput for 5 stride readers   =  6634.74 KB/sec
Parent sees throughput for 5 random readers   =  9478.88 KB/sec
Parent sees throughput for 5 mixed workload   =  7590.03 KB/sec
Parent sees throughput for 5 random writers   =  7647.96 KB/sec
Parent sees throughput for 5 pwrite writers   =  7679.25 KB/sec
Parent sees throughput for 5 pread readers   ?=  16733.03 KB/sec

3.RamDisk
Parent sees throughput for 5 initial writers  =  7106.27 KB/sec
Parent sees throughput for 5 rewriters     =  4978.48 KB/sec
Parent sees throughput for 5 readers      =  3536.45 KB/sec
Parent sees throughput for 5 re-readers     =  4141.03 KB/sec
Parent sees throughput for 5 reverse readers  =  3802.66 KB/sec
Parent sees throughput for 5 stride readers   =  8457.57 KB/sec
Parent sees throughput for 5 random readers   =  4214.80 KB/sec
Parent sees throughput for 5 mixed workload   =  4642.93 KB/sec
Parent sees throughput for 5 random writers   =  2572.53 KB/sec
Parent sees throughput for 5 pwrite writers   =  7449.41 KB/sec
Parent sees throughput for 5 pread readers   =  8675.97 KB/sec

어떤 생각이 드시나요 어플리케이션이 어떻게 로그를 남기고 로그를 이용하여 무엇을 할지에 따라 적당히 선택하시면 될 듯 합니다. 만약 HDD가 SSD라고 하면 또다른 값이 나올 듯 합니다. 다만 저는 SSD가 없어서 측정을 하지 못했습니다.

ZeroAOS의 로그활용방법을 볼 때 RapidDisk가 가장 좋은 성능을 보여줄 듯 합니다. rewriter만 보면 15배정도 차이를 보입니다. re-reader는 2배정도입니다. Ram은 어제 Memory Latency측정을 하였던 Netlist제품입니다.

이제 지연과 관한 하드웨어 부분을 정리하였습니다. 어떤 제품을 선택하든 중요한 것은 측정이니까 다양한 시험을 해보셨으면 합니다.

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.