오픈소스 소프트웨어 성능 최적화 보고서 6장

33
오오오오 오오오오오 오오 오오오 오오오 오 6 오 오오오 오오 오오들들 들들들들 들들들 들들 들들들들 들들들들

Upload: jamgun

Post on 23-Jun-2015

177 views

Category:

Software


1 download

DESCRIPTION

개인 저장

TRANSCRIPT

Page 1: 오픈소스 소프트웨어 성능 최적화 보고서 6장

오픈소스 소프트웨어 성능 최적화 보고서제 6 장 최적화 원리 패턴들을 구성요소

배치와 구성 도구들에 적용하기

Page 2: 오픈소스 소프트웨어 성능 최적화 보고서 6장

002

01/ 소개02/ DAnCE 의 개요03/ 최적화 원리 패턴 04/ 결론

Contents

Page 3: 오픈소스 소프트웨어 성능 최적화 보고서 6장

003소개01

기업 분산 시스템과 자원 제한적 실시간 내장 시스템의 속성들을 공유하는 , 중요한 부류의 응용 분야

1. 임무 결정적

2. 엄격한 안정성

3. 신뢰성

4. 서비스 품질 (quality of service, QoS) 요구사항

분산 실시간 내장 (distributed, real-time and embedded; DRE)

Page 4: 오픈소스 소프트웨어 성능 최적화 보고서 6장

004소개01

DRE 시스템의 응용 프로그램 및 기반 구성요소들의 배치에 관한 고유한 난제

1. DRE 시스템 영역의 응용 프로그램에는 특정 하드웨어 /소프트웨어 같은 대상 환경에 대한 특정한 의존성들이 존재 할 수 있다 .

2. DRE 시스템의 배치 기반 구조는 반드시 유한한 자원을 가진 환경의 엄격한 자원 요구 조건들을 만족해야 한다 .

분산 실시간 내장 (distributed, real-time and embedded; DRE)

Page 5: 오픈소스 소프트웨어 성능 최적화 보고서 6장

005소개01

- DRE 시스템에서 많이 쓰이는 응용 프로그램 개발 패러다임 .- 개발자가 서로 상호작용하는 블랙박스 구성요소들과 그 환경을 잘 정의된 인터페이스들을 통해서 개발하도록 장려함으로써 체계적인 소프트웨어 재사용을 촉진- 응용 프로그램의 구성 및 수명 주기를 제어하는 표준화된 메커니즘을 제공함으로써 고도로 복잡한 부산 시스템의 배치를 단순화한다 . -> 메커니즘을 통해 규모가 크고 복잡한 응용 프로그램을 더 작고 관리하기 쉬운 기능 단위들로부터 조합할 수 있다 .

구성요소 기반 소프트웨어 공학(Component-Based Software Engineering, CBSE;)

Page 6: 오픈소스 소프트웨어 성능 최적화 보고서 6장

006소개01

1.구성요소 의존성 및 버전 관리

2.구성요소 구성 관리

3.분산 연결 및 수명주기 관리

구성요소 기반 시스템의 배치와 구성관리를 어렵게 만드는 요인

p.116

Page 7: 오픈소스 소프트웨어 성능 최적화 보고서 6장

007소개01

CIAO 용 배치 엔진을 개발OMG 의 Deployment and Configuration 명세를 구현한 것배치와 구성에 대한 참신한 접근방식을 개발하는 대학원생들의 연구수단으로 쓰임-> 문제발생1. DAnCE 의 검사된 용례들은 비교적 단순하고 좁은 범위에 집중2. 전체 구조에 대한 하나의 통일된 구조적 전망이 없음

-> LE-DAnCE(locality-enabled; 국소활성화 ) 으로 개선

DAnCE(Deployment and Configura-tion Engine;DBO) 탄생

p.116

Page 8: 오픈소스 소프트웨어 성능 최적화 보고서 6장

008소개01

최적화 원리 패턴

p.116

제목 원리 네트워킹의 예낭비를 피하라 명백한 낭비를 피한다 0 복사 (zero-copy)

