PowerPC와 AIX의 튜닝

1.
2004년쯤입니다. 넥스트웨어 대표이사를 맡고 있을 때 HTS플랫폼을 대만에 수출하기로 하고 어떤 회사와 계약을 맺었습니다. 단 조건이 IBM AIX용으로 변화하여야 한다는 조건이었습니다. 이 때 개발자와 함께 대만에 들어가서 AIX용으로 작업을 하였습니다. 그 당시 가지고 있었던 HiperT는 Linux와 Solaris환경에서 개발,운용하였지만 AIX도 유닉스라 큰 어려움이 없을 것으로 생각했습니다. 그런데 성능이 마음에 들지않았습니다. 문제가 된 부분을 해결하기 위하여 AIX튜닝에 도전했었습니다.

다시 10년이 흘렀습니다. IBM제품중 PowerPC 시리즈를 사용할 기회가 거의 없습니다. 더구나 Linux에 최적화한 제품을 개발하고 있는 처지에 AIX를 고려할 필요가 없습니다. 그런데 관심을 가질만한 일이 생겼네요. 아주 호기심으로 몇가지 조사를 해보았습니다. 나중 직접 AIX를 만질 때 참고할 계획입니다.

2.
Linux나 Low Latency와 관련한 자료를 검색하면 IBM이 가장 훌륭한 지식관리를 하고 있습니다. 다양한 자료를 체계적으로 온라인 도서관하여 고객에게 제공합니다. 사실 Linux 개발을 하는 과정에서 많은 공부를 하였습니다. AIX도 마찬가지라고 생각했습니다. 좀 의외입니다. 생각보다 다양하지 않습니다. PowerPC와 AIX가 Linux와 달리 최적화한 제품으로 출시되기때문인 듯 합니다. 그래서 조금 고생했습니다.

가장 먼저 눈에 들어온 자료는 한국IBM이 정리한 CPU와 Memory 튜닝자료입니다. 언제 만든 자료인지 알 수 없지만 한글자료이므로 소중합니다.(^^)

다음은 ‘오라클에 최적화한 튜닝방법(Oracle Architecture and Tuning on AIX)’이라는 제목의 글입니다. 오라클 DBMS의 구조를 설명하고 이를 최적화하기 위해 AIX에서 무엇을 튜닝하여야 하는지를 친절히 설명합니다. 무척 훌륭한 자료입니다. 실무를 통한 튜닝기술 습득입니다.

3.
이상이 어플리케이션이 최대성능을 낼 수 있도록 OS를 최적화하는 방법들입니다. 여기에 하나더 해야 합니다. 어플리케이션 최적화입니다. 어플리케이션을 CPU등 하드웨어에 최적화하여 컴파일하는 것입니다. 이와 관련한 자료중 한 부분입니다.

For those familiar with the XL compilers, the following list of compiler options include a short summary of new options and those related to POWER6 optimizations.

qtune=pwr6
o Instructs the compiler to schedule instructions for POWER6 optimization.This can be used with different –qarch options, but most commonly used with –qarch=pwr6.

qtune=balanced
o When used with -qarch=pwr5 (or pwr5x) this option will generate a binary that runs on both POWER5 and POWER6 systems, but with
scheduling improvements that should improve POWER6 performance.

qarch=pwr6
o Utilize POWER6-specific instructions. Compiling with –qarch=pwr6 –qtune-pwr6 should yield optimal performance on the POWER6. Note
compiling with –qarch=pwr6 will generate an executable that will only run on POWER6 or later processors.

qfloat=norngchk
o This new option produces faster software divide and square root sequences. Eliminates control flow in the software div/sqrt sequence by
not checking for some boundary cases in input values. The optimization is used by default with –O3 unless –qstrict is also specified.

여의도에 많은 경험을 가진 AIX와 PowerPC 엔지니어들이 있습니다. 스스로의 경험을 정리해서 공유해보시면 어떨까요?

