SlideShare a Scribd company logo
1 of 18
Download to read offline
Linux Container Update
KOSAKI Motohiro
Who am I
• Linux メモリ管理コア開発者
• MM Summit(上位20人のコア開発者会議)5
年連続招待
• Ruby core committer
• コミット率TOP10コミッタのうちの一人
• ボストン在住、Red Hat常駐
• Herokuは使ったことがありません
LSF/MM 2014 photo
What is Container
• むつかしい言い方をすると Operating system–
level virtualization
• FreeBSD jail が嚆矢
• Containerという用語を最初に使い始めたの
はSolaris
• リソース(CPU, memory, IO, etc)の分離 + 名前
空間(pid, IP adress, chroot)の分離 + (SELinux)
• ここ二年ぐらいで急速に注目度アップ
Linux v2.6.32
• 2009年12月リリース
• Ubuntu 10.04やRHEL6で採用。広く使われている
• Linuxは年4回リリース
• 20バージョン近く古く、さすがにつらい
• 2014年はUbuntu 14.04やRHEL7といった次世代
ロングサポート製品が出る年
• 最近(ここ5年ぐらい)のLinuxでのコンテナアップ
デートを語るチャンス
Containers new features
• 2.6.35: oom notifier
• 3.0 remove the ns_cgroup
• 3.3 per cgroup tcp buffer limit
• 3.6 hugetlb cgroup
• 3.10 memory pressure notification
• 3.14 proper userns
• 3.16? memory cgroup low-limit
• 3.16? memory cgroup Kernel memory limit
OOM Notifier
• OOM(out of memory) が起きた時に、いきなり
即死させるのではなく通知してくれる。
• ユーザー空間でOOM Managerを作るための
仕組み
• OOMが起きた時に予測不可能な事態になる
のを防ぐ
remove the ns_cgroup
• 誰も使ってなかった機能だからどうでもいい
• 名前空間はclone(2), unshare(2) syscallを使う
べきということになった
per cgroup tcp buffer limit
• TCPバッファサイズはWebアプリチューニング
の最重要パラメタの1つ
• 大きくするとスループット上がる
• 小さくするとレイテンシ上がる
• ちゃんと設定しないとbufferbloat問題
• いままではPaaSではチューニング不可能だっ
た
hugetlb cgroup
• 大きなサイズのページ(2M, 1G)のサイズを
cgroupから扱うことが出来る
• ほとんどのデータベースでHugetlbを使うと性
能が上がる
• いままで、per cgroupの制限が出来ず、
disableにせざる得なかった
memory pressure notification
• メモリが足りなくなってきた時に、アプリケー
ションに通知がされる仕組み
• アプリケーションの対応が必要
• たまに誤爆する
userns
• UID, GIDのnamespace(ns)
• 2.6.23から入っているがつい最近(3.14)まで壊
れていた
• カーネルの中に名前空間を意識せずUID処
理をしてる箇所多数
• これが動かないとセキュリティの担保が大変
memory cgroup low-limit
• いわゆるメモリ最低保証
• 自分以外のプロセスが暴れたときに、プロセ
スがスワップアウトしまくると悲しい(;_;)
memory cgroup: Kernel memory limit
• 現状のmemory cgroupはプロセスメモリーの
みを管理
• 垢BAN覚悟なら、pipeなど使ってlimitを大きく
超えたメモリ量を確保して、サーバーをクラッ
シュさせることも可能
• 重要サービスにPaaSは使えないというFUD
• Coming soon
LXC
• コンテナを操作するためのツール群
• 2014/2/20 LXC 1.0.0 released
• 非特権コンテナをサポート
• Python, Ruby, GoのAPI binding
• 象徴的な意味合いが強い
• 1.0になったんだからアイコン作ってくれれば
いいのに
Checkpoint & restore
• プロセスをディスクに保存し、あとで再開する
• 再開先は別のマシンでもOK
• KernelのNamespaceを使って再開先でpidや
ネットワーク設定が変わらないよう差し替える
• ライブマイグレーションの基盤技術
• linux-cr is dead. Long live CRIU!
• 2013年soft-dirty実装
• ここ最近で一番の進化?
Docker
• 去年から大流行
• PaaSに新たな地平を開いた
• 手元の環境とPaaSの環境の
違いによって、バグが出るの
大変つらい
• → 依存コンポーネントを
環境ごとdeploy
• 使い勝手が大幅UP
• OpenShift(Red Hatの運営
するHerokuもどき)はいち早く
採用を決めた
Thanks

