리눅스 커널 소개

Similar documents
<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

6주차.key

PowerPoint 프레젠테이션

Docker Cgroup 박문식

1217 WebTrafMon II


PowerPoint 프레젠테이션

Chap06(Interprocess Communication).PDF

PCServerMgmt7

T100MD+

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

Adobe Flash 취약점 분석 (CVE )

SRC PLUS 제어기 MANUAL

1

bn2019_2

슬라이드 제목 없음

untitled

01Àå

untitled

untitled

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

10.

Voice Portal using Oracle 9i AS Wireless

서현수

슬라이드 1

PowerPoint 프레젠테이션

°í¼®ÁÖ Ãâ·Â

Network seminar.key

C# Programming Guide - Types

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

歯J PDF

쿠폰형_상품소개서

Interstage5 SOAP서비스 설정 가이드

Solaris Express Developer Edition

untitled

DocsPin_Korean.pages

Something that can be seen, touched or otherwise sensed

Microsoft Word - FunctionCall

hlogin2

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이

DE1-SoC Board

Microsoft PowerPoint APUE(Intro).ppt

강의10

thesis

슬라이드 1

hlogin7

Deok9_Exploit Technique

김기남_ATDC2016_160620_[키노트].key

untitled

특허청구의 범위 청구항 1 게임 서버 또는 미들웨어에 의해, 사용자 단말기로부터, GPS 정보, IP 정보, 중계기 정보 중 적어도 하나를 이 용한 위치 정보와, 상기 사용자 단말기에 설정된 언어 종류를 포함하는 사용자 정보를 수신하는 단계; 상기 게임 서버 또는 미들

LXR 설치 및 사용법.doc

歯sql_tuning2

K7VT2_QIG_v3

vm-웨어-앞부속

PowerPoint 프레젠테이션

/chroot/lib/ /chroot/etc/

PowerPoint 프레젠테이션

슬라이드 제목 없음

MySQL-Ch10

PowerPoint 프레젠테이션

Chap7.PDF

MPLAB C18 C

The Self-Managing Database : Automatic Health Monitoring and Alerting

휠세미나3 ver0.4

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

SMB_ICMP_UDP(huichang).PDF

PowerPoint 프레젠테이션

매력적인 맥/iOS 개발 환경 그림 A-1 변경 사항 확인창 Validate Setting... 항목을 고르면 된다. 프로젝트 편집기를 선택했을 때 화면 아 래쪽에 있는 동일한 Validate Settings... 버튼을 클릭해도 된다. 이슈 내비게이터 목록에서 변경할

untitled

歯이시홍).PDF

Microsoft Word - ExecutionStack

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

Chapter11OSPF

CD-RW_Advanced.PDF

hd1300_k_v1r2_Final_.PDF

PowerPoint 프레젠테이션

PRO1_02E [읽기 전용]

hw 2006 Tech guide 64p v5

Mango220 Android How to compile and Transfer image to Target

Microsoft PowerPoint - o8.pptx

<30362E20C6EDC1FD2DB0EDBFB5B4EBB4D420BCF6C1A42E687770>

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

UDP Flooding Attack 공격과 방어

Windows Embedded Compact 2013 [그림 1]은 Windows CE 로 알려진 Microsoft의 Windows Embedded Compact OS의 history를 보여주고 있다. [표 1] 은 각 Windows CE 버전들의 주요 특징들을 담고

Sharing Memory Between Drivers and Applications

다음 사항을 꼭 확인하세요! 도움말 안내 - 본 도움말에는 iodd2511 조작방법 및 활용법이 적혀 있습니다. - 본 제품 사용 전에 안전을 위한 주의사항 을 반드시 숙지하십시오. - 문제가 발생하면 문제해결 을 참조하십시오. 중요한 Data 는 항상 백업 하십시오.

CPX-E-EC_BES_C_ _ k1

Orcad Capture 9.x

MAX+plus II Getting Started - 무작정따라하기

Microsoft Word - CPL-TR NS3.docx

BGP AS AS BGP AS BGP AS 65250

Microsoft PowerPoint os2.ppt [호환 모드]

untitled

Xen으로 배우는 가상화 기술의 이해 - CPU 가상화

歯A1.1함진호.ppt

제20회_해킹방지워크샵_(이재석)

Remote UI Guide

기타자료.PDF

ABC 11장

<4D F736F F F696E74202D E20C0CEC5CDB3DD20C0C0BFEB20B9D720BCADBAF1BDBA20B1E2BCFA E >

Transcription:

리눅스커널소개 김남형 2016-06-21 ( 화 ) 김남형리눅스커널소개 2016-06-21 ( 화 ) 1 / 29

