본문 바로가기
Operating System/Linux

[Linux] (LTP - Linux Test Project) 리눅스 커널 (OS) 종합 테스트

by 근육곰돌이 2020. 6. 4.
728x90

[Linux] (LTP - Linux Test Project) 리눅스 커널 종합 테스트

리눅스가 어떻게 안정성을 테스트 할 수 있을까? 장비의 부하, 스트레스, IO, Disk 이런 여러가지를 테스트 하여 어떻게하면 안전하다고 입증을 할 수 있을까 고민을 하던 찰나에 이리저리 누군가는 그래 만들었겠지하며 서드파티를 찾아다녔다.

그러던 중 테스트 프로젝트를 하나 찾아서 소개하고자 한다.

바로 LTP (Linux Test Project)가 있었습니다. 오래전부터 IBM, Cisco, Fujitsu, SUSE, Red Hat 및 기타 업체가 공동으로 개발을 해왔다고 하네요, (좋아 좋아 믿음이 갑니다.)

main : https://linux-test-project.github.io/

git : https://github.com/linux-test-project/ltp

Release Note : https://github.com/linux-test-project/ltp/releases

LTP란? - 시스템 호출을 이용한 테스트

Linux 테스트 프로젝트는 SGI가 시작한 IBM, Cisco, Fujitsu, SUSE, Red Hat 및 기타 업체가 개발 및 유지 관리하는 공동 프로젝트로, 테스트 스위트를 오픈 소스 커뮤니티에 제공하여 안정성, 견고성 및 안정성을 검증합니다. 리눅스의 안정성. LTP 테스트 스위트에는 Linux 커널 및 관련 기능을 테스트하기위한 도구 모음이 포함되어 있는 프로젝트입니다.

LTP 테스트 종류

LTP는 아래와 같은 카테고리로 테스트를 순차적으로 진행합니다. 한 사이클 돌면 약 1500개 정도의 테스트가 진행됩니다.

# 기본 테스트 종류 (runltp)
filesystem stress tests (파일시스템 스트레스 테스트)
disk I/O tests (디스크 I/O 테스트)
memory management stress tests (메모리 관리 스트레스 테스트)
ipc stress (IPC 스트레스 테스트)
scheduler tests (스케줄러 테스트)
commands functional varification tests (명령어 함수 확인 테스트)
system call functional varification tests (시스템 호출 함수 확인 테스트)

# 기타 다른 테스트 스크립트
./IDCheck.sh : 리눅스 ID체크 (root권한 필요)
./runalltest.sh : 모든 테스트 
./networktests.sh : 네트워킹 연결 테스트, 원격 host / passwd도 설정해야 한다.

테스트 전 주의사항

  • 해당 테스트는 실제 사용되고 있는 서버에서는 절대 하시면 안됩니다.!!! 특히 시스템의 IO, growfiles등 기능 동작을 하기때문에 간혹 시스템에 문제를 일으키는 경우도 있습니다. (서버 사용 전 안전한지 확인 테스트로 사용하자)

그러면 이제 설치를 해볼까요

설치 방법

# 1. 프로젝트 빌드에 필요한 툴 설치
yum install autotools-dev automake unzip autoconf gcc

# 2. 프로젝트 Get
wget https://github.com/linux-test-project/ltp/archive/master.zip

# 3. 압축 해지 및 디렉토리 이동
unzip master.zip
cd ltp-master/

# 4. 빌드 및 설치
make autotools
./configure
make
make install

# 5. 설치 확인
cd /opt/ltp
./runltp --help

테스트 실행

# run 
./runltp -p -l result.log -C result.fail -o result.output -t 1h 


# Result Exam
Total Tests: 1502
Total Skipped Tests: 184
Total Failures: 71
Kernel Version: 3.12.0+
Machine Architecture: armv7l
Hostname: doc1

테스트 툴 옵션 정보

# 기본 테스트 실행
./runltp

# 개인 적인 잘쓰는 파라미터
-t [시간지정] : 시간을 지정 - 일시분초 설정 가능 (ex. -t 60s, -t 45m, -t 24h, -t 2d) 
-l [logfile] : 결과 로그를 저장 (ex. -l result.log)
-o [file] : 테스트 시 발생되는 출력, 로그 파일로 저장 (ex. -o result.output)
-C [fail_file]: 실패한 테스트 파일로 저장 (ex. -C result.fail)
-p : ascii 포맷으로 로그파일 생성
-q : 최소한의 정보만 출력


# 나머지 파라미터
-N : 모든 네트워크 테스트 수행
-n : 백그라운드 네트워크 트래픽과 함께 LTP 수행
-a [E-mail] : 입력한 E-mail로 리포트 전송
-d [TMP_DIR] : 임시파일 생성될 디렉터리
-e : 현재 LTP releas의 날짜 출력
-h : 도움말
-v : 테스트 케이스의 유저 리스트를 얻기위해 wget 사용
-s [파티션] : 파티션과 매치되는 테스트 케이스만 수행

위의 테스트로 어느정도 리눅스 장비의 안정성을 테스트할 수 있는 지표가 될 수 있을거 같습니다.
(참고로 저는 하다가 장비가 한번 뻗었다는.. 조심하세요 ㅠ)

반응형