More Related Content

What's hot

Ruby on RedHat Enterprise Linux
Ruby on RedHat Enterprise LinuxRuby on RedHat Enterprise Linux
Ruby on RedHat Enterprise LinuxTomoya Kawanishi
 
Ec2でのdisk拡張方法
Ec2でのdisk拡張方法Ec2でのdisk拡張方法
Ec2でのdisk拡張方法Takamasa Sakai
 
Recent Information about LibreOffice
Recent Information about LibreOfficeRecent Information about LibreOffice
Recent Information about LibreOfficeMasataka Kondo
 
こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜
こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜
こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜furandon_pig
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤTakashi Hoshino
 
qpstudy05 lignhing talk - virtio
qpstudy05 lignhing talk - virtioqpstudy05 lignhing talk - virtio
qpstudy05 lignhing talk - virtioTakeshi HASEGAWA
 
Ruby(thorライブラリ)
Ruby(thorライブラリ)Ruby(thorライブラリ)
Ruby(thorライブラリ)松本 雄貴
 
Lang-8 got updated on SimpleResource
Lang-8 got updated on SimpleResourceLang-8 got updated on SimpleResource
Lang-8 got updated on SimpleResourceKazuki MATSUMOTO
 
CoreOSってなんですか
CoreOSってなんですかCoreOSってなんですか
CoreOSってなんですかKeisuke Izumiya
 
セキュリティの○○○を買ってみた
セキュリティの○○○を買ってみたセキュリティの○○○を買ってみた
セキュリティの○○○を買ってみたcluclu_land
 
LinuxでZFSを使ってみた
LinuxでZFSを使ってみたLinuxでZFSを使ってみた
LinuxでZFSを使ってみたnvsofts
 
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...Naruhiko Ogasawara
 
Reading kernel org
Reading kernel orgReading kernel org
Reading kernel orgKai Sasaki
 
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)Fuminobu Takeyama
 
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Fuminobu Takeyama
 
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE usersopenSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE usersNaruhiko Ogasawara
 
10分で分かるデータストレージ
10分で分かるデータストレージ10分で分かるデータストレージ
10分で分かるデータストレージTakashi Hoshino
 

What's hot (20)

Ruby on RedHat Enterprise Linux
Ruby on RedHat Enterprise LinuxRuby on RedHat Enterprise Linux
Ruby on RedHat Enterprise Linux
 
Ec2でのdisk拡張方法
Ec2でのdisk拡張方法Ec2でのdisk拡張方法
Ec2でのdisk拡張方法
 
Recent Information about LibreOffice
Recent Information about LibreOfficeRecent Information about LibreOffice
Recent Information about LibreOffice
 
こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜
こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜
こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜
 
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
 
qpstudy05 lignhing talk - virtio
qpstudy05 lignhing talk - virtioqpstudy05 lignhing talk - virtio
qpstudy05 lignhing talk - virtio
 
Ruby(thorライブラリ)
Ruby(thorライブラリ)Ruby(thorライブラリ)
Ruby(thorライブラリ)
 
Lang-8 got updated on SimpleResource
Lang-8 got updated on SimpleResourceLang-8 got updated on SimpleResource
Lang-8 got updated on SimpleResource
 
CoreOSってなんですか
CoreOSってなんですかCoreOSってなんですか
CoreOSってなんですか
 
セキュリティの○○○を買ってみた
セキュリティの○○○を買ってみたセキュリティの○○○を買ってみた
セキュリティの○○○を買ってみた
 
