SlideShare a Scribd company logo
コンテナにおけるパフォーマンス調
査でハマった話
TDCソフト株式会社
島田雄太
- Container’s monitoring is hard way -
発表者について
名前: 島田 雄太 (@yuta1979)
所属:TDCソフト株式会社 ITアーキテクト
最近の業務経歴:AWS構築支援、顧客業務システムのCI/CD環境構築・運用
資格:PMP、AWSソリューションアーキテクト アソシエイト
好きなAWSサービス:Route53・CLI
最近の楽しみ:子供と過ごす時間
2
本日の発表について
- コンテナのメトリクス収集に苦労した話
以下は触れません
- Saas型のモニタリングサービスについて(ex Datadog,Mackerel)
- デプロイ周りの話
- コンテナ入門について(特徴のみ説明)
3
コンテナの特徴
- コンテナはホストOS上の独立したアプリケーションの実行環
境
- コンテナランタイムによって作成された、ホスト
OSのリソース
を隔離・制限したプロセス
- コンテナをイメージ化することで、開発、ステージ、本番環境
での差異を解消(設定値は環境変数で割当可能
)
4
コンテナを導入している現場で
実際にあった話
5
背景:STG環境で負荷試験を実施
コンテナ上でリソースの見え方ってそもそもどうなっているんだっけ??
- 複数のコンテナ(実際にはk8sのpod)にアプリケーションをデプロイ
- リリース前に負荷試験を行ったら、メモリの張り付きが発生した
6
Step1:とりあえず調べてみた
7
簡単に調べるなら?
オンプレ時代から使っているLinuxのコマンドを利用
- メモリ: free コマンドで使用量を確認
- CPU:psコマンドでプロセスで利用しているCPU利用率を確認
<環境について>
AWS: t2.medium (2vCPU / 4GiB Memory)
OS: Amazon Linux 2
→左図のような構成を用意
 コンテナA  コンテナB
