From 3b39a090b16817693fc6c2f12e0dc51f2fbe3aef Mon Sep 17 00:00:00 2001 From: Alex Schultz Date: Mon, 23 Mar 2020 10:58:38 -0600 Subject: [PATCH] Use non-legacy fact name for os_workers processorcount is a legacy fact name. Lets switch the newer fact name. Change-Id: I310818ffd03ef92890bc5d9f10ad334b5281b126 Related-Bug: #1868454 --- lib/facter/os_workers.rb | 29 +++++++++++-------- .../facter/os_workers_heat_engine_spec.rb | 8 ++--- spec/unit/facter/os_workers_keystone_spec.rb | 8 ++--- spec/unit/facter/os_workers_large_spec.rb | 6 ++-- spec/unit/facter/os_workers_small_spec.rb | 8 ++--- spec/unit/facter/os_workers_spec.rb | 8 ++--- 6 files changed, 36 insertions(+), 31 deletions(-) diff --git a/lib/facter/os_workers.rb b/lib/facter/os_workers.rb index 6a8a397d..d6878399 100644 --- a/lib/facter/os_workers.rb +++ b/lib/facter/os_workers.rb @@ -1,5 +1,5 @@ # -# We've found that using $::processorcount for workers/threads can lead to +# We've found that using $facts['processors']['count] for workers/threads can lead to # unexpected memory or process counts for people deploying on baremetal or # if they have large number of cpus. This fact allows us to tweak the formula # used to determine number of workers in a single place but use it across all @@ -11,17 +11,26 @@ # This fact can be overloaded by an external fact from /etc/factor/facts.d if # a user would like to provide their own default value. # +# +def get_proc_count + procs = Facter.value('processors') + if procs.key?('count') then + procs['count'].to_i + else + 1 + end +end + Facter.add(:os_workers_small) do has_weight 100 setcode do - processors = Facter.value('processorcount') - [ [ (processors.to_i / 4), 2 ].max, 8 ].min + [ [ (get_proc_count / 4), 2 ].max, 8 ].min end end # # The value above for os_workers performs 3x worse in many cases compared to -# the prevuous default of $::processorcount. +# the previous default of $facts['processors']['count']. # # Based on performance data [1], the following calculation is within 1-2%. # @@ -33,8 +42,7 @@ end Facter.add(:os_workers) do has_weight 100 setcode do - processors = Facter.value('processorcount') - [ [ (processors.to_i / 2), 2 ].max, 12 ].min + [ [ (get_proc_count / 2), 2 ].max, 12 ].min end end @@ -44,8 +52,7 @@ end Facter.add(:os_workers_large) do has_weight 100 setcode do - processors = Facter.value('processorcount') - [ (processors.to_i / 2), 1 ].max + [ (get_proc_count / 2), 1 ].max end end @@ -57,8 +64,7 @@ end Facter.add(:os_workers_heat_engine) do has_weight 100 setcode do - processors = Facter.value('processorcount') - [ [ (processors.to_i / 2), 4 ].max, 24 ].min + [ [ (get_proc_count / 2), 4 ].max, 24 ].min end end @@ -70,7 +76,6 @@ end Facter.add(:os_workers_keystone) do has_weight 100 setcode do - processors = Facter.value('processorcount') - [ [ processors.to_i, 4 ].max, 24 ].min + [ [ get_proc_count, 4 ].max, 24 ].min end end diff --git a/spec/unit/facter/os_workers_heat_engine_spec.rb b/spec/unit/facter/os_workers_heat_engine_spec.rb index 6b9c09f9..8b95739b 100644 --- a/spec/unit/facter/os_workers_heat_engine_spec.rb +++ b/spec/unit/facter/os_workers_heat_engine_spec.rb @@ -2,11 +2,11 @@ require 'spec_helper' describe 'os_workers_heat_engine' do - before { Facter.flush } + before { Facter.clear } context 'with processorcount=1' do before do - Facter.fact(:processorcount).stubs(:value).returns(1) + Facter.fact(:processors).stubs(:value).returns({'count' => 1}) end it 'returns a minimum of 2' do @@ -16,7 +16,7 @@ describe 'os_workers_heat_engine' do context 'with processorcount=8' do before do - Facter.fact(:processorcount).stubs(:value).returns(8) + Facter.fact(:processors).stubs(:value).returns({'count' => 8}) end it 'returns processorcount/2' do @@ -26,7 +26,7 @@ describe 'os_workers_heat_engine' do context 'with processorcount=64' do before do - Facter.fact(:processorcount).stubs(:value).returns(64) + Facter.fact(:processors).stubs(:value).returns({'count' => 64}) end it 'returns a maximum of 24' do diff --git a/spec/unit/facter/os_workers_keystone_spec.rb b/spec/unit/facter/os_workers_keystone_spec.rb index 00cbd556..84209c14 100644 --- a/spec/unit/facter/os_workers_keystone_spec.rb +++ b/spec/unit/facter/os_workers_keystone_spec.rb @@ -2,11 +2,11 @@ require 'spec_helper' describe 'os_workers_keystone' do - before { Facter.flush } + before { Facter.clear } context 'with processorcount=1' do before do - Facter.fact(:processorcount).stubs(:value).returns(1) + Facter.fact(:processors).stubs(:value).returns({'count' => 1}) end it 'returns a minimum of 4' do @@ -16,7 +16,7 @@ describe 'os_workers_keystone' do context 'with processorcount=8' do before do - Facter.fact(:processorcount).stubs(:value).returns(8) + Facter.fact(:processors).stubs(:value).returns({'count' => 8}) end it 'returns processorcount' do @@ -26,7 +26,7 @@ describe 'os_workers_keystone' do context 'with processorcount=32' do before do - Facter.fact(:processorcount).stubs(:value).returns(32) + Facter.fact(:processors).stubs(:value).returns({'count' => 32}) end it 'returns a maximum of 24' do diff --git a/spec/unit/facter/os_workers_large_spec.rb b/spec/unit/facter/os_workers_large_spec.rb index 5df5c08e..4ec239f7 100644 --- a/spec/unit/facter/os_workers_large_spec.rb +++ b/spec/unit/facter/os_workers_large_spec.rb @@ -2,11 +2,11 @@ require 'spec_helper' describe 'os_workers_large' do - before { Facter.flush } + before { Facter.clear } context 'with processorcount=1' do before do - Facter.fact(:processorcount).stubs(:value).returns(1) + Facter.fact(:processors).stubs(:value).returns({'count' => 1}) end it 'returns a minimum of 1' do @@ -16,7 +16,7 @@ describe 'os_workers_large' do context 'with processorcount=8' do before do - Facter.fact(:processorcount).stubs(:value).returns(8) + Facter.fact(:processors).stubs(:value).returns({'count' => 8}) end it 'returns processorcount/2' do diff --git a/spec/unit/facter/os_workers_small_spec.rb b/spec/unit/facter/os_workers_small_spec.rb index e5a1e9e3..e4cd22f7 100644 --- a/spec/unit/facter/os_workers_small_spec.rb +++ b/spec/unit/facter/os_workers_small_spec.rb @@ -2,11 +2,11 @@ require 'spec_helper' describe 'os_workers_small' do - before { Facter.flush } + before { Facter.clear } context 'with processorcount=1' do before do - Facter.fact(:processorcount).stubs(:value).returns(1) + Facter.fact(:processors).stubs(:value).returns({'count' => 1}) end it 'returns a minimum of 2' do @@ -16,7 +16,7 @@ describe 'os_workers_small' do context 'with processorcount=16' do before do - Facter.fact(:processorcount).stubs(:value).returns(16) + Facter.fact(:processors).stubs(:value).returns({'count' => 16}) end it 'returns processorcount/4' do @@ -26,7 +26,7 @@ describe 'os_workers_small' do context 'with processorcount=32' do before do - Facter.fact(:processorcount).stubs(:value).returns(32) + Facter.fact(:processors).stubs(:value).returns({'count' => 32}) end it 'returns a maximum of 8' do diff --git a/spec/unit/facter/os_workers_spec.rb b/spec/unit/facter/os_workers_spec.rb index 78588924..131e3221 100644 --- a/spec/unit/facter/os_workers_spec.rb +++ b/spec/unit/facter/os_workers_spec.rb @@ -2,11 +2,11 @@ require 'spec_helper' describe 'os_workers' do - before { Facter.flush } + before { Facter.clear } context 'with processorcount=1' do before do - Facter.fact(:processorcount).stubs(:value).returns(1) + Facter.fact(:processors).stubs(:value).returns({'count' => 1}) end it 'returns a minimum of 2' do @@ -16,7 +16,7 @@ describe 'os_workers' do context 'with processorcount=8' do before do - Facter.fact(:processorcount).stubs(:value).returns(8) + Facter.fact(:processors).stubs(:value).returns({'count' => 8}) end it 'returns processorcount/2' do @@ -26,7 +26,7 @@ describe 'os_workers' do context 'with processorcount=32' do before do - Facter.fact(:processorcount).stubs(:value).returns(32) + Facter.fact(:processors).stubs(:value).returns({'count' => 32}) end it 'returns a maximum of 12' do