Linux, IPC 및 성능

1.
분산환경(distributed computing environment)이 유행이었던 때가 있었습니다. 메인프레임이 유닉스서버로 바뀔 때 등장하였던 개념입니다. “복수의 이기종 컴퓨터 간에 애플리케이션을 나누어 처리하기 위한 환경”입니다.. 90년대말 HTS가 등장할 때 분산환경을 기반으로 한 네트워깅기술은 매우 중요하였습니다. 그런데 멀티코어를 기반으로 한 x.86이 시장을 주도하면서 socket 대신 IPC가 각광을 받기 시작하였습니다. Core To Core, Thread To Tread, Process To Process를 위한 기술이 HPC와 Low Latency를 위해 중요해졌습니다.

위의 그림은 리눅스의 커널구조입니다. 커널은 프로세스간의 통신을 지원하기 위하여 IPC를 제공합니다. 이와 관련하여 아주 자세한 정보는 JoinC님의 자료를 참조하시길 바랍니다. 아주 방대한 내용을 무척 잘 정리주셨습니다. 이런 분을 존경합니다.(^^)

Joinc의 리눅스 시스템 프로그래밍 8장 IPC

혹 프레젠테이션으로 된 자료를 원하시면 Using the POSIX API – Threads, real-time and IPC도 참고로 하세요. Free Electrons라는 회사가 Embeded Linux와 관련한 개발을 지원하기 위해 공개한 자료중 하나입니다.

Download (PDF, 957KB)

IPC중 Message Queue만 집중적으로 학습하고자 하면 The Linux Programming InterfaceChapter 52: POSIX Message Queues가 있습니다.

Download (PDF, 2.05MB)

2.
서론이 길었습니다. IPC 일반을 소개하는 것은 시작입니다. 다양한 IPC 통신방식중 어떤 것이 어떤 성능을 보여주는지를 살펴보고 증권사 IT팀이 시험할 결과까지 소개함이 목적입니다.

먼저 Disruptor와 FEP때 소개하였던 ipc-bench: A UNIX inter-process communication benchmark를 이용한 결과입니다. IPC-bench는 Latency benchmarks of Unix IPC mechanisms에서 구할 수 있습니다. IPC Bench를 가지고 다양한 CPU로 시험을 한 결과를 홈페이지에 공개하고 있습니다. 그중 Intel(R) Xeon(R) CPU E5-2643 0 @ 3.30GHz를 Linux 3.5.0-34-generic, x86_64 환경에서 시험한 결과입니다. IPC Bench가 제공하지 않는 IPC통신방식은 소스수준에서 추가하면 됩니다.

먼저 Latency입니다.

다음은 Throughput입니다.

이제 증권사IT 엔지니어가 도움을 주신 귀한 자료입니다. IBM P시리즈에 AIX와 Linux를 각각 설치하여 MPSC방식으로 데이타를 전달하는 시험을 하였습니다.사용한 IPC통신방식은 1)Shared-Memory, FIFO 2)Shared-Memory, Semaphore 3)Message Queue 입니다. 비슷한 업무를 하시는 분들에게 좋은 자료였으면 합니다. 자료를 제공해주신 분은 대신증권 이창우님(hammer@daishin.com>)입니다.감사드립니다.

2 Comments

  1. 이준희

    링크나 이미지가 대부분 깨져있습니다. 확인 부탁드립니다.

    Reply
    1. smallake (Post author)

      몇 개는 복원했고 테스트결과는 구글링하시면 확인하실 수 있습니다. 오래전 해킹으로 데이타가 왕창 날라가면서 발생한 일인데.. 복구를 하지 않고 있습니다.

      Reply

Leave a Comment

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

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