如何衡量Mesos中每个容器的CPU利用率?

时间:2016-10-31 16:44:05

标签: containers monitoring cpu-usage mesos marathon

我在Mesos的容器上运行了许多应用程序,通过马拉松进行管理。我通过马拉松(如1,.5等)部署时为每个应用程序分配了CPU。 但是马拉松中的CPU分配,并不意味着它的1个CPU或半个CPU。它只是意味着它的分时率。此外,每个容器都可以访问其主机上的所有CPU。

现在,我想测量Mesos从站上每个Container的CPU效率,这样我就可以减少或增加Marathon中每个App的CPU分配。我只是想让资源利用率更高效。

我可以使用https://github.com/bobrik/collectd-mesos-tasks,但问题是CPU利用率指标与Marathon中的CPU分配无关。

2 个答案:

答案 0 :(得分:4)

在Mesos WebUI中,您可以看到执行程序使用了多少CPU

Here是从/monitor/statistics端点收集统计信息并计算CPU使用率的代码。

您对cpus_total_usage感兴趣,因此以下方法适合您

我们假设ab是某个时间点统计信息的快照。要计算cpus_total_usage,我们需要计算在系统和用户空间中花费的执行时间,并将其除以ab之间的时间。

cpus_total_usage = (
                    (b.cpus_system_time_secs - a.cpus_system_time_secs) +
                    (b.cpus_user_time_secs - a.cpus_user_time_secs)) / 
                    (b.timestamp - a.timestamp)
                   )
cpu_percent      = cpus_total_usage / cpu_limit * 100%

答案 1 :(得分:3)

根据您自己想要投入多少工作,您可以使用Marathon Event Bus,更常见的是使用Marathon HTTP API(例如this endpoint)以及{{{{}等低级工具。 3}}或cAdvisor自己做数学运算。如果您不想自己编写内容,我建议您使用cinfSysdigDatadog为您做繁重的工作。