EC2インスタンス
CentOS
7-1
CentOS
7-2
8
2台のコンテナを起動
コンテナの起動コマンド (docker run --name “コンテナ名” -it -d イメージ名)
2台のコンテナが起動していることを確認 (docker ps -a)
9
メモリ調査(free)
ホスト
コンテナ
ホストと同じ値
ここの値は正確か?
10
メモリ調査(free)
コンテナ上でfreeコマンドを使った考察
- freeコマンドは、ホストの/proc/meminfoの値を見ている可能性が高い
- ホストのメモリと同値のため、実際にコンテナで利用可能な値を示していない可
能性が高い
ホストの割り当てメモリ
11
CPU調査(ps)
stressコマンドを使って1つのコンテナで負荷をかけた後、psコマンドで確認
CPUの値が上昇
別のコンテナに影響なし
# stress -c 1 -q &
12
CPU調査(ps)
コンテナ上でpsコマンドを使った考察
コンテナはそれぞれ名前空間(PID)を分けて起動していることから、psコマンド
を利用することでコンテナ毎のCPU使用率を取得することが出来た
名前空間:実行中のプロセスに対する隔離を提供し、システムリソースに対する
アクセスを制限する
13
Step2:コンテナのメトリクスについて
深掘りする
14
コンテナのメトリクスについて
コンテナはアクセス可能なシステムのリソース(CPUやメモリなど)を厳密に制限
するために、Linuxカーネルの機能であるcgroupを利用する
cgroup:タスクをグループ化したり、グループ内のタスクに様々なリソース制御
を行う仕組み。先程の名前空間はホスト名やPIDなどのリソースを制御する。
cgroupはCPUやメモリなどの物理的なリソースを制御する。
15
リソースの制御について
実際に起動するコンテナのメモリ上限値を100Mしてみる
cgroupの“memory.limits_in_bytes”で100MBと表示される
ホストからdocker statsコマンドでもLIMITの設定が有効であることを確認
kaka
16
負荷をかけてみる
再度stressコマンドで64MBの負荷をかけ、psコマンドで確認する
RSS(物理メモリ)合計値:2,784+3,020+856+66,176+3,460=76,296KB≒74.5MB
ホストからdocker stats コマンドのMEM USAGEを確認する 66.72MiB 
メモリに関する値が上昇
# stress -m 1 --vm-bytes 64M --vm-hang 0 &
17
負荷をかけてみる
厳密にイコールにならないと推測するが、差分がそれなりにある??
cgroupの”memory.usage_in_bytes”の値も確認する
memory.usage_in_bytesの値:77,041,664byte≒73.47MB
18
公式ドキュメントを確認する
Linuxでは、Docker CLIは合計メモリ使用量からページキャッシュ使用量を差し引いてメモリ使用量を報告します。
APIはこのような
計算を実行せず、クライアントが必要に応じてデータを使用できるように、合計メモリ使用量とページキャッシュからの量を提供しま
す。
https://docs.docker.com/engine/reference/commandline/stats/
Linuxでは、Docker CLIは合計メモリ使用量からページキャッシュ使用量を差し引いてメモリ使用量を
報告します。APIはこのような計算を実行せず、クライアントが必要に応じてデータを使用できるように、
合計メモリ使用量とページキャッシュからの量を提供します。
https://docs.docker.com/engine/reference/commandline/stats/
→docker statsコマンドではページキャッシュが含まれていない
usage_in_bytes:他のカーネルコンポーネントと同様に、メモリcgroupは、最適化を使用して不
要なキャッシュラインの誤った共有を回避します。 usage_in_bytesはメソッドの影響を受け、メモ
リ(およびスワップ)使用の「正確な」値を表示しません。効率的なアクセスのためのファズ値です。
(もちろん、必要な場合は同期されます。)より正確なメモリ使用量を知りたい場合は、
memory.statのRSS + CACHE(+ SWAP)値を使用する必要があります(5.2を参照)。
https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt
→memory.statはRSS+ページキャッシュの合計値を利用する 19
参考: memory.statの値
rss+cache=74,907,648≒71.43MB
20
考察
- CPUはpsやdocker statsコマンドで使用率をみることができた (cpu
測定時のdocker statsコマンドについては割愛)
- メモリは用途に応じてpsやdocker stats / cgroup を使い分ける 
(freeでは求める結果は得られない)
- リソースの値は絶えず変化するため、横串でみるのは少し難しい(測定
するときは軸を決めましょう)
docker stats: 実メモリの利用率を確認
cgroup.memory.stat:キャッシュを含めたメモリ利用量を確認 21
Appendix
補足事項
- 本番環境ではSaas型のモニタリングサービスの利用がオススメ
(GUIを提供/ドキュメントやライブラリが充実)
- 次はk8sのリソース制御についても同様にまとめて発表したい!
22
Appendix
謝辞
今回のコンテンツを作成するにあたり、案件で参画しているチームの方とディスカッ
ションをさせていただいたことで整理することが出来ました。
本当にありがとうございました!!
23
Appendix
参考にさせていただいたサイト
Docker公式:
- https://docs.docker.com/engine/reference/commandline/stats/
- https://docs.docker.com/config/containers/runmetrics/#metrics-from-cgroups-memory-cpu-block-io
- http://docs.docker.jp/engine/articles/runmetrics.html
  メモリについて:
- https://qiita.com/kunihirotanaka/items/70d43d48757aea79de2d
cgroup について:
- https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt
- https://www.itbook.info/network/docker06.html
- https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/resource_management_guide/ch01
24
ご清聴ありがとうございました!
25

More Related Content

PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
PDF
Dockerからcontainerdへの移行
Kohei Tokunaga
 
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
 
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
 
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
 
PPTX
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
PDF
Linux女子部 systemd徹底入門
Etsuji Nakai
 
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
Dockerからcontainerdへの移行
Kohei Tokunaga
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
 
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
Linux女子部 systemd徹底入門
Etsuji Nakai
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 

What's hot (20)

PDF
20分でわかるgVisor入門
Shuji Yamada
 
PDF
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PDF
目grep入門 +解説
murachue
 
PDF
BuildKitの概要と最近の機能
Kohei Tokunaga
 
PDF
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
 
