2.1차 중간 보고

                 종합설계 프로젝트 1차 중간보고서 요약

팀명

CLASS

제출일

2014 4 3

프로젝트 제목

Sendfile(2) : Improvement and Analysis

                of Energy Efficiency 

                    over Linux web server

설계프로젝트 개요

프로젝트 수행 내용 및 중간 결과


프로젝트 요약문

 리눅스 커널 상에서 Task가 자원을 사용할 때, User space와 Kernel space 사이에 여러번 copy가 발생한다. 이는 read(), write()함수의 사용 때문으로서, 운영체제 상의 성능 면에서 효율적으로 개선될 여지를 가진다. 따라서 본 프로젝트는 이러한 문제점을 보완하기 위한 방법으로, 리눅스 내부의 커널을 수정하여 기존의 전송 방식보다 빠르게 파일을 전송하는 경로를 제시하고자 한다. 이 때, MIME의 권장 Base64 코드 표준을 기반으로 페이지 전송을 위한 인코딩 과정에서 생성되는 효율성을 비교하고 분석한다. 이는 메일 시스템 상 등에서 다양한 언어와 여러 종류의 첨부파일이 전송될 때 유용하게 활용될 수 있으며, 나아가 전송 상의 시간 효율을 통해 CPU 성능 향상으로서 에너지 절감 효과도 지닌다.

프로젝트는 1차적인 목표로서 리눅스 커널을 수정하여, 리눅스 2.2 버전부터 활용 가능했던 sendfile() 함수의 향상된 버전인 sendfile(2)을 제작하고자 한다. 더 나아가 페이지 할당을 할 때의 문제점을 해결하는 방안을 모색 해보고, 각각의 페이지 수에 따른 개선 방안을 마련한다.

2차적으로, 본 프로젝트는 어플리케이션 형태의 제작이 아닌 시스템 향상에 관한 연구이므로, 이를 가시적으로 성능을 평가해 볼 수 있도록 하기 위한 개발이 추가적으로 이어진다. 여기에 현재까지의 웹 전송 시스템을 고려하여, 8bit 전송 방식의 웹 브라우저가 바이너리 코드로 8bit 단위의 이미지, 영상 등을 바로 전송하는 것과는 달리, SMTP 프로토콜로서 7bit 단위로 전송하는 웹 메일 시스템이 파일 첨부를 텍스트 안에 포함시켜 바이너리 상태로 전송하는 점에서 착안하여 이를 활용한다. 이는 sendfile(2)를 사용한 Base64 기반의 내부 인코딩 방식을 통해 웹 메일 상에 이미지, 영상, 음성 파일 등을 첨부하여 전송할 때와 일반적으로 웹 메일에 첨부파일을 전송하는 경우를 비교함으로써 시간 상의 성능 향상을 분석하는 과정으로 이어진다.


마일스톤 수행 내용

(1) Sendfile(2) 함수 구현

1) Linux-Kernel/include/linux -> syscalls.h
    kernel내부에서 sendfile(2)의 시스템콜 구현을 위한  systemcall 정의부 추가
2) Linux-Kernel/arch/x86/syscalls -> syscall_32.tbl
    sendfile(2) systemcall 호출을 위한 systemcall number를 추가
3) Linux-Kernel/include/linux -> splice.h
    Linux-Kernel/include/uapi/asm-generic -> fcntl.h
    splice.h 과 fcntl.h 의 flag를 추가함으로써 sendfile(2) 함수를 사용이 가능 
    함수 사이마다 sendfile(2)로 분기 할 수 있도록 splice.h 과 fcntl.h의 flag가
    다른 flag들과 연산을 수행
4) Linux-Kernel/fs -> splice.c “__generic_file_splice_read”
    이 지점에서부터 sendfile(2)를 적용시켜서 page 및 파일 안에 있는 내용에 대해
    base64를 구현 & 함수부로서 base64가 이루어지도록 작성

(2) 개선 방안 : Sendfile(2)의 성능 평가 방안 변경 -> 웹 메일 시스템 도입

 제안서 작성 시에 Sendfile(2)의 데이터 간의 로그들을 분석하여 전송되는 시간을 통해 성능을 비교하는 방식을 생각하였으나, 프로젝트로서 수행된 결과를 보다 가시적으로 입증할 수 있는 방안이 요구되었다. 따라서 로그를 분석하여 성능을 비교하지 않고, 웹 메일 전송시 웹 서버 상에서 Sendfile(2)를 구현함으로써 발생하는 효율성을 메일 전송에 걸리는 시간을 비교하여 증명하고자 한다.
웹 메일은 전자우편을 보내고 받는데 사용되는 TCP/IP 프로토콜인 SMTP프로토콜로 이루어진다. SMTP는 7bit길이로 통과가 가능하기 때문에, 8bit로 구성된 음악, 영상 등의 첨부 파일들은 통과하지 못한다는 문제점을 가진다. 이를 해결하기 위해서는 첨부된 파일을 8bit에서 7bit로 바꾸어 전송할 수 있어야 한다. 이는 웹 메일에서도 8bit 첨부파일들을 전송하기 위해 고안된 MIME을 통해 이루어진다. MIME이란 전자우편을 위한 인터넷 표준 포맷으로서 인터넷 메일의 확장규격, ASCII 코드가 아닌 문자 인코딩을 이용해 영어 이외에 다른 언어로 된 전자우편을 보낼 수 있는 방식을 정의한 것이다. MIME에서 권장하는 표준 중 하나가 Base64 인코딩이므로 이를 활용한다.


동영상

KMU CS Capstone Design 2014 CLASS Sendfile(2)

  • Youtube 태그
    • 국민대학교 (Kookmin University)
    • 컴퓨터공학부 (School of Computer Science)
    • 캡스톤디자인 2014 (Capstone Design 2014)
    • Class : 전이나, 김현철, 이고운, 이상현, 조승희
    • 리눅스 커널, Sendfile(), Sendfile(2)


다음 마일스톤 일정

 * 현재 Sendfile(2)의 구현이 대부분 완성되었으므로, 이를 테스트하고 평가하기 위한 과정을 늘려 성능을 평가할 전망이다. 이에 대한 해당 수단으로서 웹 메일 서버를 도입하여 첨부 파일 전송 시의 효율을 테스트할 수 있는 기능을 작성하고자 한다.

 * 이에 따른 일정은, 현재 있는 Sendfile(2)의 안정화를 위하여 4월 2주차 까지 제작을 완료하고, 웹 메일 상에서의 Sendfile(2)를 구현하기 위한 통합 과정을 진행하는 단계로 이루어 진다. 이 과정은 2차 중간보고 시점까지를 목표로 한다. 또한 개발 이후 성능 평가도 본 프로젝트의 연구 요소로서 중요한 핵심 내용이므로 이 과정 또한 개발 마무리 시점과 더불어 진행할 것이다. 더불어 구현 과정 및 매주 화요일에 이루어지는 주차별 팀 미팅의 회의 내용을 기록하여 5월 1주차의 2차 중간보고, 5월 마지막 주의 최종 보고에 활용할 전망이다.

첨부화일 (아래 안내는 첨부 후에 삭제할 것)

1. 동영상 (위 본문 페이지에 삽입)
2. 중간 보고서(PDF)
Ċ
2조 캡스톤,
2014. 4. 3. 오전 5:14