我在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分配无关。
答案 0 :(得分:4)
在Mesos WebUI中,您可以看到执行程序使用了多少CPU
Here是从/monitor/statistics
端点收集统计信息并计算CPU使用率的代码。
您对cpus_total_usage
感兴趣,因此以下方法适合您
我们假设a
和b
是某个时间点统计信息的快照。要计算cpus_total_usage
,我们需要计算在系统和用户空间中花费的执行时间,并将其除以a
和b
之间的时间。
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)