kubectl top podとdocker statsの結果が違うのはなぜ?
何故かkubectl top podとdocker statsの結果は同じになると思い込んでいたが、やってみると異なる値が。
気になったのでざっと調べてみた。
詳細は上記を読んでもらうとして、ざっくり言うと
- (当たり前だが)計算の仕方が異なる
kubectl top podはcAdvisorが収集するcontainer_memory_working_set_bytesdocker 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系の結果が異なることはあるのだろうか。
標準化されていそうな気はするが。