시간상의 이동 시간상에서 계산을 옮긴다( 사전 계산 , 게으른 평가 , 비용 공유 , 일괄처리 )

쓸 때 복사

명세 완화 명세를 느슨하게 만든다( 시간을 위해 확실성을 희생 , 시간을 위해 정확성을 희생 , 시간상의 계산 이동 )

공정한 대기열 처리

다른 구성요소 활용 다른 시스템 구성요소들을 활용한다 ( 국소성 활용 , 메모리 대 속도 절충 , 하드웨어 활용 )

Lulea IP 조회 , TCP 체크섬

하드웨어 추가 성능 개선을 위해 하드웨어를 추가한다

파이프라인식 IP 조회 , 카운터

효율적인 루틴 효율적인 루틴을 만든다 UDP 조회

Page 9: 오픈소스 소프트웨어 성능 최적화 보고서 6장

009소개01

최적화 원리 패턴

p.116

제목 원리 네트워킹의 예일반성 회피 불필요한 일반성을 피한다 Fbufs

명세 대 구현 명세와 구현을 혼동하지 않는다

Upcalls

힌트 전달 인터페이스로 힌트 비슷한 정보를 전달한다

패킷 필터

정보 전달 프로토콜 헤더로 정보를 전달한다

꼬리표 전환

예기된 용례 예기된 용례를 최적화한다 헤더 예측상태의 활용 상태를 추가하거나

활용해서 속도를 높인다활성 VC 목록

자유도 자유도를 최적화한다 IP 트라이 조회유한한 우주 활용 유한한 우주들을 위한

특별한 기법들을 사용한다타이밍 휠

효율적인 자료구조 효율적인 자료구조를 사용한다

레벨 -4 전환

Page 10: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0010DAnCE

개요

02

- 구성요소 기반 응용 프로그램 개발 과정 전반에 쓰이는 표준적인 교환 형식들을 제공하며 , 패키지 작성과 계획 수립에 쓰이는 실행시점 인터페이스들도 제공- 구성요소 배치 계획을 통해서 미들웨어 배치 기반구조에게 배치 명령들을 전달한다 .

OMG D&C 명세

Page 11: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0011DAnCE

개요

02

구성요소 인스턴스들을 위한 완전한 배치 및 구성 명령과 관련 연결 정보를 담음 .DRE 시스템은 초기화 과정에서 반드시 이 정보를 파싱하고 , 구성요소들을 물리적 하드웨어 자원들에 배치하고 , 시스템을 제 때 활성화해야 한다 .

구성요소 배치 계획 (component de-ployment plan)

Page 12: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0012DAnCE

개요

02

1.DAnCE 실행 시점 아키텍처2.자료 모형3.배치공정

DAnCE 의 중요한 성능 및 규모 가변성 문제들

Page 13: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0013DAnCE

개요

02

1. DAnCE 실행 시점 아키텍처

1. 관리자 : 하나의 문맥 안의 모든 배치 개체들을 관리하는 단일체 데몬임 . 관리자는 모든 배치 활동의 진입점으로 , 그리고 응용 프로그램 관리자 역할의 구현을 위한 팩토리로 작용

2. 응용 프로그램 관리자 : 구성 요소 기반 응용 프로그램의 실행 인스턴스들의 수명 주기를 관리 . 각 응용 프로그램 관리자는 정확히 하나의 구성요소 기반 응용 프로그램을 대표하며 , 배치 및 해체를 추동하는데 쓰임

3. 응용 프로그램 : 영역 구성요소 기반 응용프로그램의 배치된 인스턴스를 대표 . 응용프로그램을 구성하는 관련 구성요소 인스턴스들의 구성을 마무리 짓고 배치된 구성요소 기반 응용 프로그램의 실행을 시작하는데 쓰임

Page 14: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0014DAnCE

개요

02

1. 응용 프로그램의 작성에 쓰이는 여러 도구들 (개발환경 , 응용 프로그램 모형화 및 패키지 작성 , 배치 계획 수립 도구 등등 ) 사이의 교환 방식

