objectclub2009summer youth session takkanm

46
int 0x80 の向こう側へ ファンクション倶楽部 三村 益隆 takkanm 200978日水曜日

Upload: mitsutaka-mimura

Post on 10-Jul-2015

796 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Objectclub2009summer Youth Session Takkanm

int 0x80 の向こう側へファンクション倶楽部

三村 益隆takkanm

2009年7月8日水曜日

Page 2: Objectclub2009summer Youth Session Takkanm

2009年7月8日水曜日

Page 3: Objectclub2009summer Youth Session Takkanm

agenda

自己紹介

int 0x80 とは

最近のカーネルの動向

カーネルのお仕事

2009年7月8日水曜日

Page 4: Objectclub2009summer Youth Session Takkanm

自己紹介

1週間ほど前に上京

6月まではカーネル関係のお仕事

ファンクション倶楽部

光画部

2009年7月8日水曜日

Page 5: Objectclub2009summer Youth Session Takkanm

2009年7月8日水曜日

Page 6: Objectclub2009summer Youth Session Takkanm

int 0x80 とは

ユーザーモードからカーネルモードに切り替えるときに実行されるアセンブラ

ということで、カーネルに関連するお話でも

2009年7月8日水曜日

Page 7: Objectclub2009summer Youth Session Takkanm

最近のカーネル

2.6.30 が 6/10 にリリース!!

2.6.29(3/23) から8366個のパッチ

2009年7月8日水曜日

Page 8: Objectclub2009summer Youth Session Takkanm

2.6.30 における変更点

tuz から tux へ

日本発プロジェクト2件がマージ

2009年7月8日水曜日

Page 9: Objectclub2009summer Youth Session Takkanm

tuz から tux

tuz tux

2009年7月8日水曜日

Page 10: Objectclub2009summer Youth Session Takkanm

日本発プロジェクト2件

NIL FS

ログ構造化ファイルシステム

TOMOYO Linux

新しいセキュアLinux

2009年7月8日水曜日

Page 11: Objectclub2009summer Youth Session Takkanm

NIL FS

正式名称は New Implementation

of a Log-Structured File System

継続的なスナップショット

64bitのタイムスタンプで2038年問題もクリア

2009年7月8日水曜日

Page 12: Objectclub2009summer Youth Session Takkanm

TOMOYO LINUX

セキュアリナックスの一種

パス名ベースによる強制アクセス制御(MAC)

セキュリティーポリシー学習機能

2009年7月8日水曜日

Page 13: Objectclub2009summer Youth Session Takkanm

こんなのもあるよ

RCU(Read-Copy Update)「従来のRCUのスケーラビリティの限界は、たかだか数百CPUだった。この長年の性能バグ問題を直す必要がある。だから4096CPUまでスケールする形で再実装した」

KGDB

adaptive lock

2009年7月8日水曜日

Page 14: Objectclub2009summer Youth Session Takkanm

最新の情報は

LINUX KERNEL watchhttp://www.atmarkit.co.jp/flinux/index/indexfiles/watchindex.html

Linux Kernel Newbies - LinuxChanges

http://kernelnewbies.org/LinuxChanges

2009年7月8日水曜日

Page 15: Objectclub2009summer Youth Session Takkanm

カーネルのお仕事

2009年7月8日水曜日

Page 16: Objectclub2009summer Youth Session Takkanm

カーネルのお仕事タスク管理

O(1) スケジューラー

メモリ管理

Split LRU

ファイル管理

非同期 I/O

2009年7月8日水曜日

Page 17: Objectclub2009summer Youth Session Takkanm

タスク管理

2009年7月8日水曜日

Page 18: Objectclub2009summer Youth Session Takkanm

O(1)スケジューラー

その名の通りO(1)で動作するように設計されたスケジューラー

カーネル2.4から2.6の変更点の目玉のひとつ

2009年7月8日水曜日

Page 19: Objectclub2009summer Youth Session Takkanm

O(1)の仕組み

CPU ごとに優先度付きのタスクキューを持つ

task_struct

優先度高 低

CPU

2009年7月8日水曜日

Page 20: Objectclub2009summer Youth Session Takkanm

O(1)の仕組み

優先度の一番高いところの先頭が実行タスクとして選ばれる

優先度高 低

CPU

2009年7月8日水曜日

Page 21: Objectclub2009summer Youth Session Takkanm

O(1)の仕組み

タスクが実行時間を使いきるとタスクキューから外される

優先度高 低

CPU

2009年7月8日水曜日

Page 22: Objectclub2009summer Youth Session Takkanm

O(1)の仕組み

CPU

外されたタスクはCPUの持つもう一つのキューに繋がれる

2009年7月8日水曜日

Page 23: Objectclub2009summer Youth Session Takkanm

O(1)の仕組み

CPU

active queue

外されたタスクはCPUの持つもう一つのキューに繋がれる

2009年7月8日水曜日

Page 24: Objectclub2009summer Youth Session Takkanm