12 Comments

  1. danakim

    처음 DMA 시스템을 개발했을때 개발환경이 IBM 550 이었었습니다.
    당시 CPU가 클럭이 4Ghz를 넘는 녀석이었었는데, 일반적인 3Ghz 대의 인텔 X86계열 보다 상당히 우월한 속도를 보여주더군요.
    특히 FEP에서 encrypt하는 부분에서는 마이크로 단위지만, 두배 이상의 속도를 보여줬었구요. 근자 7 시리즈로 넘어오면서 다시 3Ghz대로 바뀌면서, 그런 비교우위는 없어졌습니다. 대량데이터 처리에는 월등해 졌을지 몰라도(780에서 처리 해 보니, 4만건 주문 처리하는데 110ms 걸리더군요), 하나의 주문을 빨리 보낸다. 라는 의미에서는 더 불리해진거죠.
    AIX에서의 특이한 기억은 얘덜은 스래드 스쿠프를 지정할때 LINUX와 달리 USER MODE와 KERNEL MODE를 N:M으로 지정할 수 있는데, KERNEL MODE THREAD로 400개를 생성했다고 할때 실제 할당되는 LWP는 10개 미만이더군요. 이러다가 순간적으로 400개의 스래드가 동시작업을 처리하기 시작하면, 이때 LWP가 할당되기 시작하는데, 이 부분에서 ms단위의 딜레이가 발생하는 문제가 있었습니다. 물론 해결법은 스레드 할당 후 워밍업~~.
    개인적으로는 AIX 꽤 괜찮은 OS라고 보고 있습니다. 리눅스보다도요.

    Reply
    1. smallake (Post author)

      역시나~~~훌륭하십니다. 그런 걸 잘 정리해서 공개하세요. ㅋㅋㅋ

      IBM P5를 사용하는 회사가 몇 있습니다. IBM을 P7으로 바꾸면서 Hz를 줄였는데 P5는 오히려 반대로 갔다고 합니다. 최근 P5용으로 CPU는 5GHz라고 하네요. 아마도 업계 최강일 듯.

      Reply
    2. smallake (Post author)

      쓰신 글중 제가 모르는 단어가 있어서 좀더 알아보았습니다. “쓰레드 할당 후 워밍업”

      AIX의 특성중 Warm-up 있네요.

      Nonetheless, dynamic compilation does have some drawbacks that make it a less than ideal solution in some situations. For example, because it takes time to identify frequently executed methods as well as to compile those methods, applications typically go through a warm-up period in which performance has not yet reached its peak. This warm-up period can be a performance issue for a number of reasons. First, the large number of initial compilations can directly impact application start-up time. Not only do these compilations delay the application reaching a stable state (imagine a Web server going through an initialization phase before reaching the point of being able to perform useful work), but the methods executing frequently during this warm-up phase might not contribute significantly to the application’s steady-state performance. Performing JIT compilations that delay start-up yet do not significantly improve the application’s long-term performance are particularly wasteful. Although all modern JVMs perform tuning to mitigate start-up penalties, the problem can’t be completely eliminated in all cases.

      이런 문장도 있네요.

      The warm-up is needed to avoid the I/O that occurs when the application is not already in memory. Although such I/O does affect performance, it is not necessarily due to a lack of real memory

      읽어보면 X.86계열에서 C3를 C0 State가 되도록 하는 것과 비슷해 보입니다. AIX튜닝의 핵심은 Warm-Up시간을 줄이도록 하는 것이겠네요.
      맞을지 모르지만 저의 추측….(^^)

      Reply
  2. chris han

    AIX와 일반적인 Linux Enterprise와 비교하기는 모합니다.

    AIX와 Linux MRG Real-time하고 비교해본 자료가 있었음 좋겠네요

    제 예상에는 MRG Win이라고 생각합니다만..

    Reply
  3. Lee Hyeongchae

    저도 잘 모르지만,^^;

    증권 IBM AIX, 통신은 HP-UX 를 선호하는 것 같습니다.

    전 추가로 말씀드리면 GPFS 와 JFS/JFS2 파일시스템도 튜닝포인트가 있다고 봅니다.

    예전에 모증권사차세대에서 BMT 할때, GPFS 라고 하던데, 디스크성능이 너무 안좋고, jitter 도 심히고, 몇달에 걸쳐서 튜닝하고 디스크 교체하고, SSD 도 도입하고다군요. ( SSD 는 GPFS 보다는 DISK 성능자체때문인 것 같습니다. )

    JFS2 의 CIO ( Concurrent IO ) 설정은 조금 이슈가 있는 것 같습니다. DBMS 의 경우 data file 와 log file 의 I/O 특성이 다르기 때문에 중요합니다. ^^;

    http://www.stechno.net/sap-notes.html?view=sapnote&id=948294

    Reply
  4. danakim

    BMT 하느라, 몇몇 MRG Kernel에서 테스트를 해 볼 기회가 있었습니다.
    따로 특별히 MRG Kernel의 특성을 살려서 프로그램을 다시 짜지 않는한.
    MRG커널에서 더 느렸었습니다. 주문1건에 대한 정합성 체크가 0~1 μs 걸리는데 (일반커널)
    MRG커널에서 테스트를 하니 3-5 μs가 나오더군요. 물론 MRG Kernel에서 Jitter는 훨씬
    적었었습니다만, 대신 기존 아키텍쳐를 그냥 적용하면, 공평하게 느려지는 현상이 있더군요.
    커널 특성을 살려서 프로그램 구조를 뜯어 고쳐 테스트 해 볼 기회가 있었으면 좋겠지만…
    과중한~~업무덕분에.. 에효…

    Reply
  5. chris han

    점차적으로 증권가도 바뀌게 되어 있습니다. 어짜피 대세는 Linux입니다.
    Top 50 HPC만 봐도 그렇고요, InfiniBand, Big Data(Openstack, CloudStack, Hadoop)관련도 그렇고요.
    위의 제가 말씀드린것은 AIX와의 상관관계를 알고 싶은 거 였고요.
    저도 HP Unix와 MRG Real-time BMT 요근래에 해봤습니다.
    이니시스 암호화 모듈까지는 MRG 4 μs under, HP 6 μs 정도 나왔고요.
    거래소까지는 MRG 20 μs under, HP 26 μs 정도 나왔습니다.

    Reply
    1. smallake (Post author)

      혹 ‘거래소까지는 20us와 26us”라고 한 것이 맞나요? 어떤 경우에도 이숫자가 나올 수 없는 것이 우리나라 규정인데.(^^) 만약 아니라고 하면 …

      Reply
  6. chris han

    문제는 튀는 데이타인데요 튀는 데이타 경우 MRG 26 μs under, HP 43 μs under이고
    1000건 날렸을때 MRG가 튀는 데이타가 65% 이하 적었습니다.
    AIX에서도 튀는 비율은 HP와 비슷할 것으로 보입니다. 해보신 분이 있으면 좋겠네요

    Reply
  7. smallake (Post author)

    Redhat을 주로 사용하시나 보네요. 같은 Realtime Linux인 SUSE를 사용하시는 분들은 없나보네요?

    요즘 여의도에서는 AIX와 Linux가 힘을 겨루고 있나봅니다. Exture+이후 Unix시대가 저물지 아니면 Unix가 방어할지..

    Reply
  8. chang

    AIX튜닝자료를 작성하신 분은 제가 아는분인듯한데 맞는다면 좀 된 자료 같네요. 제가 테스트해본 결과로는 IBM의 p5 4.3GHz보다는 intel E5 x2690 2.9GHz가 latency나 throughput 모두 우수했었네요. UNIX에서 작성된 코드를 LINUX에서 돌리면 효과는 별로 없고 코드 최적화와 그에 맞는 OS와 서버의 튜닝이 반드시 있어야 최적의 성능을 냈었네요. FEP구간에서 암호화 포함하여 리눅스가 세배이상 빠른 결과를 얻었습니다.

    Reply
    1. smallake (Post author)

      말씀대로 AIX자료는 좀 오래된 자료입니다. 한글자료가 별로 없더군요.

      그리고 댓글에서 말씀하신 실험값이 의미가 있네요.
      리눅스를 도입하든 AIX를 계속 사용하든 최적화가 관건이네요.

      감사합니다.

      Reply

Leave a Comment

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

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