CFS.

Slides:



Advertisements
Similar presentations
CI(Continuous Integration) 이학성. C ontinuous I ntegration? 2 지속적으로 품질관리 를 적용하는 과정 개발자가 기존 코드의 수정 작업 을 시작할 때, 코드 베이스의복사본을 받아서 작업을 시작하면서 코드의 변경.
Advertisements

UNIX 운영 체제의 설계 - Chapter 4. 파일의 내부 표현
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
<<< 시스템등록정보 “하드웨어-장치관리자” 설정 >>>
제14장 동적 메모리.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
최윤정 Java 프로그래밍 클래스 상속 최윤정
연결리스트(linked list).
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
운영체제 4장 요약정리(CPU 스케줄링) 2A 박훈.
자료 구조: Chapter 3 (2)구조체, 포인터
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
Sungkyunkwan University OS Project Dongkun Shin
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
CHAP 12. 리소스와 보안.
Method & library.
자바 5.0 프로그래밍.
8장. 상호 배타적 집합의 처리.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
27강 JAVA Collections - II - Map계열 컬렉션 클래스 살펴보기 - Set계열 컬렉션 클래스 살펴보기
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
자바 5.0 프로그래밍.
ADO.NET (SqlConnection, SqlCommand)
Clipping 이진학.
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
15강. 폼 데이터 값 검증 Validator를 이용한 검증 ValidationUtils 클래스
' Strategic Alliance Partner with '
객체기반 SW설계 팀활동지 4.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
Teaming pms.
( Windows Service Application Debugging )
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
AT MEGA 128 기초와 응용 I 기본적인 구조.
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
3. 모듈 (5장. 모듈).
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
발표자 : 이지연 Programming Systems Lab.
System Security Operating System.
상관계수.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제 4 장 Record.
MIS 플2 회계- 마감후이월(2007).
Installation Guide.
CHAP 15. 데이터 스토리지.
Java의 정석 제 8 장 예외처리 (Exception handling) Java 정석 남궁성 강의
 6장. SQL 쿼리.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
7 생성자 함수.
6 객체.
2. 프로세스 B 안우진 - 운영체제 -.
Presentation transcript:

CFS

What is CFS ? I Have no Idea..

What is CFS ? 프로세서 시간을 제공할 때 밸런스를 유지 Virtual runtime VR이 작을 수록(프로세서에 액세스할 수 있도록 허용된 시간이 작을 수록) 더 많은 프로세서 시간이 필요하다? 대기자 공평성 – 대기한 만큼 보상 RB Tree를 이용. 1. 스스로 밸런스 조절- 모든 경로는 다른 경로보다 두 배 이상 길어지지 않는다. 2. O(log n)

What is CFS ? RB tree VR이 낮은(프로세서에 대한 요구가 높은) 차례대로 트리의 왼쪽에 저장. LMN(Left most node)를 선택 작업 해당 실행 시간을 가상 런터임에 추가하여 CPU 사용 시간을 계산한 다음 실행 가능한 경우 트리로 다시 삽입한다 (?)

What is CFS ? Linux 내의 모든 작업은 task_struct 라는 작업 구조체로 표시. 작업의 현재 상태, 해당 스택, 프로세스 플래그, 우선 순위 등을 포함한다. ./linux/include/linux/sched.h 하지만 여기에는 CFS관련 필드가 없다. sched_entity 라는 새 구조체가 작성

What is CFS ? sched 트리의 루트는 ./kernel/sched.c에 있는 cfs_rq구조체의 rb_root 요소를 통해 참조된다. Red-black 트리의 리프에는 아무 정보도 없지만 내부 노드는 실행 가능한 하나 이상의 작업을 나타낸다. RB 트리의 각 노드는 rb_node로 표시되며 하위 참조와 상위 노드의 색만 포함한다. rb_node는 sched_entity 구조체 내에 포함되며 여기에는 다양한 통계 데이터가 포함되어 있다. sched_entity에는 rb트리의 인덱스로 작동한 시간을 나타내는 vruntime이 포함되어있다. task_struct는 이 sched_entity를 포함하는 구조체이다.

