2017-09-07 3 views
2

Contexte:Existe-t-il un moyen d'obtenir la mémoire maximale utilisée par une tâche dans mesos?

I mis en œuvre un Scheduler à Scala sur la base Mesos Scheduler Interface.

Toutes les tâches sont parfaitement orchestrées.

attentes:

Maintenant, je voudrais être en mesure de contrôler la mémoire maximale consommée par les tâches accomplies.

Je m'attends à effectuer cette tâche de surveillance dans mon implémentation de la méthode Scheduler.statusUpdate(), pour chaque tâche avec l'état TASK_FINISHED.

Question:

Dans cette méthode, un SchedulerDriver et un Protos.TaskStatus sont fournis. Donc, y at-il un moyen de récupérer la mémoire maximale utilisée par la tâche correspondante à partir d'un SchedulerDriver et d'un Protos.TaskStatus?

Répondre

2

Mesos expose des informations sur les statistiques de tâche dans slave(1)/monitor/statistics. Vous devez gratter ce point de terminaison sur chaque agent et agréger la réponse pour obtenir la valeur maximale pour une tâche donnée.

1

Selon le type d'isolation de votre agent Mesos, par ex. cgroups/* ou si vous utilisez le conteneuriseur Docker, vous pouvez envisager d'exécuter un service externe sur vos hôtes d'agent qui collectent et agrégent la mémoire et d'autres statistiques d'exécution pour vous. Par exemple, vous pouvez utiliser un démon collecteur tel que cadvisor pour surveiller vos tâches, puis ship ces statistiques sur un magasin de données permanent où elles peuvent être interrogées de manière flexible.