Outline 1 Introduction 2 cgroup 3 Namespace 4 Kernel changes 5 Q & A 김남형리눅스커널소개 2016-06-21 ( 화 ) 2 / 29

Introduction Who am I Namhyung Kim Linux kernel developer 2010 년부터오픈소스개발참여 LG 전자 open source contribution team perf / tracing subsystem 김남형리눅스커널소개 2016-06-21 ( 화 ) 3 / 29

cgroup cgroup control group core: 태스크그룹관리 controller: 리소스관리 (distribution) cgroup core cgroupfs 파일시스템 shell 상에서간단히관리가능 v4.5 부터 v2 지원 김남형리눅스커널소개 2016-06-21 ( 화 ) 4 / 29

cgroup resource distribution models weight 비중에따른분배 ex) cpu.weight limit / protection 최대 / 최소치 (over-commit 허용 ) ex) io.max / memory.low allocation 할당량 (over-commit 금지 ) ex) cpu.rt.max 김남형리눅스커널소개 2016-06-21 ( 화 ) 5 / 29

cgroup cgroup v1 vs v2 multiple vs unified hierarchy thread vs process 단위 internal (non-leaf group) task 허용여부 mount 옵션사용여부 김남형리눅스커널소개 2016-06-21 ( 화 ) 6 / 29

cgroup cgroup controllers control each resources cpu (v2 WIP) memory block IO device network 김남형리눅스커널소개 2016-06-21 ( 화 ) 7 / 29

cgroup cgroup information (v1) $ cat /proc/cgroups #subsys_name hierarchy num_cgroups enabled debug 0 1 1 cpu 2 3 1 cpuacct 1 170 1 freezer 0 1 1 $ mount grep cgroup none /acct cgroup rw,relatime,cpuacct 0 0 none /dev/cpuctl cgroup rw,relatime,cpu 0 0 $ cat /proc/self/cgroup 2:cpu:/ 1:cpuacct:/uid/2000 김남형리눅스커널소개 2016-06-21 ( 화 ) 8 / 29

cgroup cgroup v2 interface # mount -t cgroup2 none /sys/fs/cgroup # cd /sys/fs/cgroup # mkdir cgrp-a # echo `pidof firefox` > cgrp-a/procs # cat cgrp-a/controllers pid memory io # echo "+memory" > subtree_control # echo 512M > cgrp-a/memory.low 김남형리눅스커널소개 2016-06-21 ( 화 ) 9 / 29

cgroup network cgroup controllers traffic control setting cgroup v1 에서만동작 net_cls for classful qdisc set specific class id net_prio SO_PRIORITY 와동일한효과 xt_cgroup xtables netfilter matching module cgroup path 매칭 김남형리눅스커널소개 2016-06-21 ( 화 ) 10 / 29

Namespace Namespace 리소스관리 (isolation) container 환경에서주로사용 light-weight virtualization file 형태로관리 (file descriptor) life-time 관리 bind mount 를통해 persistency 보장 김남형리눅스커널소개 2016-06-21 ( 화 ) 11 / 29

Namespace Namespace types Available namespaces mount (CLONE_NEWNS) ipc (CLONE_NEWIPC) uts (CLONE_NEWUTS) network (CLONE_NEWNET) pid (CLONE_NEWPID) user (CLONE_NEWUSER) cgroup (CLONE_NEWCGROUP) 김남형리눅스커널소개 2016-06-21 ( 화 ) 12 / 29

Namespace Namespace information $ ls -la /proc/self/ns total 0 lrwxrwxrwx 1 namhyung users 0 Jun lrwxrwxrwx 1 namhyung users 0 Jun lrwxrwxrwx 1 namhyung users 0 Jun lrwxrwxrwx 1 namhyung users 0 Jun lrwxrwxrwx 1 namhyung users 0 Jun 1 22:23 ipc -> 'ipc:[4026531839]' 1 22:23 mnt -> 'mnt:[4026531840]' 1 22:23 net -> 'net:[4026531969]' 1 22:23 pid -> 'pid:[4026531836]' 1 22:23 uts -> 'uts:[4026531838]' 김남형리눅스커널소개 2016-06-21 ( 화 ) 13 / 29

Namespace Namespace API system call clone unshare setns util-linux unshare (-i/-m/-n/-p/-u/-u/-c) <command> nsenter (-i/-m/-n/-p/-u/-u/-c/-t) <command> iproute / tc ip netns <command> tc -n <ns> <do something> 김남형리눅스커널소개 2016-06-21 ( 화 ) 14 / 29

