kubectl top podとdocker statsの結果が違うのはなぜ?
何故かkubectl top pod
とdocker stats
の結果は同じになると思い込んでいたが、やってみると異なる値が。
気になったのでざっと調べてみた。
詳細は上記を読んでもらうとして、ざっくり言うと
- (当たり前だが)計算の仕方が異なる
kubectl top pod
はcAdvisorが収集するcontainer_memory_working_set_bytes
docker stats
は/sys/fs/cgroup/memory
にある項目のusage_in_bytes
-cache
の値
cAdvisorのソースをみてみると、workingSetは下記で計算をしている。
多分こちらも/sys/fs/cgroup/memory
の項目から計算している模様。
(そもそもWorkingSetってどういう意味?みたいな議論もあるが、それは一旦置いておくことにする。)
cadvisor/handler.go at master · google/cadvisor · GitHub
コンテナランタイムごとにstats
系の結果が異なることはあるのだろうか。
標準化されていそうな気はするが。