2. 실행시점 기반 구조에 쓰이는 구성 및 배치를 서술하는 지시문

2. 자료 모형

Page 15: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0015DAnCE

개요

02

메타 데이터 = 패키지 작성 (packaging) + 영역 (domain) + 배치 (deployment)

2. 자료 모형

Page 16: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0016DAnCE

개요

02

1. 계획 준비 - 계획을 분석해서 배치에 관여하는 노드들을 결정 - 계획을 ‘국소성 제한’ 계획들로 분할 - 각각의 노드 관리자에게 국소성 제한 계획들이 주어짐 - 실행 관리자는 그러한 참조들을 이용해해서 영역 응용 프로그램 관리 자를 생성

2. 시동 시작 - 각 노드마다 노드 응용 프로그램 관리자에게 작업 위임 - 모든 구성요소를 메모리에 적재 , 사전 구성 작업 수행 , 종단에 대한 참 조 수집

3. 시동 마무리 - 객체 참조들을 각각의 노드 응용 프로그램에게 분배 - 모든 연결이 만들어짐

4. 시작

3. 배치공정

Page 17: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0017최적화

원리 패턴

03

University of Alaska Southeast(UAS) 가 주재하는 빙하 및 분수령 감지기 망 .빙하 동역학과 질량 평형 , 분수령 수문학 , 해안 해양 생태계 , 주변에 대한 인간의 영향 / 위험 요소에 관련된 자료를 감시하고 수집 .-> 빙하 속도와 빙하호 형성 , 배수 사이의 상관관계 , 분수령 수문학 , 온도 변동의 연구에 쓰임

SEAMONSTER 플랫폼의 개요(South East Alaska Monitoring Network for Science, Telecommunications, Education, and Reserch)

Page 18: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0018최적화

원리 패턴

03

SEAMONSTER 플랫폼의 개요(South East Alaska Monitoring Network for Science, Telecommunications, Education, and Reserch)

한마디로 동적인 환경 변화와 한정적인 자원 가용성의 조합 때문에 , 주어진 자원을 효율적으로 활용해야할 필요가 있음 .

-> CIAO 와 DAnCE 미들웨어 플랫폼으로 이전

-> 문제점 발생

Page 19: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0019최적화

원리 패턴

03

DAnCE 의 성능상의 문제점

-현장 하드웨어들의 제한된 성능

-노드들을 연결하는 무선망의 비교적 느린 속도

-시스템의 엄격한 실시간 요구사항

Page 20: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0020최적화

원리 패턴

03

해결책

1. 배치 계획 파싱의 최적화

2. 계획 분석의 최적화

3. 배치 과제들의 직렬 실행을 줄이는 최적화

Page 21: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0021최적화

원리 패턴

03

1. 배치 계획 파싱

정의 : 구성 요소 인터페이스들에 대한 관련 구성 메타자료와 개별 노드들과의 대응 관계 , 그리고 필요한 임의의 연결 정보를 모두 포함하는 하나의 배치 계획 자료구조로 서술

Page 22: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0022최적화

원리 패턴

03

1. 배치 계획 파싱의 문제점

문제점 : 배치 계획 파일의 처리 때문에 성능이 크게 떨어짐

원인 1. 구성요소 인터페이스 개수와 연결개수가 늘어남에 따라 XML 배치 계획 파일이 커짐 -> 메모리에 적재하고 검증시 상당한 입출력 부담 발생

원인 2. XML 문서 형식을 배치 기반구조에서 직접 사용할 수 없음-> I 이 형식으로 변환해야 함

Page 23: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0023최적화

원리 패턴

03

1. 배치 계획 파싱의 최적화

1. XML-IDL 변환 능력을 최적화한다 .

2. 잠복지연 결정적 배치들을 위한 XML 파일 전처리

Page 24: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0024최적화

원리 패턴

03

1. 배치 계획 파싱의 최적화

1. XML-IDL 변환 능력을 최적화한다 .

XSC(XML Schema Compiler) : XML 스키마를 읽고 , DOM XML 프로그래밍 API 에 기초한 C++ 인터페이스 생성

