From ae5236321efea3a9e5fa9b9a4cb66ed4cad6f1f5 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Fri, 31 Jan 2020 00:27:07 +0900 Subject: [PATCH] Have doubled workers for keystone service Since we have merged 2 keystone services(public and admin) into one, we need to double keystone workers so that we have the same number of workers, which is necessory to avoid performance degradation. This patch introduced new facter, os_workers_keystone, which returns 2 x os_workers . Change-Id: I737fb14739a69ac12c39c7faf6dd2be1f772daa6 (cherry picked from commit 74e0f5a3170b09632ad4ede7e20d3ebeb4514586) --- lib/facter/os_workers.rb | 13 +++++++ spec/unit/facter/os_workers_keystone_spec.rb | 36 ++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 spec/unit/facter/os_workers_keystone_spec.rb diff --git a/lib/facter/os_workers.rb b/lib/facter/os_workers.rb index b48b71be..6a8a397d 100644 --- a/lib/facter/os_workers.rb +++ b/lib/facter/os_workers.rb @@ -61,3 +61,16 @@ Facter.add(:os_workers_heat_engine) do [ [ (processors.to_i / 2), 4 ].max, 24 ].min end end + +# +# Since we have merged keystone admin and keystone public into a single +# keystone instance, we need doubled workers to have the same number +# of workers in total to avoid performance degradation. +# +Facter.add(:os_workers_keystone) do + has_weight 100 + setcode do + processors = Facter.value('processorcount') + [ [ processors.to_i, 4 ].max, 24 ].min + end +end diff --git a/spec/unit/facter/os_workers_keystone_spec.rb b/spec/unit/facter/os_workers_keystone_spec.rb new file mode 100644 index 00000000..00cbd556 --- /dev/null +++ b/spec/unit/facter/os_workers_keystone_spec.rb @@ -0,0 +1,36 @@ +require 'spec_helper' + +describe 'os_workers_keystone' do + + before { Facter.flush } + + context 'with processorcount=1' do + before do + Facter.fact(:processorcount).stubs(:value).returns(1) + end + + it 'returns a minimum of 4' do + expect(Facter.fact(:os_workers_keystone).value).to eq(4) + end + end + + context 'with processorcount=8' do + before do + Facter.fact(:processorcount).stubs(:value).returns(8) + end + + it 'returns processorcount' do + expect(Facter.fact(:os_workers_keystone).value).to eq(8) + end + end + + context 'with processorcount=32' do + before do + Facter.fact(:processorcount).stubs(:value).returns(32) + end + + it 'returns a maximum of 24' do + expect(Facter.fact(:os_workers_keystone).value).to eq(24) + end + end +end