LinuxでZFSを使ってみた
LinuxでZFSを使ってみたLinuxでZFSを使ってみた
LinuxでZFSを使ってみた
 
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
 
Reading kernel org
Reading kernel orgReading kernel org
Reading kernel org
 
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
 
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
 
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE usersopenSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
 
FreeBSD の小ネタ
FreeBSD の小ネタFreeBSD の小ネタ
FreeBSD の小ネタ
 
10分で分かるデータストレージ
10分で分かるデータストレージ10分で分かるデータストレージ
10分で分かるデータストレージ
 
20190828 sd by kitazaki_t0
20190828 sd by kitazaki_t020190828 sd by kitazaki_t0
20190828 sd by kitazaki_t0
 
SKKのススメ
SKKのススメSKKのススメ
SKKのススメ
 

Similar to Linux container update

CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討Masahito Zembutsu
 
YoctoでLTSディストリを作るには
YoctoでLTSディストリを作るにはYoctoでLTSディストリを作るには
YoctoでLTSディストリを作るにはwata2ki
 
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on LinuxAndroid タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on LinuxNetwalker lab kapper
 
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望Tetsuo Yamabe
 
Hyper-V + Linux {which Microsoft Loves}
Hyper-V + Linux {which Microsoft Loves}Hyper-V + Linux {which Microsoft Loves}
Hyper-V + Linux {which Microsoft Loves}Norio Sashizaki
 
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜Masahito Zembutsu
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜Hideki Takase
 
2017年に「伽藍とバザール」を読み返す
2017年に「伽藍とバザール」を読み返す2017年に「伽藍とバザール」を読み返す
2017年に「伽藍とバザール」を読み返すYasuharu Seki
 
Android タブレット、スマートウォッチにLinuxを入れて色々と遊んでみよう Hacking of Android Tablet and Smart...
Android タブレット、スマートウォッチにLinuxを入れて色々と遊んでみよう Hacking of Android Tablet and Smart...Android タブレット、スマートウォッチにLinuxを入れて色々と遊んでみよう Hacking of Android Tablet and Smart...
Android タブレット、スマートウォッチにLinuxを入れて色々と遊んでみよう Hacking of Android Tablet and Smart...Netwalker lab kapper
 

Similar to Linux container update (10)

CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
 
YoctoでLTSディストリを作るには
YoctoでLTSディストリを作るにはYoctoでLTSディストリを作るには
YoctoでLTSディストリを作るには
 
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on LinuxAndroid タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux
Android タブレットにLinuxを入れて色々と遊んでみよう 続編その2 Hacking of Android Tablet on Linux
 
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
 
Hyper-V + Linux {which Microsoft Loves}
Hyper-V + Linux {which Microsoft Loves}Hyper-V + Linux {which Microsoft Loves}
Hyper-V + Linux {which Microsoft Loves}
 
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
 
Bsd suki
Bsd sukiBsd suki
Bsd suki
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
2017年に「伽藍とバザール」を読み返す
2017年に「伽藍とバザール」を読み返す2017年に「伽藍とバザール」を読み返す
2017年に「伽藍とバザール」を読み返す
 
Android タブレット、スマートウォッチにLinuxを入れて色々と遊んでみよう Hacking of Android Tablet and Smart...
Android タブレット、スマートウォッチにLinuxを入れて色々と遊んでみよう Hacking of Android Tablet and Smart...Android タブレット、スマートウォッチにLinuxを入れて色々と遊んでみよう Hacking of Android Tablet and Smart...
Android タブレット、スマートウォッチにLinuxを入れて色々と遊んでみよう Hacking of Android Tablet and Smart...
 

