From 4f7479d94de81c0633d9ff4247bbb455582b35e1 Mon Sep 17 00:00:00 2001
From: Sergey Bondarev <s.bondarev@southbridge.ru>
Date: Mon, 26 Mar 2018 17:25:51 +0300
Subject: [PATCH] add etc tunning options
 https://coreos.com/etcd/docs/latest/tuning.html

etcd_snapshot_count
and
ionice priority
---
 roles/etcd/defaults/main.yml            |  7 +++++++
 roles/etcd/templates/etcd-events.env.j2 |  3 +++
 roles/etcd/templates/etcd.env.j2        |  3 +++
 roles/etcd/templates/etcd.j2            | 15 +++++++++------
 4 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/roles/etcd/defaults/main.yml b/roles/etcd/defaults/main.yml
index 4986ad257..5f16db1d1 100644
--- a/roles/etcd/defaults/main.yml
+++ b/roles/etcd/defaults/main.yml
@@ -22,6 +22,13 @@ etcd_script_dir: "{{ bin_dir }}/etcd-scripts"
 etcd_heartbeat_interval: "250"
 etcd_election_timeout: "5000"
 
+#etcd_snapshot_count: "10000"
+
+# Parameters for ionice
+# -c takes an integer between 0 and 3 or one of the strings none, realtime, best-effort or idle.
+# -n takes an integer between 0 (highest priority) and 7 (lowest priority)
+#etcd_ionice: "-c2 -n0"
+
 etcd_metrics: "basic"
 
 # Limits
diff --git a/roles/etcd/templates/etcd-events.env.j2 b/roles/etcd/templates/etcd-events.env.j2
index c168ab03e..e7dffbbfe 100644
--- a/roles/etcd/templates/etcd-events.env.j2
+++ b/roles/etcd/templates/etcd-events.env.j2
@@ -13,6 +13,9 @@ ETCD_NAME={{ etcd_member_name }}-events
 ETCD_PROXY=off
 ETCD_INITIAL_CLUSTER={{ etcd_events_peer_addresses }}
 ETCD_AUTO_COMPACTION_RETENTION={{ etcd_compaction_retention }}
+{% if etcd_snapshot_count is defined %}
+ETCD_SNAPSHOT_COUNT={{ etcd_snapshot_count }}
+{% endif %}
 
 # TLS settings
 ETCD_TRUSTED_CA_FILE={{ etcd_cert_dir }}/ca.pem
diff --git a/roles/etcd/templates/etcd.env.j2 b/roles/etcd/templates/etcd.env.j2
index 6a917d127..178366d00 100644
--- a/roles/etcd/templates/etcd.env.j2
+++ b/roles/etcd/templates/etcd.env.j2
@@ -13,6 +13,9 @@ ETCD_NAME={{ etcd_member_name }}
 ETCD_PROXY=off
 ETCD_INITIAL_CLUSTER={{ etcd_peer_addresses }}
 ETCD_AUTO_COMPACTION_RETENTION={{ etcd_compaction_retention }}
+{% if etcd_snapshot_count is defined %}
+ETCD_SNAPSHOT_COUNT={{ etcd_snapshot_count }}
+{% endif %}
 
 # TLS settings
 ETCD_TRUSTED_CA_FILE={{ etcd_cert_dir }}/ca.pem
diff --git a/roles/etcd/templates/etcd.j2 b/roles/etcd/templates/etcd.j2
index 9ac08e073..a6628d8fb 100644
--- a/roles/etcd/templates/etcd.j2
+++ b/roles/etcd/templates/etcd.j2
@@ -6,16 +6,19 @@
   -v /etc/ssl/certs:/etc/ssl/certs:ro \
   -v {{ etcd_cert_dir }}:{{ etcd_cert_dir }}:ro \
   -v {{ etcd_data_dir }}:{{ etcd_data_dir }}:rw \
-  {% if etcd_memory_limit is defined %}
+{% if etcd_memory_limit is defined %}
   --memory={{ etcd_memory_limit|regex_replace('Mi', 'M') }} \
-  {% endif %}
-  {% if etcd_cpu_limit is defined %}
+{% endif %}
+{% if etcd_cpu_limit is defined %}
   --cpu-shares={{ etcd_cpu_limit|regex_replace('m', '') }} \
-  {% endif %}
-  {% if etcd_blkio_weight is defined %}
+{% endif %}
+{% if etcd_blkio_weight is defined %}
   --blkio-weight={{ etcd_blkio_weight }} \
-  {% endif %}
+{% endif %}
   --name={{ etcd_member_name | default("etcd") }} \
   {{ etcd_image_repo }}:{{ etcd_image_tag }} \
+{% if etcd_ionice is defined %}
+  /bin/ionice {{ etcd_ionice }} \
+{% endif %}
   /usr/local/bin/etcd \
   "$@"
-- 
GitLab