Linux container update

6,727 views

Published on

0 Comments
29 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,727
On SlideShare
0
From Embeds
0
Number of Embeds
1,911
Actions
Shares
0
Downloads
33
Comments
0
Likes
29
Embeds 0
No embeds

No notes for slide

Linux container update

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

×