-> 시간과 공간을 많이 소모 – > 문서 전체를 처리해서 트리 기반을 만든후에야 XML-I 이 변환을 할 수 있기때문

Page 25: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0025최적화

원리 패턴

03

1. 배치 계획 파싱의 최적화

1. XML-IDL 변환 능력을 최적화한다 .1) 추상의 비용을 인식하라- 추상을 사용하면 저수준의 코드를 반복 작성할 필요가 없지만 , 잠재적인 비용을 파악하고 , 문서화하고 이해해야 한다 .

2) 용례에 맞는 적절한 추상을 사용하라- Vector 와 list 중에서 list 를 선택- Vector 는 삽입성능이 좋지 않아 XML 파싱 성능이 매우 나쁨

Page 26: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0026최적화

원리 패턴

03

1. 배치 계획 파싱의 최적화

2. 잠복지연 결정적 배치들을 위한 XML 파일 전처리

가능한 비용이 큰 계산을 임계경로 (critical path) 바깥에서 수행한다 .-> 시간상의 이동

Page 27: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0027최적화

원리 패턴

03

2. 계획 분석의 최적화

배치 계획을 구성하는 배치 부분 문제들의 개수와 각 부분 문제에 속하는 구성요소 인스턴스들을 파악

계획 분할 알고리즘 계획에서 배치해야 할 각 인스턴스마다 그것을 담아야 할 부분 계획을

결정하고 , 부분 계획 자료구조에서 그 부분 계획을 가져오거나 필요하다면 새 부분 계획을 생성 . 그리고 나서 필요한 모든 메타자료를 부분 계획에 복사

Page 28: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0028최적화

원리 패턴

03

2. 계획 분석의 최적화

문제점 1. IDL 의 참조 표현

문제점 2. 배치 계획 순차열 안의 메모리 할당

문제점 3. 계획 분석의 비효율적인 병렬화

Page 29: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0029최적화

원리 패턴

03

2. 계획 분석의 최적화

배치 계획 분석의 최적화 원리 패턴들

패턴 1. 이전에 계산된 결과를 이후 용도를 위해 보관하라 .

패턴 2. 가능하면 자료구조를 미리 할당하라 .

패턴 3. 알고리즘을 병렬화의 이득을 취할 수 있도록 설계하라 .

패턴 4. 공유 자료에 대한 접근들을 동기화가 필요하지 않은 형태로 조직화하라 .

Page 30: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0030최적화

원리 패턴

03

3. 배치 과제들의 직렬 실행을 줄이는 최적화

문제점 1. 범용 배치 논리와 특정 배치 논리가 많은 자료를 공유-> 단일한 구성요소의 맥락에서 설치

문제점 2. 개별 응용 프로그램 프로세스들에 설치되는 구성요소들의 집합이 개별적인 배치 부분 과제로 간주되므로 , 그런 집합들이 한 번에 하나씩 순차적으로 처리

Page 31: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0031최적화

원리 패턴

03

3. 배치 과제들의 직렬 실행을 줄이는 최적화

직렬화된 국면 실행을 줄이기 위한 최적화 원리 패턴들

1. 명세들 때문에 설계에 과도한 제약을 가하지 마라

2. 관심사의 분리를 엄격하게 유지하라

3. 그러한 계층 또는 모듈들이 비동기적으로 상호작용하게 한다 .

Page 32: 오픈소스 소프트웨어 성능 최적화 보고서 6장

0032결론04

최적화 교훈

1. 병렬화의 활용은 아주 중요한 최적화 기회이다

2. 가능하면 시간이 많이 걸리는 연산들을 임계 경로 바깥으로 이동하라 .

3. 프로세스들의 직렬 실행은 DRE 시스템의 성능 문제들의 주된 근원이다 .

4. 명확한 구조적 , 기술적 지도력의 부재는 오픈소스 프로젝트에 해가 된다 .

Page 33: 오픈소스 소프트웨어 성능 최적화 보고서 6장

감사합니다