보고서 정보
주관연구기관 |
정보통신연구진흥원 Institute for Information Technology Advancement |
연구책임자 |
박윤용
|
보고서유형 | 최종보고서 |
발행국가 | 대한민국 |
언어 |
한국어
|
발행년월 | 2004-07 |
주관부처 |
정보통신부 |
사업 관리 기관 |
정보통신연구진흥원 Institute for Information Technology Advancement |
등록번호 |
TRKO201100000834 |
DB 구축일자 |
2013-04-18
|
초록
▼
본 연구는 임베디드 시스템을 위한 모니터링 도구를 설계하고 구현하는 것이다. 기본적인 모니터링 구조로는 임베디드 장비, 모니터링 서버 그리고 모니터링 클라이언트로 구성되는 3 계층 모니터링 구조를 설계하고 구현하였다. 모니터링 클라이언트들은 유선 또는 무선 인터넷을 통해 모니터링 서버에 접근하여 임베디드 장비들을 모니터링 할 수 있도록 하였다.
이를 위해, 먼저 임베디드 장비와 모니터링 서버 사이의 데이터 전송을 위하여 NFS(Network File Systems)와 SNMP(Simple Network Management Pr
본 연구는 임베디드 시스템을 위한 모니터링 도구를 설계하고 구현하는 것이다. 기본적인 모니터링 구조로는 임베디드 장비, 모니터링 서버 그리고 모니터링 클라이언트로 구성되는 3 계층 모니터링 구조를 설계하고 구현하였다. 모니터링 클라이언트들은 유선 또는 무선 인터넷을 통해 모니터링 서버에 접근하여 임베디드 장비들을 모니터링 할 수 있도록 하였다.
이를 위해, 먼저 임베디드 장비와 모니터링 서버 사이의 데이터 전송을 위하여 NFS(Network File Systems)와 SNMP(Simple Network Management Protocol)를 사용하는 방법을 설계하고, 구현하여 실험하였다. 주로 대량의 데이터 전송에서는 NFS를 사용하였고, 소량의 데이터 전송에서는 SNMP를 사용하였다. 또한, 임베디드 커널을 모니터링 하기 위해 LTT(Linux Trace Toolkit)를 이용하였다. 본 연구에서는 LTT를 임베디드 커널에 패치(patch)하여 임베디드 커널에서 발생된 다양한 모니터링 정보를 모니터링 서버를 통하여 도시할 수 있도록 설계하였다. 마지막으로, 개발하고자 하는 모니터링 도구를 표준화 된 도구로 구현하기 위해 이클립스 (Eclipse) 기반의 도구로 설계하였다. 본 연구에서는 연구의 결과물이 이클립스 기반의 통합개발 환경에 플러그인(plug-in) 될 수 있도록 설계하였고, 프로토타입을 구현하여 실험하였다.
본 연구의 연구 범위를 요약하면 아래와 같다.
。임베디드 웹 서버 기반의 임베디드 장비 모니터링 구조 연구,
。NFS 기반의 모니터링 정보 저장 구조 연구,
。SNMP 기반의 임베디드 장비 제어 방법 연구,
。LTT를 이용한 임베디드 커널 성능 평가 방법 연구,
。이클립스 기반의 임베디드 장비 모니터링 도구 설계.
가. 임베디드 웹 서버 기반의 임베디드 장비 모니터링 구조 연구
본 연구에서는 임베디드 웹 서버 가반의 모니터링 방법을 설계하고 구현하였다. 실험환경으로는 임베디드 장비로 임베디드 개발 키드인 Letok-850을 사용하였고, Boa 임베디드 웹 서버를 이용하여 임베디드 장비를 제어할 수 있도록 실험 모델을 구현하였다. Java언어로 작성된 임베디드 서버에서 각각의 임베디드 장비의 각종 제어기기들을 제어할 수 있으면 본 연구보고서의 8장에 소스코드와 함께 기술하였다.
나. NFS 기반의 모니터링 정보 저장 구조 연구
NFS는 네트워크상의 여러 컴퓨터들이 여러 파일 시스템을 공유할 수 있게 해준다. 즉, NFS 클라이언트라고 불리는 여러 대의 컴퓨터가 큰 용량의 디스크를 가진 컴퓨터(NFS 서버)로부터 서버의 아키텍처나 운영체제에 관계없이 파일 시스템을 사용할 수 있게 해 주는 것이 NFS의 기본 개념이다. 따라서 NFS 클라이언트들은 NFS의 기능을 사용하여 자신의 로컬 파일 시스템뿐만 아니라 다른 호스트들의 리모트 파일 시스템까지도 마치 자신의 파일 시스템인 것처럼 사용할 수 있게 되는 것이다.
이러한 의 개념은 디스크 NFS 용량이 적거나, 혹은 심지어 디스크가 없는 클라이언트(Diskless Client)들을 등장시키게 되었으며, 또한 이들이 원격지의 디스크의 대용량 파일 시스템을 공유함으로써 아무런 제한 없이 값 싼 시스템을 사용할 수 있도록 하는 파급 효과를 낳기도 했다. 특히, 임베디드 시스템과 같이 디스크가 없고, 자원이 빈약한 환경에서는 NFS는 임베디드 시스템의 파일 시스템으로 활용되어질 수 있다.
NFS를 사용할 경우의 가장 큰 장점은 버그를 발견하고 수정했을 때 타겟의 소프트웨어를 간편하게 갱신할 수 있다는 것이다. NFS로 마운트 된 루트 파일시스템에서 소프트웨어 바이너리를 갱신하는 과정은 바이너리를 직접 전송하는 방식보다 매우 빠르고 간단해 개발 시간을 줄여준다. 또한 타겟 시스템에서 생성된 데이터를 호스트에서 직접 접근할 수 있다는 사실도 무시할 수 없는 장점이다.
다. SNMP 기반의 임베디드 장비 제어 방법 연구
SNMP 소스를 분석하여 MIB를 추가 및 수정할 수 있도록 설계함으로써 구현하고자 하는 모니터링 시스템의 특성에 따라 필요로 하는 모니터링 정보를 수집, 제어 할 수 있도록 하였다. SNMP는 네트워크 장비들로부터 필요한 정보를 가져와 장비 상태를 모니터링하거나 특수한 경우 장비의 관련 설정 값을 변경하는 등의 작업을 하여 네트워크 장비의 전체상황을 관리할 수 있는 프로토콜이다. 이를 임베디드 시스템의 모니터링에 응용하여 정의된 정보만이 아니라 임베디드 장비의 특성에 맞게 정보를 모니터링 하는 데 활용할 수 있다. SNMP의 구성은 관리 시스템(Manager), SNMP 에이전트(Agent), MIB(Management Information Base)로 이루어진다.
SNMP는 UDP상에서 동작하는 비동기식 요청/응답 메시지 프로토콜로서 관리 시스템의 관리자와 관리대상 에이전트 간에는 관리자가 에이전트에게 GetRequest, SetRequest, GetNextRequest등의 PDU를 보내며 에이전트가 이와 연관되는 결과를 GetResponse PDU를 이용하여 관리자에게 전송하는 방식으로 MIB 정보를 수집한다. 또 관리자의 요구 없이 에이전트가 관리자에게 정보 전달을 필요로 하는 경우 에이전트는 트랩을 발생시켜 장애나 오류 등의 필요한 정보를 관리자에게 전달한다. SNMP는 바로 이 둘 사이의 통신을 위해 사용되는 표준화된 프로토콜로서 구현이 쉽고 간편해서 네트워크 관리를 요구하는 대부분의 네트워크 장치에 보편적으로 사용되고 있다.
SNMP는 많은 부분이 확장 가능하도록 구성되어 있는데 이런 유연한 확장성을 이용하면 시스템 정보(예를 들어 CPU, 메모리, 디스크 사용량)를 얻어올 수 있다. SNMP를 확장하기 위해서는 객체를 관리하는 MIB를 수정해야 해야 하는데 MIB를 수정하여 관리 객체를 추가하면 이를 이용하여 필요한 시스템 정보를 얻어올 수 있다. 이와 같이 SNMP 소스에 MIB를 추가하여 모니터링 서버에서 원격으로 임베디드 장비를 제어할 수 있는 원격 쉘(remote shell)을 구현하였다.
라. LTT를 이용한 임베디드 커널 성능 평가 방법 연구
LTT를 이용하여 임베디드 커널을 모니터링 하는 방법을 설계하고자 한다. 리눅스의 주요 시스템 추적 유틸리티는 리눅스 추적 툴킷(LTT, Linux Trace Toolkit)이다. 일반적으로 심볼릭 디버깅은 프로그램의 오류를 찾아내고 수정하는 매우 훌륭한 수단이다. 그러나 다른 응용프로그램이나 커널과 상호작용에 관련된 문제에 있어서는 심볼릭 디버깅도 그리 큰 위력을 발휘하지 못한다.
이러한 상호작용에서의 문제가 발생할 경우에는 응용 프로그램과 다른 소프트웨어 컴포넌트와의 상호작용을 추적(tracing)함으로써 문제를 해결해야 한다. 또한 이러한 추적을 호스트뿐만 아니라 임베디드 장비에도 적용함으로써 임베디드 리눅스 커널의 성능 및 프로세스 정보를 가져온다. LTT는 직접 커널을 패치하여 주요 커널 서브시스템의 작동을 중개하는 방식을 사용한다. 이 과정에서 생성된 데이터는 추적 서브시스템(trace subsystem)이 취합한 후, 추적 데몬(trace daemon) 으로 보내져서 디스크에 기록된다. 이런 전 과정은 시스템의 작동이나 성능에 악영향을 주지 않도록 설계되었다. LTT는 응용 프로그램의 실행 시간, 커널 프리미티브의 실행 시간 및 인터럽트 처리 시간 등의 모니터링 정보를 제공하고, 이를 이용하여 커널 내의 병목구간(bottleneck) 분석을 할 수 있다. 이와 같은 LTT에서 제공되는 정보를 이용하여 임베디드 커널의 튜닝에 사용할 수 있다.
LTT에서 제공하는 사용자 유틸리티는 시스템 추적 중에 수집한 데이터를 이용하여 시스템의 작동을 재구성하는 기능뿐만 아니라 추적 기간 중 시스템 성능에 대한 데이터는 추출할 수 있는 기능도 제공한다. 다음은 LTT를 이용할 수 있는 작업에 대한 개요다.
。프로세스 간 동기화 문제에 대한 디버깅
。테스트할 응용 프로그램과 시스템의 다른 응용 프로그램, 커널과 상호작용의 이해
。커널이 응용 프로그램의 요청을 서비스하는데 걸린 시간 측정
。프로세스 간 우선순위로 인해 응용 프로그램이 대기하는데 소비한 시간 측정
。인터럽트로 인한 작업 결과가 시스템 전체에 반영되기까지 시간 측정
。외부 입력에 대한 시스템 반응의 정확한 이해
LTT의 기능은 소프트웨어 컴포넌트 네 개로 나뉘었다.
。추적하는 이벤트에 대한 데이터를 생성하는 커널 중개자
。커널 중개자에 의해 생성된 데이터를 단일 버퍼로 수집하는 서브시스템
。추적 서브시스템의 버퍼를 디스크에 기록하는 추적 데몬
。시스템의 추적 데이터를 처리하여 사용자가 알아볼 수 있는 형태로 출력해주는 시각화(visualization) 툴
소프트웨어 컴포넌트 중 처음 두 개는 커널 패치로 구현되어 있고, 나머지 두 개는 별도 사용자 툴로 존재한다. 실제 사용할 때는 처음 소프트웨어 컴포넌트 세개를 타겟에서 수행해야 하는 반면, 마지막 시각화 도구 작업은 호스트에서 수행해도 무방하다. Linux Trace Toolkit(LTT)을 이용해서 추출한 결과물인 프로파일링 데이터를 분석 할 수 있는 방법은 LTT 자체에서 GTK+ library 에 기반을 가지고 제공하고 있는 Trace Visualizer라는 프로그램이 있는데 이를 이용하여 분석을 한다.
마. 이클립스 기반의 임베디드 장비 모니터링 도구 설계
이클립스 기반의 모니터링 도구를 위한 설계를 제안한다. 이클립스는 오픈 소스이고 자바 기반의 확장 가능한 개발 플랫폼이다. 최근 통합 개발 환경으로 이클립스가 많은 사람들의 관심을 받고 있고 실제 많은 사람들이 참여하여 보다 더 좋은 통합 개발 환경을 구현하고자 노력하고 있다. 본 연구에서는 이클립스에 플러그인이라는 기능을 이용하여 본 연구에서 개발한 모니터링 도구들을 기존의 이클립스에 추가하여 보다 더 다양한 IDE 개발 환경을 제공하고자 한다. 이와 같이 이클립스는 동일한 IDE 플랫폼 위에서 IDE를 개발하여 소모적인 중복 개발을 막고, IDE 개발자들이 IDE 개발 자체에만 몰두 할 수 있도록 만든 프로젝트이다. 이클립스 프로젝트는 플랫폼, JDT, PDE로 구성된다.
JDT(Java Development Tools)는 이클립스를 이용한 자바 개발 환경 프로젝트이다. 이클립스는 이미 CDT를 통해 C/C++가 지원되고 있고 많은 다른 언어들도 논의되고 있다. PDE(plug-in development environment)는 이클립스 성능과 기능성을 무한히 만들어줄 프로젝트이다. 이클립스에 플러그 인 개발 환경 프로젝트로서 이클립스를 위한 플러그인을 쉽게 개발할 수 있는 환경을 지원한다. JDT나 PDT(플러그 인 개발툴)도 단순히 플러그인에 불과하다. PDE가 실제 이클립스에 기능성을 부여하는 부분이 된다. 이클립스는 IDE로서의 가치뿐만 아니라, IDE의 미래라는 점에서 중요한 의미를 가지고 있다. 이클립스는 IBM, Borland등의 툴 개발회사들이 자신들의 기간의 노하우를 바탕으로 제작한 IDE 개발을 위한 API로 IBM은 이미 이클립스를 기반으로 IDE를 제작하고 있다. 이처럼 이클립스는 IDE의 새로운 미래를 열고 있다. 이러한 이클립스의 특징은 여러 가지가 있는데 소스 포맷 기능으로 간단한 소스로 변환이 가능하고 자동 생성되는 자바독 주석을 적용한 편리한 기능, 에디터와 연동된 편리한 디버깅 환경 제공, 별도의 컴파일 없이 수정 후 바로 디버깅에 적용되는 핫스왑 기능 등 여러 가지가 있다. 또 다른 많은 특징들이 있지만 이런 특징들 중에서 플러그인은 자바 애플리케이션, XML파일로 이루어져 있는 압축파일을 적용시켜 새로운 개발 환경을 플러그 인하는 PDT가 가장 핵심적인 특징이라 할 수 있다.
현재 본 과제에서 개발된 모니터링 도구들을 이클립스에 플러그 인하기 위해 필요한 구조를 설계하고 있고, 기본적인 기능을 위한 프로토타입을 구현하고 있다. 향후 이클립스에 LTT나 SNMP등 모니터링 도구를 플러그 인하여 이클립스 통합 개발 환경에 모니터링 도구를 추가하여 많은 사람들에게 이클립스가 더욱 다양한 개발 환경으로 사용되는데 연구의 중점을 두고자 한다.
Abstract
▼
This study is to implement and design monitoring system for embedded system. Particularly, it is studied the architecture which can be efficiently transferred monitoring and controlling data collected between embedded equipment and monitoring server. For this, after designing various architectures,
This study is to implement and design monitoring system for embedded system. Particularly, it is studied the architecture which can be efficiently transferred monitoring and controlling data collected between embedded equipment and monitoring server. For this, after designing various architectures, it is implemented prototype. The experimental environment is basically to use embedded development kit based on Power-PC, and embedded development kit is just to be an embedded equipment.
The basic monitoring architecture presents a three-layered monitoring system for system users composed of embedded equipments, servers for the monitoring, clients which are the subjects of the monitoring. The monitoring clients are able to access to the monitoring server through wire or wireless internet and to monitor embedded equipment. For this, the methods using embedded web-server are conducted and implemented.
For delivering data between embedded equipment and monitoring server, this study is designed, implemented and tested in methods using the NFS(Network File System) and the SNMP(Simple Network Management Protocol). It is mainly used the NFS in case of enormous data transmission, whereas the SNMP in case of small volume. Also, the MIB(Management Information Base) is added through analysis the SNMP sources, the remote shell which can be remotely controling embedded equipment from monitoring server is implemented.
Besides, the LTT(Linux Trace Toolkit) is used for monitoring embedded kernel. The LTT provides monitoring informations such as execute time of application program and kernel primitive, interrupt process time, etc.. and it makes an analysis of bottlenecks in kernel. Using these informations provided by the LTT, embedded kernel is available to be tuned. For this study, The LTT is patched in embedded kernel, and it is designed to illustrate various monitoring informations issued by embedded kernel through monitoring server.
Finally, tool based on the Eclipse is designed to implement monitoring development tool as a standard tool. The Eclipse is open-source, the development platform extending a basis of Java language. At this study, designing that output is to be plug-in to IDE(Integrated Development Environment) based on the Eclipse, implementing prototypes and testing them.
목차 Contents
- 요약문 ... 1
- SUMMARY ... 11
- 목차 ... 16
- Contents ... 20
- 표목차 ... 24
- 그림목차 ... 25
- 제1장 서 론 ... 27
- 제1절 임베디드 시스템 ... 27
- 제2절 모니터링의 정의 ... 28
- 1. 사전 모니터링 ... 29
- 2. 사후 모니터링 ... 29
- 3. 모니터링 시스템의 구현 시 고려할 사항 ... 30
- 제3절 임베디드 모니터링 시스템 구현의 문제점 ... 33
- 제2장 모니터링 도구 사례조사 ... 36
- 제1절 분산 시스템에서의 모니터링 도구 ... 36
- 1. TMT ... 36
- 2. SyMON ... 44
- 3. LTMOS ... 51
- 4. Falcon ... 56
- 5. Tornado ... 63
- 6. HOLMES ... 66
- 제2절 임베디드 모니터링 도구 ... 73
- 1. MRTG ... 73
- 2. NTOP ... 74
- 3. tcpdump ... 75
- 4. Ethereal ... 75
- 5. UniMon ... 75
- 6. NNStat ... 76
- 7. eWatch ... 76
- 8. 스니퍼 ... 76
- 9. 프로그램 비교 ... 77
- 제3절 모니터링의 종류 ... 77
- 1. 호스트 모니터링 ... 78
- 2. 네트워크 모니터링 ... 79
- 3. 서비스 모니터링 ... 80
- 4. 내부 모니터링 대 외부 모니터링 ... 81
- 제4절 모니터링 애플리케이션 ... 82
- 1. Micromuse Netcool ... 82
- 2. NetSaint ... 85
- 3. Big Brother ... 87
- 제3장 임베디드 모니터링 시스템의 고려사항 ... 89
- 제1절 임베디드 실시간 시스템의 모니터링 ... 89
- 1. 모니터링 접근방법 ... 91
- 2. 임베디드 실시간 모니터링의 문제점과 해결책 ... 95
- 3. 모니터링을 지원하는 디버깅 접근방법 ... 97
- 4. 모니터링을 지원하는 디버깅에서의 문제점들 ... 99
- 제2절 모니터링 모델의 고려사항 ... 101
- 1. 모니터링 정보의 생성 ... 103
- 2. 모니터링 정보의 처리 ... 106
- 3. 모니터링 정보의 보급과 표시 ... 112
- 제3절 모니터링 접근 방법 ... 116
- 1. 소프트웨어 모니터링 접근 ... 116
- 2. 하드웨어 모니터링 접근 ... 119
- 3. 혼합 모니터링 접근 ... 121
- 제4장 NFS 기반의 모니터링 정보 저장 구조 연구 ... 124
- 제1절 3계층구조의 임베디드 모니터링 시스템 ... 124
- 1. NFS 기반의 모니터링 시스템 모델 ... 125
- 2. 스레드를 사용한 프로그램 ... 126
- 제5장 SNMP 기반의 임베디드 장비 제어 방법 연구 ... 129
- 제1절 SNMP ... 129
- 1. SNMP 개요 ... 129
- 2. SNMP 구성 및 동작 ... 130
- 3. PDU 구성 ... 133
- 4. MIB ... 134
- 5. Variable Binding ... 135
- 제2절 SNMP를 이용한 임베디드 장비 모니터링 설계 ... 136
- 1. SNMP 설치 ... 136
- 2. MIB 수정 ... 136
- 3. 예제 ( SNMP설치 및 MIB 추가 ) ... 136
- 4. 소스 (exam.c, exam.h) ... 140
- 제6장 LTT를 이용한 임베디드 커널 성능 평가 방법 연구 ... 145
- 제1절 임베디드 커널의 모니터링 방법 설계 ... 145
- 1. LTT의 목적 ... 145
- 2. LTT의 기능 ... 146
- 제2절 LTT(Linux Trace Toolkit)의 설치 ... 148
- 1. 설치 준비 ... 148
- 2. 커널 패치 ... 149
- 3. 커널 컴파일 ... 149
- 4. LTT 패키지 컴파일 및 인스톨 ... 150
- 5. 수동으로 LTT를 커널에 패치하기 ... 151
- 제3절 추적(tracing)및 결과보기 ... 152
- 1. 추적(tracing)하기 ... 152
- 2. 결과보기 ... 153
- 제4절 성능분석 ... 156
- 1. 시스템 프로파일링 ... 156
- 2. 커널 프로파일링 ... 160
- 제5절 자바 환경에서의 LTT ... 161
- 제7장 이클립스 기반의 임베디드 장비 모니터링 도구 설계 ... 166
- 제1절 기술 개요 ... 166
- 1. 이클립스의 개요 ... 166
- 2. 이클립스의 특징 ... 167
- 3. 이클립스의 장점 ... 167
- 4. 이클립스의 응용분야 ... 169
- 제2절 이클립스의 구조 ... 171
- 1. 플랫폼 ... 171
- 2. JDT(Java Development Tools) ... 175
- 3. PDE(Plug-in Development Environment) ... 175
- 제3절 이클립스 기반의 모니터링 도구 설계 ... 175
- 제4절 향후 연구 계획 ... 177
- 제5절 이클립스 응용분야의 활용 예 ... 178
- 1. 타임시스 ... 178
- 2. 몬타비스타 ... 181
- 3. QNX의 Momentics ... 183
- 제8장 웹 서버 기반의 임베디드 장비 모니터링 ... 185
- 제1절 SNMP를 이용한 망 관리 설계 ... 185
- 1. 에이전트(Agent)의 구성 ... 185
- 2. 구현환경 ... 187
- 3. SNMP 에이전트(Agent) ... 187
- 제2절 SNMP를이용한 모니터링관리자의구성 ... 192
- 1. JAVA ... 192
- 2. 모니터링 관리자의 구성 ... 194
- 제9장 결 론 ... 199
- 참고문헌 ... 200
- 부 록 ... 201
- 1. SNMP 에이전트의 동작 ... 201
- 2. Letok-850 모니터링 관리자 구현 ... 221
※ AI-Helper는 부적절한 답변을 할 수 있습니다.