Skip to content

Instantly share code, notes, and snippets.

View hipiphock's full-sized avatar

박주언 hipiphock

  • Hanyang University
View GitHub Profile
@hipiphock
hipiphock / profiles.json
Last active August 6, 2019 07:22
profiles.json for windows terminal
{
"globals" :
{
"alwaysShowTabs" : true,
"defaultProfile" : "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"initialCols" : 120,
"initialRows" : 30,
"keybindings" :
[
{
@hipiphock
hipiphock / CFS.md
Last active July 11, 2019 09:27
code level view on Completely Fair Scheduler

Overview

Completely Fair Scheduler는 linux kernel의 기본 scheduler로, 모든 task가 똑같은 시간동안 작동할 수 있도록 하는 scheduler이다.

Red-black tree 자료구조를 통해서 task들을 관리하고, 각각의 task의 virtual runtime을 통해서 정렬을 한다.

Basic Concepts

CFS는 sched_entity->vruntime를 key로 red-black tree 내부에서 task들을 정렬한다.

sched_entity는 CFS에서의 task 하나하나를 의미하며, vruntime은 각각의 task의 실행시간을 누적시킨 값을 run queue에 배치하기 위해 load weight을 반대로 적용한 값이다.

@hipiphock
hipiphock / schedule.md
Last active July 12, 2019 01:34
code-level analysis in schedule() function

Overview

schedule()함수는 context switch를 관장하는 함수이다.

Code

기본적으로 scheduling은 interrupt가 들어오거나, 또는 현재 task가 CPU를 양보할 때 생기게 된다.

File Function Line
core.c 3514 EXPORT_SYMBOL(schedule);
core.c schedule 3502 asmlinkage __visible void __sched schedule(void )
@hipiphock
hipiphock / scheduler_overview.md
Last active July 12, 2019 01:34
schedulers in linux

Overview

기본적인 linux kernel의 scheduler에 대한 설명

현재 가장 stable한 버전인 v5.1.15를 보면서 작성하였다.

Task

기본적으로 linux kernel은 task가 scheduling 되는 최소 단위가 된다. kernel thread와 user process와 user thread가 task가 된다.

Priority

@hipiphock
hipiphock / cgroup_test2.md
Last active July 4, 2019 05:35
Practice for cgroup by limiting CPU resources

Overview

저번에 cgroup을 통해서 CPU의 core 자원을 제한하는 실험을 했었다.

이번 실험에서는 특정 cgroup에 대해서 CPU usage를 제한하고, 이것과 관련하여 scheduler에서는 어떠한 작업을 하는지, scheduler에서 priority에 어떠한 영향을 주는지 알아보고자 한다.

Design

다음과 같은 과정으로 실험을 진행한다.

  1. 서로 다른 cgroup A와 B를 만든다.
  2. 각각의 group에서의 cpu.shares의 값을 다르게 설정한다. 이때의 cpu.shares의 비율을 적당히 조절해서 설정한다.

cgroup

cgroup은 linux에서 자원할당을 효율적으로 하기 위해서 존재하는 기능 중 하나이다. cgroup은 여러 task를 여러 group으로 나누고, 그 나눠진 group 내에서 resource를 관리한다. 이 기능의 중요한 특징 중 하나는 file system을 이용해서 작업을 관리한다는 것이다.

Definition

cgroup: associates a set of tasks with a set of parameters for one or more subsystems

subsystem: resource controller. cgroup에 있는 process들의 자원들을 관리하는 놈

[공통] 마크다운 markdown 작성법

1. 마크다운에 관하여

1.1. 마크다운이란?

**Markdown**은 텍스트 기반의 마크업언어로 2004년 존그루버에 의해 만들어졌으며 쉽게 쓰고 읽을 수 있으며 HTML로 변환이 가능하다. 특수기호와 문자를 이용한 매우 간단한 구조의 문법을 사용하여 웹에서도 보다 빠르게 컨텐츠를 작성하고 보다 직관적으로 인식할 수 있다. 마크다운이 최근 각광받기 시작한 이유는 깃헙(https://github.com) 덕분이다. 깃헙의 저장소Repository에 관한 정보를 기록하는 README.md는 깃헙을 사용하는 사람이라면 누구나 가장 먼저 접하게 되는 마크다운 문서였다. 마크다운을 통해서 설치방법, 소스코드 설명, 이슈 등을 간단하게 기록하고 가독성을 높일 수 있다는 강점이 부각되면서 점점 여러 곳으로 퍼져가게 된다.

1.2. 마크다운의 장-단점

1.2.1. 장점