What is CFS ? /kernel/sched.c 에는 yield()가 불리지 않는한 현재 실행 중인 작업을 선취하는 일반 schedule()함수가 있다. 현재 실행 중인 작업(선취된 작업)이 put_prev_task(스케쥴링 클래스를 통해)에 대한 호출을 통해 RB tree로 리턴된다. 스케줄링한 다음 작업을 식별할 때가 되면 schedule 함수가 pick_next_task 함수를 호출한다. 이 함수도 /kernel/sched.c 에 있는 일반 함수이지만 스케줄러 클래스를 통해 CFS 스케줄러를 호출한다. pick_next_task 함수는 /kernel/sched_fair.c(pick_next_task_fair()라고 함) 에 있다. 이 함수는 RB 트리에서 LMN를 선택하여 연관된 sched_entity를 리턴한다. 간단한 task_of() 호출에서 이 참조를 사용하여 리턴된 task_struct 참조를 식별한다. 마지막으로 일반 스케줄러가 이 작업에 프로세서를 제공한다.

What is CFS ? 우선 순위와 CFS 그룹 스케쥴링 지연 인수가 크다는 것은 우선 순위가 낮다는 것이고, 작업에 허용된 실행 시간이 더 빨리 소진된다. 그룹 스케쥴링 2.6.24에서 도입된 개념 스케줄링 공평성을 높일 수 있는 또 다른 방법으로, CFS에서는 모든 작업을 균등하게 처리하는 대신 이 동작을 처리하기 위해 그룹을 사용한다. 작업이 발생하는 서버 프로세스는 계층 구조로 되어 있는 전체 그룹에 대한 가상 런타임을 공유하는 반면 단일 작업은 고유한 독립 가상 런타입을 관리한다. 이 방법에서는 단일 작업이 그룹과 거의 비슷한 스케줄링 시간을 받는다. /proc 인터페이스는 프로세스 계층 구조를 관리하는데 사용된다.

What is CFS ? 스케쥴링 클리스 및 도메인 CFS에서는 스케줄링 클래스라는 개념이 도입 각 작업은 스케줄링 클래스에 속하며, 이 클래스에 따라 작업의 스케줄링 방법이 결정된다. sched_class 를 통해 스케줄러의 동작을 정의하는 공통 함수 세트를 정의한다. 각 스케줄러는 스케줄링한 작업을 추가하고, 실행할 다음 작업을 가져오고, 스케줄러에게 양도하는 등의 작업을 수행할 수 있는 방법을 제공한다. 이런 클래스는 single linked list를 통해 다른 스케줄러와 연결되어있으므로 이 연결을 따라 클래스를 반복할 수 있다. (지정된 프로세서의 비활성화를 활성화 하기 위해)

What is CFS ? enqueue_task 및 dequeue_task 함수는 특정 스케줄링 구조체에 작업을 추가하거나 제거하는 단순한 작업을 수행한다. pick_next_task 함수는 스케줄링 클래스의 특정 정책에 따라 실행할 다음 작업을 선택한다.

What is CFS ? static inline void check_preempt( struct rq *rq, struct task_struct *p ) { rq->curr->sched_class->check_preempt_curr( rq, p ); } 위의 함수는 새 작업을 사용하여 현재 실행 중인 작업을 ./kernel/sched.c 로부터 선취한다. (여기서 curr 은 현재 실행 중인 작업을 정의하고, rq는 CFS에 대한 RB 트리를 나타내며 p는 스케줄링할 다음 작업이다. 이 작업이 공평한 스케줄링 클래스를 사용하고 있다면 check_preemp_curr()이 check_preempt_wakeup()으로 해석된다. sched_rt.c, sched_fair.c, sched_idle.c에서 이러한 관계를 볼 수 있다. 스케줄링 클래스는 스케줄링 도메인의 추가로 그 기능이 확정되었다. 이러한 도메인을 사용하면 로드 밸런싱 및 분리를 위해 하나 이상의 프로세서를 그룹화할 수 있다. ??

What is CFS ? ㅁ