Real-Time Computing and Communications Lab., Hanyang University Real-Time Computing and Communications Lab., Hanyang University.

Slides:



Advertisements
Similar presentations
1 Always want to have CPU (or CPU’s) working Usually many processes in ready queue –Ready to run on CPU –Focus on a single CPU here Need strategies for.
Advertisements

Chapter 1.2 Operating Systems. Layered Operating System model Hardware Operating System Application.
Completely Fair Scheduler Alireza Heidari. Introduction The Completely Fair Scheduler (CFS) is a process scheduler. Merged into the release of.
1 Traditional Unix Scheduling “Traditional” means –No consideration on realtime processes. –Typically 4.3BSD and SVR3 MFQ-based –Preemptive (time quantum.
Processes CSCI 444/544 Operating Systems Fall 2008.
Linux+ Guide to Linux Certification, Second Edition
Structure of Processes
CSSE Operating Systems
1 Process Description and Control Chapter 3 = Why process? = What is a process? = How to represent processes? = How to control processes?
Introduction to Embedded Systems Traditional OS Processes and Scheduling Lecture 15hb.
The Linux “Completely Fair Scheduler”
프로그래밍 기초와 실습 Chapter 7 Enumeration Types and typedef.
Term Project Detail Design 2 Traffic Generator So Jung LEE Dpnm Lab. CSE POSTECH
SAP Tuning 실무 교육
Real-Time Computing and Communications Lab., Hanyang University Real-Time Computing and Communications Lab., Hanyang University.
Linux Scheduling CS Scheduling Policy ► The scheduling algorithm of traditional Unix systems must fulfill several conflicting objectives  Fast.
ISLab Flash Team Flash File System Ban,A US Patent 5,404,485 한국외국어대학교 컴퓨터및정보통신공학과 박 성 환.
Design, Implementation, and Evaluation of the Java Context Awareness Framework(JCAF) US lab.
Module 01: Dynamic Host Configuration Protocol (DHCP)
Processes and Threads CS550 Operating Systems. Processes and Threads These exist only at execution time They have fast state changes -> in memory and.
Load Balance in Linux Load balancing Sung-joon Choi Real-Time Operating Systems Lab. Seoul National University
Process Control. Module 11 Process Control ♦ Introduction ► A process is a running occurrence of a program, including all variables and other conditions.
REVIEW OF COMMONLY USED DATA STRUCTURES IN OS. NEEDS FOR EFFICIENT DATA STRUCTURE Storage complexity & Computation complexity matter Consider the problem.
Managing processes and services. 1. How Linux handles processes 2. Managing running processes 3. Scheduling processes.
The kernel considers each program running on your system to be a process A process lives as it executes, with a lifetime that may be short or long A process.
1 Relational Database Implementation of a Multi- dimensional database 컴퓨터언어연구실 석사 3 학기 김혜진 U.S. Patent Number: 5,926,818 Date of Patent: Jul.20,1999 inventor:
리눅스 : Lecture 2 운영체제 및 UNIX 요약 중앙대학교 컴퓨터공학부 손 봉 수 교수.
1 Chapter 4 Processes R. C. Chang. 2 Linux Processes n Each process is represented by a task_struct data structure (task and process are terms that Linux.
LINUX SCHEDULING Evolution in the 2.6 Kernel Kevin Lambert Maulik Mistry Cesar Davila Jeremy Taylor.
프로그래밍 기초와 실습 Chapter 6 The Fundamental Data Types.
Processes Dr. Yingwu Zhu. Process Concept Process – a program in execution – What is not a process? -- program on a disk - a process is an active object,
1 Router 동작 mode (1/2) User Mode Router 동작 상태, Interface 의 상태, 현황등을 check 할 수 있는 command 사용 가능 Router Configuration 의 변경은 불가 Privileged Mode Router 의 Full.
Real-Time Computing and Communications Lab., Hanyang University Real-Time Computing and Communications Lab., Hanyang University.
Kernel Programming Task Management ( 월 ) 이 병 희
Periodic scheduler for Linux OS
영상 획득 영상 저장 카메라 파라메터 커스텀 이미지
Real-Time Computing and Communications Lab., Hanyang University Real-Time Computing and Communications Lab., Hanyang University.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 실 습실 습 7 WEEK 1 – 구조체 (STRUCTURES)
Process Description and Control Chapter 3. Source Modified slides from Missouri U. of Science and Tech.
MP2: RATE-MONOTONIC CPU SCHEDULING Based on slides by Gourav Khaneja, Raoul Rivas and Keun Yim University of Illinois at Urbana-Champaign Department of.
Real-Time Computing and Communications Lab., Hanyang University Real-Time Computing and Communications Lab., Hanyang University.
CS 390 Unix Programming Environment
Multipurpose ITS Implementation Document 김계현 IM Lab.
2 장 프로세스 제 03 강 : 프로세스. Multi-user System OS boot 탐색기 hwp OS kernel a.out game.
Go by Example Closures ~ Errors , Sam Jo.
Project 1 ELF, Program loading. elf.c Parameter – Char *exeFileData : executable file 을 read 한 버퍼 – struct elfHeader : GeekOS 의 ELF Header 구조체 – Struct.
MP2: Rate-Monotonic CPU Scheduling
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 실 습실 습 6-2 WEEK 2 - FUNCTIONS THAT RETURN A VALUE.
ISLab Flash Team Ch 3. Kernel-Mode I/O Processing.
Term Project Detail Design Traffic Generator So Jung LEE Dpnm Lab. CSE POSTECH
Linux Process Management. Linux Implementation of Threads Threads enable concurrent programming / true parallelism Linux implementation of threads.
CSC414 “Introduction to UNIX/ Linux” Lecture 3
6.5 프로세스 주소공간의 취급 – 여러 시스템 콜이 프로세스의 주소공간을 조작 즉, 프로세스의 주소공간을 구성하는 region 을 조작 –Region table 의 내용 region 에 수록된 내용을 저장한 file 의 inode region type(test,shared,memory,private.
Mobile Harbor Project 김효영. Contents  About CSD Lab  What is Mobile Harbor?  About the Project.
Process Scheduling 國立中正大學 資訊工程研究所 羅習五 老師 1. Outline OS schedulers Unix scheduling Linux scheduling Linux 2.4 scheduler Linux 2.6 scheduler – O(1) scheduler.
Scheduling of Non-Real-Time Tasks in Linux (SCHED_NORMAL/SCHED_OTHER)
Process Management Process Concept Why only the global variables?
Linux 202 Training Module Program and Process.
Process Scheduling 國立中正大學 資訊工程研究所 羅習五 老師.
Chapter 3: Processes Source & Copyright: Operating System Concepts, Silberschatz, Galvin and Gagne.
The Linux “Completely Fair Scheduler”
Structure of Processes
Process Control B.Ramamurthy 2/22/2019 B.Ramamurthy.
Midterm Review Brian Kocoloski
Chapter 3: Processes.
Unix Process Control B.Ramamurthy 4/11/2019 B.Ramamurthy.
Processes – Part I.
Lab 6: Process Management
Lecture 6 Introduction to Process Management
Presentation transcript:

Real-Time Computing and Communications Lab., Hanyang University Real-Time Computing and Communications Lab., Hanyang University Operating System 6 주차 - Completely Fair Scheduler (1) - Real-Time Computing and Communications Lab. Hanyang University

2 Real-Time Computing and Communications Lab., Hanyang University 2 Real-Time Computing and Communications Lab., Hanyang University Contents  Linux Scheduler  CFS (Completely Fair Scheduler)  CFS Parameters  CFS Source code (1)  Kernel Functions  Foreground & Background  “top” command  과제 4 preview

3 Real-Time Computing and Communications Lab., Hanyang University 3 Real-Time Computing and Communications Lab., Hanyang University Linux Scheduler

4 Real-Time Computing and Communications Lab., Hanyang University 4 Real-Time Computing and Communications Lab., Hanyang University Linux Scheduler  Linux Scheduler 는 Scheduler class 라는 이름으로 모듈 화 되어 있다.  각각의 Scheduler class 는 우선순위를 가지고 있다.  Task 는 아래의 Scheduler class 중 1 개에 속해서, 해당 알 고리즘에 맞게 동작한다.

5 Real-Time Computing and Communications Lab., Hanyang University 5 Real-Time Computing and Communications Lab., Hanyang University CFS (Completely Fair Scheduler)  CFS (Completely Fair Scheduler)  Linux kernel version 이후로 기본 스케줄러로 사용되고 있 는 스케줄러  일반적인 여러 task 들에 대해 공정하게 CPU time 을 할당하기 위 해 도입  Basic concept 각각의 task 들이 가지는 weight 에 비례하여 CPU time 을 할당

6 Real-Time Computing and Communications Lab., Hanyang University 6 Real-Time Computing and Communications Lab., Hanyang University CFS Parameters  CPU’s Run queue  Linux 에서 각각의 CPU 는 자신의 run queue 를 가진다.  Real-time task 들은 array 로 저장하고 일반적인 task 에 대해서는 Red-black tree 구조를 통해 task 를 저장  /kernel/sched/sched.h -> cfs_rq

7 Real-Time Computing and Communications Lab., Hanyang University 7 Real-Time Computing and Communications Lab., Hanyang University CFS Parameters  Schedulable Entity  각각의 프로세스들은 자신의 task_struct 에 sched_entity 를 가짐  Task 의 weight 과 같은 linux scheduling 에 필요한 정보를 가지고 있음  /include/linux/sched.h

8 Real-Time Computing and Communications Lab., Hanyang University 8 Real-Time Computing and Communications Lab., Hanyang University CFS Parameters  Task Priority  각각의 task 는 priority 에 따라서 CPU 를 할당  Priority 값이 작을수록 우선순위가 높다는 것을 의미  Non-real-time priority 의 경우 100 ~ 139 의 값을 가짐 (Nice value : -20 ~ 19, default is 0)  Real-time priority 의 경우 0 ~ 99 의 값을 가짐

9 Real-Time Computing and Communications Lab., Hanyang University 9 Real-Time Computing and Communications Lab., Hanyang University CFS Parameters  Nice value  Nice value 란 모든 Unix system 에서 사용되는 표준 Priority.  Linux 의 경우 각각의 task 에 대한 time slice 를 nice value 값을 이 용해 할당.  kernel/sched/sched.h 에 각 nice value 값에 따른 task weight 값 이 정의되어 있음.  Default : 0 (Weight = 1024)

10 Real-Time Computing and Communications Lab., Hanyang University 10 Real-Time Computing and Communications Lab., Hanyang University CFS Parameters  Timeslice  Task 가 preemption 되기 전 CPU 를 통해 수행된 시간  Timeslice 는 각 task 의 weight 에 따라서 proportional 하게 할당 됨

11 Real-Time Computing and Communications Lab., Hanyang University 11 Real-Time Computing and Communications Lab., Hanyang University CFS Parameters  Virtual Runtime (vruntime)  “ideal multitasking” 을 수행하기 위해 제안됨  Nice value = 0 에 해당하는 weight 값과 자신의 weight 값의 상대 적인 비율에 따른 가상의 시간 (=vruntime) 을 계산함.  Scheduler 는 vruntime 이 가장 작은 task 를 선택함. Red-black tree leftmost node

12 Real-Time Computing and Communications Lab., Hanyang University 12 Real-Time Computing and Communications Lab., Hanyang University Quiz  1. 프로세서가 100ms 동안 실행 한다고 가정하고 같은 nice 값을 가지는 task 가 2 개 (A, B) 존재한다면, 각각의 task 가 가지는 timeslice 는 어떻게 되는가 ? 만약 4 개 라면 ?  2. 프로세서가 100ms 동안 실행하고, nice 0 과 nice5 를 가지는 2 개의 task 가 실행된다. 각각의 task 가 가지는 timeslice 는 어떻게 되겠는가 ?  3. 프로세서가 100ms 동안 실행하고, 같은 nice 값을 갖는 task 가 2 개 있다. 스 케줄러는 20ms 주기로 context switching 을 한다고 가정하자. 60ms 의 시간 이 지났을 때, 각각의 task 가 실제 실행된 시간은 ?  4. 3 의 상황에서 만약 weight 가 3:1 인 task 가 2 개라면 ? 그리고 이때 virtual runtime 의 개념 을 CFS 는 어떻게 사용하는가 ?  5. task 의 nice value 가 작아질 수록 virtual runtime 은 어떻게 되겠는가 ? 그 리고 이때, 어떤 효과가 예상되는가 ?

13 Real-Time Computing and Communications Lab., Hanyang University 13 Real-Time Computing and Communications Lab., Hanyang University Overview of Scheduling Flow  Timer interrupt 에 의해 CFS 의 scheduling tick 이 동작  각각의 scheduling tick 에 대해  1. 현재 running task 에 대해 virtual runtime 을 update  2. Virtual runtime 과 time slice 를 구한 뒤 (virtual runtime) ≥ (time slice) 를 만족하면, TIF_NEED_RESCHED flag 를 set  3. TIF_NEED_RESCHED 를 check Set 상태이면, run queue 에서 가장 작은 virtual runtime 값을 갖는 task 를 scheduling 함 Red-black tree 에 현재 running task 를 Enqueue Red-black tree 에서 left-most node 를 Dequeue

14 Real-Time Computing and Communications Lab., Hanyang University 14 Real-Time Computing and Communications Lab., Hanyang University CFS Source code scheduler_tick task_tick -> task_tick_fair entity_tick update_curr calc_delta_fair check_preempt_tick sched_slice resched_task set_tsk_need_resched cfs_rq->nr_running > 1 = true? vruntime > time slice YES NO YES NO

15 Real-Time Computing and Communications Lab., Hanyang University 15 Real-Time Computing and Communications Lab., Hanyang University CFS Source code  scheduler_tick  Timer interrupt 에 의해서 실행  현재 running task 에 대한 정보를 받아 task tick(= task_tick_fair) 을 실행

16 Real-Time Computing and Communications Lab., Hanyang University 16 Real-Time Computing and Communications Lab., Hanyang University CFS Source code  task_tick_fair  CFS task 들에 대해 scheduling tick 을 수행  현재 task 의 sched_entity 를 받아 entity_tick 호출

17 Real-Time Computing and Communications Lab., Hanyang University 17 Real-Time Computing and Communications Lab., Hanyang University CFS Source code  entity_tick  CFS 의 schedulable entity 의 정보를 update  update_curr 를 호출하여 virtual runtime 을 update  check_preempt_tick 를 호출하여 TIF_NEED_RESCHED 의 조건 을 검사

18 Real-Time Computing and Communications Lab., Hanyang University 18 Real-Time Computing and Communications Lab., Hanyang University CFS Source code  update_curr  프로세스의 vruntime 값을 갱신

19 Real-Time Computing and Communications Lab., Hanyang University 19 Real-Time Computing and Communications Lab., Hanyang University CFS Source code  calc_delta_fair  실제 time slice 값에 대하여 task 의 weight 비율에 따른 vruntime 을 계산  __calc_delta 를 호출하여 vruntime 계산

20 Real-Time Computing and Communications Lab., Hanyang University 20 Real-Time Computing and Communications Lab., Hanyang University CFS Source code  check_preempt_tick  CFS 의 entity_tick 에 의해서 호출됨  ideal runtime 을 구하기 위해 time slice 를 구하는 sched_slice 함 수 호출  (virtual runtime) > time slice 이면, resched_task 호출

21 Real-Time Computing and Communications Lab., Hanyang University 21 Real-Time Computing and Communications Lab., Hanyang University CFS Source code  sched_slice  해당 task 에 대해 time slice 값을 반환  struct load_weight *load 는 cfs_rq 전체의 weight 를 뜻함.  se->load.weight 은 현재 task 의 weight 을 뜻함.

22 Real-Time Computing and Communications Lab., Hanyang University 22 Real-Time Computing and Communications Lab., Hanyang University CFS Source code  resched_task  해당 task 가 rescheduling 되어야 함을 mark 하는 함수  set_tsk_need_resched 를 호출하여 TIF_NEED_RESCHED 를 set 시킴

23 Real-Time Computing and Communications Lab., Hanyang University 23 Real-Time Computing and Communications Lab., Hanyang University Kernel Functions  access_ok  사용자 영역의 포인터를 검증하는데 사용되는 커널 함수  Def : int access_ok (type, address, size)  Parameters Type : 접근 유형 (VERIFY_READ, VERIFY_WRITE) Address : 사용자 영역의 메모리 블록을 가리키는 포인터 Size : 블록 크기 Return : 성공일 때 0 을 반환  linux/include/asm/uaccess.h 에 정의되어 있음

24 Real-Time Computing and Communications Lab., Hanyang University 24 Real-Time Computing and Communications Lab., Hanyang University Kernel Functions  copy_to_user, copy_from_user  커널과 유저 영역 사이에서 Data 를 복사  Def unsigned long copy_to_user(*to_user, *from_kernel, data_size) unsigned long copy_from_user(*to_kernel, *from_user, data_size)  Parameters *to_user, *from_user : 사용자 영역의 Data pointer *to_kernel, *from_kernel : 커널 영역의 Data pointer Data_size : Data 의 크기

25 Real-Time Computing and Communications Lab., Hanyang University 25 Real-Time Computing and Communications Lab., Hanyang University Kernel Functions  Example (Kernel code)  User 로부터 integer 변수를 받아 커널에서 factorial 계산

26 Real-Time Computing and Communications Lab., Hanyang University 26 Real-Time Computing and Communications Lab., Hanyang University Kernel Functions  Example (Kernel code) SYSCALL_DEFINE 사용 helloworld.c file 에 다음과 같이 추 가해 보았습니다. 비슷한 목적을 가진 시스템 콜에 대해서 1 개의 파일에 여러 개의 시스템 콜을 구현할 때 사용할 수 있습니다. 상단에 추가적으로 맵핑을 위해 linux/syscalls.h 를 추가해줍니다.

27 Real-Time Computing and Communications Lab., Hanyang University 27 Real-Time Computing and Communications Lab., Hanyang University Kernel Functions  Example (User code)  getfactorial 시스템 콜을 호출해 factorial 계산

28 Real-Time Computing and Communications Lab., Hanyang University 28 Real-Time Computing and Communications Lab., Hanyang University Foreground & Background ( 중복 )  프로세스를 실행하는 방법은 크게 2 가지가 있다.  Foreground  기본적으로 모든 프로세스는 foreground 로 실행된다.  키보드와 연결되어 있으며 결과를 직접적으로 스크린 혹은 터미널 창에 출 력한다.  꽤 긴 시간 동안 동작하는 프로그램을 실행시켰을 경우에는 그 시간 동안 터미널을 이용할 수 없게 되므로, 곤란한 경우가 생기게 된다.  Background  키보드와 연결되지 않은 상태로 실행된다.  만약 이 프로세스가 키보드 입력을 필요로 할 경우에는, 입력을 기다린다.  Background 로 프로세스를 실행하는 것의 장점은 한 프로세스가 동작하 고 있는 동안에도 다른 프로세스를 실행시킬 수 있다는 점이다.  $./a.out & 를 통해 백그라운드로 실행할 수 있다.

29 Real-Time Computing and Communications Lab., Hanyang University 29 Real-Time Computing and Communications Lab., Hanyang University Foreground & Background ( 중복 )  Example> matrix source code  단순하게 100 x 100 행렬을 10^5 제곱하는 함수.  참고로 아래 프로그램은 input_matrix 의 초기화가 생략되어 있습니다.

30 Real-Time Computing and Communications Lab., Hanyang University 30 Real-Time Computing and Communications Lab., Hanyang University Foreground & Background ( 중복 )  Example> Foreground & Background  Foreground 실행 -> 프로세스가 종료할 때 까지 다른 작업 못함.  Background 실행 -> 다른 작업 가능  “ctrl + z” 프로세스 중지 -> foreground 프로세스 중지

31 Real-Time Computing and Communications Lab., Hanyang University 31 Real-Time Computing and Communications Lab., Hanyang University Foreground & Background ( 중복 )  Example> Foreground & Background  command “jobs” 현재 실행되고 있는 프로세스들의 상태와, job 번호를 알 수 있다.  Background -> Foreground $ fg %job 번호 (ex> fg %2)

32 Real-Time Computing and Communications Lab., Hanyang University 32 Real-Time Computing and Communications Lab., Hanyang University Foreground & Background ( 중복 )  Foreground -> Background $ bg %job 번호 foreground 에서 background 로 바꾸려면, 먼저 foreground 로 실행되고 있는 프로세스를 ctrl + z 로 중지 시킨 후 해야 한다.

33 Real-Time Computing and Communications Lab., Hanyang University 33 Real-Time Computing and Communications Lab., Hanyang University “top” command  Linux 에서 시스템 사용량을 확인  Usage : $ top [options]

34 Real-Time Computing and Communications Lab., Hanyang University 34 Real-Time Computing and Communications Lab., Hanyang University “top” command  Table 필드 정보  PID : 프로세스 ID (PID)  USER : 프로세스를 실행시킨 사용자 ID  PRI : 프로세스 우선순위 (nice value + 20)  NI : task 의 Nice value  VIRT : 가상 메모리 사용량  RES : 현재 Page 가 상주하고 있는 크기 (Resident Size)  S : 프로세스 상태 (S : sleeping, R : running, W : swapped out process, Z : zombies)  %CPU : 프로세스가 사용하는 CPU 사용률  %MEM : 프로세스가 사용하는 메모리 사용률  COMMAND : 실행된 명령어

35 Real-Time Computing and Communications Lab., Hanyang University 35 Real-Time Computing and Communications Lab., Hanyang University 과제 4 Preview  Example>