O(1)の仕組み

CPU

active queue

expired queue

外されたタスクはCPUの持つもう一つのキューに繋がれる

2009年7月8日水曜日

Page 25: Objectclub2009summer Youth Session Takkanm

O(1)の仕組み

CPU

active queue

expired queue

active queueに繋っているタスクが無くるまでタスクを選択実行

2009年7月8日水曜日

Page 26: Objectclub2009summer Youth Session Takkanm

O(1)の仕組み

CPU

active queue

expired queue

active queueのタスクが空になるとexpired queueがactive queueにな

2009年7月8日水曜日

Page 27: Objectclub2009summer Youth Session Takkanm

O(1)スケジューラーの特徴

CPU単位でタスクキューを持つので、マルチCPU環境でもスケールしやすい

2009年7月8日水曜日

Page 28: Objectclub2009summer Youth Session Takkanm

キューが空になったとき

CPUが持っているタスクが全て完了すると他のCPUのタスクを貰う

貰えるタスクが無い場合、IDLE

タスクを実行

2009年7月8日水曜日

Page 29: Objectclub2009summer Youth Session Takkanm

実行されるCPU

タスクが実行されるCPUは通常固定される

キャッシュやTLBの利用効率をあげるため

CPUのbusy状態に偏りがある場合はロードバ

ランスされる

実行されるCPUを固定することもできる

2009年7月8日水曜日

Page 30: Objectclub2009summer Youth Session Takkanm

メモリ管理

2009年7月8日水曜日

Page 31: Objectclub2009summer Youth Session Takkanm

ページキャッシュ解放戦略

ページキャッシュをLRUにて管理

active list

inactive list

2009年7月8日水曜日

Page 32: Objectclub2009summer Youth Session Takkanm

ページキャッシュ解放戦略

ページキャッシュをLRUにて管理

active list

inactive list

回収時はinactive list から回収する

2009年7月8日水曜日

Page 33: Objectclub2009summer Youth Session Takkanm

active から inactive

ページが active list から inactive list に繋れるのはメモリ回収時

active list に繋っているページから、最近アクセスされていないと思われるページを inactive list に繋げる

2009年7月8日水曜日

Page 34: Objectclub2009summer Youth Session Takkanm

active から inactive

ページが active list から inactive list に繋れるのはメモリ回収時

active list に繋っているページから、最近アクセスされていないと思われるページを inactive list に繋げる

2009年7月8日水曜日

Page 35: Objectclub2009summer Youth Session Takkanm

回収されるページ

inactive list に繋れているページ全てが回収対象になるとは限らない

inactive listに繋れてから実回収までの間に参照されている場合とか

2009年7月8日水曜日

Page 36: Objectclub2009summer Youth Session Takkanm

問題点大量のメモリが搭載されていると捜査するメモリ量が多くなり、効率が悪い

速度

解放可能なメモリ量

2009年7月8日水曜日

Page 37: Objectclub2009summer Youth Session Takkanm

split LRU

カーネル2.6.28でマージ

従来2本しかなかったリストを5本に増量

キャッシュの性質によって管理リストを分けることにより、解放効率をあげる

2009年7月8日水曜日

Page 38: Objectclub2009summer Youth Session Takkanm

5 つの管理リスト

ページキャッシュ active, inactive

匿名ページ active, inacrive

回収不可能ページ用

2009年7月8日水曜日

Page 39: Objectclub2009summer Youth Session Takkanm

ファイル管理

2009年7月8日水曜日

Page 40: Objectclub2009summer Youth Session Takkanm

非同期I/Oの種類

posix準拠 aio

カーネルによる aio

2009年7月8日水曜日

Page 41: Objectclub2009summer Youth Session Takkanm

posix準拠 aio

posix準拠のaioインターフェース

aio_read(), aio_write()など

ライブラリ側でI/O用スレッドを実行

librt を使用

2009年7月8日水曜日

Page 42: Objectclub2009summer Youth Session Takkanm

カーネルによるaio

カーネル内部で非同期にI/Oが処理される

I/Oはカーネルスレッド(aio)が処理

2009年7月8日水曜日

Page 43: Objectclub2009summer Youth Session Takkanm

完了通知

プロセスがI/O完了を確認するのにシステムコールを発行する必要が無い

AIOリングと呼ばれるバッファに完了通知が書きこまれる

2009年7月8日水曜日

Page 44: Objectclub2009summer Youth Session Takkanm

何故システムコールがいらない?

AIOリングはプロセスのページユーザーモードのアドレス空間にマッピングされる

カーネルモードの全プロセスからアクセス可能

ユーザープロセスからもアクセス可能

2009年7月8日水曜日

Page 45: Objectclub2009summer Youth Session Takkanm

ほんの少しでもカーネルの世界に興味を持っていただけたでしょうか?

2009年7月8日水曜日

Page 46: Objectclub2009summer Youth Session Takkanm

ご静聴ありがとうございました

2009年7月8日水曜日