From cf1c9a055911070b3b7923dc4da2dc9c1cac1346 Mon Sep 17 00:00:00 2001 From: Jim Ladd Date: Thu, 12 Sep 2019 01:09:38 -0700 Subject: [PATCH] Add awx settings for resource profiling --- awx/conf/fields.py | 4 ++-- awx/main/conf.py | 44 ++++++++++++++++++++++++++++++++++++++++ awx/settings/defaults.py | 12 +++++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) diff --git a/awx/conf/fields.py b/awx/conf/fields.py index ca731de579..c5516b7c2e 100644 --- a/awx/conf/fields.py +++ b/awx/conf/fields.py @@ -10,8 +10,8 @@ from django.utils.translation import ugettext_lazy as _ # Django REST Framework from rest_framework.fields import ( # noqa - BooleanField, CharField, ChoiceField, DictField, EmailField, IntegerField, - ListField, NullBooleanField + BooleanField, CharField, ChoiceField, DictField, EmailField, + IntegerField, ListField, NullBooleanField ) logger = logging.getLogger('awx.conf.fields') diff --git a/awx/main/conf.py b/awx/main/conf.py index f528821b8e..3c3f53cadc 100644 --- a/awx/main/conf.py +++ b/awx/main/conf.py @@ -8,6 +8,7 @@ from django.utils.translation import ugettext_lazy as _ # Django REST Framework from rest_framework import serializers +from rest_framework.fields import FloatField # Tower from awx.conf import fields, register, register_validate @@ -345,6 +346,49 @@ register( category_slug='jobs', ) +register( + 'AWX_RESOURCE_PROFILING_ENABLED', + field_class=fields.BooleanField, + default=False, + label=_('Enable resource profiling on all tower jobs'), + help_text=_('If set, resource profiling data will be collected on all jobs.'), # noqa + category=_('Jobs'), + category_slug='jobs', +) + +register( + 'AWX_RESOURCE_PROFILING_CPU_POLL_INTERVAL', + field_class=FloatField, + default='0.25', + label=_('Interval (in seconds) between polls for cpu usage.'), + help_text=_('Interval (in seconds) between polls for cpu usage.'), + category=_('Jobs'), + category_slug='jobs', + required=False, +) + +register( + 'AWX_RESOURCE_PROFILING_MEMORY_POLL_INTERVAL', + field_class=FloatField, + default='0.25', + label=_('Interval (in seconds) between polls for memory usage.'), + help_text=_('Interval (in seconds) between polls for memory usage.'), + category=_('Jobs'), + category_slug='jobs', + required=False, +) + +register( + 'AWX_RESOURCE_PROFILING_PID_POLL_INTERVAL', + field_class=FloatField, + default='0.25', + label=_('Interval (in seconds) between polls for PID count.'), + help_text=_('Interval (in seconds) between polls for PID count.'), + category=_('Jobs'), + category_slug='jobs', + required=False, +) + register( 'AWX_TASK_ENV', field_class=fields.KeyValueField, diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index a2b1e9926b..9694992f51 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -636,6 +636,18 @@ AWX_PROOT_SHOW_PATHS = [] # Note: This setting may be overridden by database settings. AWX_PROOT_BASE_PATH = "/tmp" +# Disable resource profiling by default +AWX_RESOURCE_PROFILING_ENABLED = False + +# Interval (in seconds) between polls for cpu usage +AWX_RESOURCE_PROFILING_CPU_POLL_INTERVAL = '0.25' + +# Interval (in seconds) between polls for memory usage +AWX_RESOURCE_PROFILING_MEMORY_POLL_INTERVAL = '0.25' + +# Interval (in seconds) between polls for PID count +AWX_RESOURCE_PROFILING_PID_POLL_INTERVAL = '0.25' + # User definable ansible callback plugins # Note: This setting may be overridden by database settings. AWX_ANSIBLE_CALLBACK_PLUGINS = ""