Linux container update

  • 2. Who am I • Linux メモリ管理コア開発者 • MM Summit(上位20人のコア開発者会議)5 年連続招待 • Ruby core committer • コミット率TOP10コミッタのうちの一人 • ボストン在住、Red Hat常駐 • Herokuは使ったことがありません
  • 4. What is Container • むつかしい言い方をすると Operating system– level virtualization • FreeBSD jail が嚆矢 • Containerという用語を最初に使い始めたの はSolaris • リソース(CPU, memory, IO, etc)の分離 + 名前 空間(pid, IP adress, chroot)の分離 + (SELinux) • ここ二年ぐらいで急速に注目度アップ
  • 5. Linux v2.6.32 • 2009年12月リリース • Ubuntu 10.04やRHEL6で採用。広く使われている • Linuxは年4回リリース • 20バージョン近く古く、さすがにつらい • 2014年はUbuntu 14.04やRHEL7といった次世代 ロングサポート製品が出る年 • 最近(ここ5年ぐらい)のLinuxでのコンテナアップ デートを語るチャンス
  • 6. Containers new features • 2.6.35: oom notifier • 3.0 remove the ns_cgroup • 3.3 per cgroup tcp buffer limit • 3.6 hugetlb cgroup • 3.10 memory pressure notification • 3.14 proper userns • 3.16? memory cgroup low-limit • 3.16? memory cgroup Kernel memory limit
  • 7. OOM Notifier • OOM(out of memory) が起きた時に、いきなり 即死させるのではなく通知してくれる。 • ユーザー空間でOOM Managerを作るための 仕組み • OOMが起きた時に予測不可能な事態になる のを防ぐ
  • 8. remove the ns_cgroup • 誰も使ってなかった機能だからどうでもいい • 名前空間はclone(2), unshare(2) syscallを使う べきということになった
  • 9. per cgroup tcp buffer limit • TCPバッファサイズはWebアプリチューニング の最重要パラメタの1つ • 大きくするとスループット上がる • 小さくするとレイテンシ上がる • ちゃんと設定しないとbufferbloat問題 • いままではPaaSではチューニング不可能だっ た
  • 10. hugetlb cgroup • 大きなサイズのページ(2M, 1G)のサイズを cgroupから扱うことが出来る • ほとんどのデータベースでHugetlbを使うと性 能が上がる • いままで、per cgroupの制限が出来ず、 disableにせざる得なかった
  • 11. memory pressure notification • メモリが足りなくなってきた時に、アプリケー ションに通知がされる仕組み • アプリケーションの対応が必要 • たまに誤爆する
  • 12. userns • UID, GIDのnamespace(ns) • 2.6.23から入っているがつい最近(3.14)まで壊 れていた • カーネルの中に名前空間を意識せずUID処 理をしてる箇所多数 • これが動かないとセキュリティの担保が大変
  • 13. memory cgroup low-limit • いわゆるメモリ最低保証 • 自分以外のプロセスが暴れたときに、プロセ スがスワップアウトしまくると悲しい(;_;)
  • 14. memory cgroup: Kernel memory limit • 現状のmemory cgroupはプロセスメモリーの みを管理 • 垢BAN覚悟なら、pipeなど使ってlimitを大きく 超えたメモリ量を確保して、サーバーをクラッ シュさせることも可能 • 重要サービスにPaaSは使えないというFUD • Coming soon
  • 15. LXC • コンテナを操作するためのツール群 • 2014/2/20 LXC 1.0.0 released • 非特権コンテナをサポート • Python, Ruby, GoのAPI binding • 象徴的な意味合いが強い • 1.0になったんだからアイコン作ってくれれば いいのに
  • 16. Checkpoint & restore • プロセスをディスクに保存し、あとで再開する • 再開先は別のマシンでもOK • KernelのNamespaceを使って再開先でpidや ネットワーク設定が変わらないよう差し替える • ライブマイグレーションの基盤技術 • linux-cr is dead. Long live CRIU! • 2013年soft-dirty実装 • ここ最近で一番の進化?
  • 17. Docker • 去年から大流行 • PaaSに新たな地平を開いた • 手元の環境とPaaSの環境の 違いによって、バグが出るの 大変つらい • → 依存コンポーネントを 環境ごとdeploy • 使い勝手が大幅UP • OpenShift(Red Hatの運営 するHerokuもどき)はいち早く 採用を決めた