Namespace Namespace usage pid namespace 새로운프로세스생성시 pid 할당실행도중에 pid 가변경되지않음 container 가동일한 pid 를유지하는것이가능제일처음생성되는프로세스는 init (pid 1) 처럼처리 orphan 프로세스정리 (wait) signal handling 예외. 종료시새로운프로세스생성불가 김남형리눅스커널소개 2016-06-21 ( 화 ) 15 / 29

Namespace Namespace usage user namespace 일반 (non-privileged) 사용자가생성가능다른 namespace 의경우 root 권한필요 (SYS_CAP_ADMIN) 새로운 uid/gid (root) 할당가능기본값은 overflowuid/gid (65534) user/group 매핑필요 one-time operation 오직해당 namespace 에만영향을줌 non-0 uid 프로세스가 exec() 호출시 cap 제거됨 김남형리눅스커널소개 2016-06-21 ( 화 ) 16 / 29

Namespace Namespace usage network namespace # ip netns add myns # ip netns exec myns ip link set dev lo up # ip link add veth0 type veth peer name veth1 # ip link set veth1 netns myns # ip netns exec myns ifconfig veth1 10.1.1.1/24 up # ifconfig veth0 10.1.1.2/24 up 김남형리눅스커널소개 2016-06-21 ( 화 ) 17 / 29

Kernel changes ebpf extened Berkeley Packet Filter in-kernel virtual machine JIT compiler bpf(2) 시스템콜 다양한용도로활용 LLVM backend use subset of C language 김남형리눅스커널소개 2016-06-21 ( 화 ) 18 / 29

Kernel changes cbpf vs ebpf socket only vs generic purpose efficiency + genericity 내부적으로 cbpf 는 ebpf 로변경 CPU 종류에따라 JIT compile 가능 김남형리눅스커널소개 2016-06-21 ( 화 ) 19 / 29

Kernel changes ebpf virtual machine 64-bit machine JIT-friendly ISA 10개의범용 register 512 byte stack map: kernel-user data sharing 김남형리눅스커널소개 2016-06-21 ( 화 ) 20 / 29

Kernel changes ebpf ISA 최근 cpu 들의 instruction 과 1:1 대응 load 시프로그램검증후 JIT compile /proc/sys/net/core/bpf_jit_enable interpreter 모드 제한된 kernel 함수호출 김남형리눅스커널소개 2016-06-21 ( 화 ) 21 / 29

Kernel changes ebpf verifier 2-path 프로그램검증 1. CFG validation 2. DFA - simulated execution loop 사용불가능 메모리접근오류방지 김남형리눅스커널소개 2016-06-21 ( 화 ) 22 / 29

Kernel changes ebpf program ELF section 형태로구성 context argument socket buffer seccomp data kprobe registers tracepoint arguments 김남형리눅스커널소개 2016-06-21 ( 화 ) 23 / 29

Kernel changes ebpf map kernel <-> user 통신 bpf(2) 시스템콜을통해생성 file 형태로관리 persistent map /sys/fs/bpf filesystem 김남형리눅스커널소개 2016-06-21 ( 화 ) 24 / 29

Kernel changes ebpf 활용 Socket filtering (tcpdump, wireshark, xt_bpf, ) Traffic control (tc-ebpf) : classifer and action SO_REUSEPORT : packet -> socket mapping KCM (Kernel Connection Multiplexer) : determine length Seccomp filter : allow system calls Dynamic tracing 김남형리눅스커널소개 2016-06-21 ( 화 ) 25 / 29

Kernel changes ebpf compilers tcpdump bpf_asm LLVM BCC PLY systemtap 김남형리눅스커널소개 2016-06-21 ( 화 ) 26 / 29

Kernel changes ebpf example SEC("socket") int bpf_prog(struct sk_buff *skb) { long *value; int index = load_byte(skb, ETH_HLEN + offsetof(struct iphdr, protocol)); if (skb->pkt_type!= PACKET_OUTGOING) return 0; value = bpf_map_lookup_elem(&my_map, &index); if (value) sync_fetch_and_add(value, skb->len); return 0; } char _license[] SEC("license") = "GPL"; 김남형리눅스커널소개 2016-06-21 ( 화 ) 27 / 29

Q & A Thank You Q & A 김남형리눅스커널소개 2016-06-21 ( 화 ) 28 / 29

Q & A References http://www.kernel.org/doc/documentation/cgroup-v2.txt http://lwn.net/articles/531114/ http://www.kernel.org/doc/documentation/networking/ filter.txt 김남형리눅스커널소개 2016-06-21 ( 화 ) 29 / 29