PDF
Google Cloud で実践する SRE
Google Cloud Platform - Japan
 
PDF
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
PPTX
Docker Tokyo
cyberblack28 Ichikawa
 
PDF
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
PDF
Mavenの真実とウソ
Yoshitaka Kawashima
 
PPTX
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
NTT DATA Technology & Innovation
 
PDF
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
 
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
PDF
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
 
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
 
PDF
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
 
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
 
20分でわかるgVisor入門
Shuji Yamada
 
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
目grep入門 +解説
murachue
 
BuildKitの概要と最近の機能
Kohei Tokunaga
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
 
Google Cloud で実践する SRE
Google Cloud Platform - Japan
 
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
Docker Tokyo
cyberblack28 Ichikawa
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
Mavenの真実とウソ
Yoshitaka Kawashima
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
 
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
 
Ad

Similar to コンテナにおけるパフォーマンス調査でハマった話 (20)

PDF
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
Hadoop / Spark Conference Japan
 
PDF
NGINX & OpenShift webinar for Energy Sector
NGINX, Inc.
 
PDF
コンテナ導入概要資料2018
Masahito Zembutsu
 
PDF
Scalable and Cost Effective Systems Architecture on AWS
Eiji Shinohara
 
PDF
コンテナ時代にインフラエンジニアは何をするのか
gree_tech
 
PDF
Using docker infrastructure
Junya Niwa
 
PDF
Cloudera Manager4.0とNameNode-HAセミナー資料
Cloudera Japan
 
PDF
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
Hiroshi Toda
 
PPTX
KubeCon EU報告(ランタイム関連,イメージ関連)
Akihiro Suda
 
PDF
『じゃらん』『ホットペッパーグルメ』を支えるクラウド・データ基盤
Recruit Lifestyle Co., Ltd.
 
PPTX
作られては消えていく泡のように儚いクラスタの運用話
Tsuyoshi Torii
 
PDF
負荷試験入門公開資料 201611
樽八 仲川
 
PDF
cassandra 100 node cluster admin operation
oranie Narut
 
PPTX
[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化
Takahiro Moteki
 
PDF
【HinemosWorld2014】A1-5_01_大企業のシステム基盤として利用されるAWSの運用監視の重要性を考える
Hinemos
 
PDF
Acm2.1 short public
Yuhki Hanada
 
PDF
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop
 
PDF
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
Developers Summit
 
PDF
Distributed data stores in Hadoop ecosystem
NTT DATA OSS Professional Services
 
PDF
運用に自動化を求めるのは間違っているだろうか
Masahito Zembutsu
 
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
Hadoop / Spark Conference Japan
 
NGINX & OpenShift webinar for Energy Sector
NGINX, Inc.
 
コンテナ導入概要資料2018
Masahito Zembutsu
 
Scalable and Cost Effective Systems Architecture on AWS
Eiji Shinohara
 
コンテナ時代にインフラエンジニアは何をするのか
gree_tech
 
Using docker infrastructure
Junya Niwa
 
Cloudera Manager4.0とNameNode-HAセミナー資料
Cloudera Japan
 
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
Hiroshi Toda
 
KubeCon EU報告(ランタイム関連,イメージ関連)
Akihiro Suda
 
『じゃらん』『ホットペッパーグルメ』を支えるクラウド・データ基盤
Recruit Lifestyle Co., Ltd.
 
作られては消えていく泡のように儚いクラスタの運用話
Tsuyoshi Torii
 
負荷試験入門公開資料 201611
樽八 仲川
 
cassandra 100 node cluster admin operation
oranie Narut
 
[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化
Takahiro Moteki
 
【HinemosWorld2014】A1-5_01_大企業のシステム基盤として利用されるAWSの運用監視の重要性を考える
Hinemos
 
Acm2.1 short public
Yuhki Hanada
 
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop
 
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
Developers Summit
 
Distributed data stores in Hadoop ecosystem
NTT DATA OSS Professional Services
 
運用に自動化を求めるのは間違っているだろうか
Masahito Zembutsu
 
Ad

Recently uploaded (9)

PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 

コンテナにおけるパフォーマンス調査でハマった話