(Meant to group this with the previous KVM CPU pinning patch, but messed up 
the flags for send-email)

On Monday, April 25, 2016 at 1:14:08 PM UTC-4, Emily Bragg wrote:
>
> Signed-off-by: Emily Bragg <[email protected]> 
> --- 
>  lib/hypervisor/hv_kvm/__init__.py            | 14 +++++++------- 
>  test/py/ganeti.hypervisor.hv_kvm_unittest.py | 18 +++++++++--------- 
>  2 files changed, 16 insertions(+), 16 deletions(-) 
>
> diff --git a/lib/hypervisor/hv_kvm/__init__.py 
> b/lib/hypervisor/hv_kvm/__init__.py 
> index 4a03bd8..e626bbf 100644 
> --- a/lib/hypervisor/hv_kvm/__init__.py 
> +++ b/lib/hypervisor/hv_kvm/__init__.py 
> @@ -898,25 +898,25 @@ class KVMHypervisor(hv_base.BaseHypervisor): 
>            p.set_cpu_affinity(cpus) 
>   
>    @classmethod 
> -  def _AssignCpuAffinity(cls, cpu_mask, process_id, thread_dict, 
> -                         worker_cpu_mask): 
> +  def _AssignCpuAffinity(cls, cpu_mask, worker_cpu_mask, process_id, 
> +                         thread_dict): 
>      """Change CPU affinity for running VM according to given CPU mask. 
>   
>      @param cpu_mask: CPU mask as given by the user. e.g. "0-2,4:all:1,3" 
>      @type cpu_mask: string 
> +    @param worker_cpu_mask: CPU mask as given by the user for the worker 
> +      threads. e.g. "0-2,4" 
> +    @type worker_cpu_mask: string 
>      @param process_id: process ID of KVM process. Used to pin entire VM 
>                         to physical CPUs. 
>      @type process_id: int 
>      @param thread_dict: map of virtual CPUs to KVM thread IDs 
>      @type thread_dict: dict int:int 
> -    @param worker_cpu_mask: CPU mask as given by the user for the worker 
> -      threads. e.g. "0-2,4" 
> -    @type worker_cpu_mask: string 
>   
>      """ 
>      worker_cpu_list = utils.ParseCpuMask(worker_cpu_mask) 
>      cls._SetProcessAffinity(process_id, worker_cpu_list) 
> -     
> + 
>      # Convert the string CPU mask to a list of list of ints 
>      cpu_list = utils.ParseMultiCpuMask(cpu_mask) 
>      if len(cpu_list) == 1: 
> @@ -970,7 +970,7 @@ class KVMHypervisor(hv_base.BaseHypervisor): 
>      # Get vCPU thread IDs, to be used if need to pin vCPUs separately 
>      thread_dict = self._GetVcpuThreadIds(instance_name) 
>      # Run CPU pinning, based on configured mask 
> -    self._AssignCpuAffinity(cpu_mask, pid, thread_dict, worker_cpu_mask) 
> +    self._AssignCpuAffinity(cpu_mask, worker_cpu_mask, pid, thread_dict) 
>   
>    def ListInstances(self, hvparams=None): 
>      """Get the list of running instances. 
> diff --git a/test/py/ganeti.hypervisor.hv_kvm_unittest.py b/test/py/
> ganeti.hypervisor.hv_kvm_unittest.py 
> index c8bd838..c7a53b5 100755 
> --- a/test/py/ganeti.hypervisor.hv_kvm_unittest.py 
> +++ b/test/py/ganeti.hypervisor.hv_kvm_unittest.py 
> @@ -630,7 +630,7 @@ class TestKvmCpuPinning(testutils.GanetiTestCase): 
>      self.MockOut(mock.patch(kvm_class + '._GetVcpuThreadIds', 
>                              return_value=[1, 3, 5, 2, 4, 0 ])) 
>      self.params = constants.HVC_DEFAULTS[constants.HT_KVM].copy() 
> -                 
> + 
>    def testCpuPinningDefault(self): 
>      mock_process = mock.MagicMock() 
>      cpu_mask = self.params['cpu_mask'] 
> @@ -638,7 +638,7 @@ class TestKvmCpuPinning(testutils.GanetiTestCase): 
>      hypervisor = hv_kvm.KVMHypervisor() 
>      with mock.patch('psutil.Process', return_value=mock_process): 
>        hypervisor._ExecuteCpuAffinity('test_instance', cpu_mask, 
> worker_cpu_mask) 
> -     
> + 
>      self.assertEqual(mock_process.set_cpu_affinity.call_count, 1) 
>      self.assertEqual(mock_process.set_cpu_affinity.call_args_list[0], 
>                       mock.call(range(0,12))) 
> @@ -649,16 +649,16 @@ class TestKvmCpuPinning(testutils.GanetiTestCase): 
>      mock_process.set_cpu_affinity().return_value = True 
>      mock_process.get_children.return_value = [] 
>      mock_process.reset_mock() 
> -     
> + 
>      cpu_mask = "1:2:4:5:10:15-17" 
>      worker_cpu_mask = self.params['worker_cpu_mask'] 
>      hypervisor = hv_kvm.KVMHypervisor() 
> -     
> + 
>      # This is necessary so that it provides the same object each time 
> instead of 
>      # overwriting it each time. 
>      def get_mock_process(unused_pid): 
>        return mock_process 
> -     
> + 
>      with mock.patch('psutil.Process', get_mock_process): 
>        hypervisor._ExecuteCpuAffinity('test_instance', cpu_mask, 
> worker_cpu_mask) 
>        self.assertEqual(mock_process.set_cpu_affinity.call_count, 7) 
> @@ -666,21 +666,21 @@ class TestKvmCpuPinning(testutils.GanetiTestCase): 
>                         mock.call(range(0,12))) 
>        self.assertEqual(mock_process.set_cpu_affinity.call_args_list[6], 
>                         mock.call([15, 16, 17])) 
> -       
> + 
>    def testCpuPinningEntireInstance(self): 
>      mock_process = mock.MagicMock() 
>      mock_process.set_cpu_affinity = mock.MagicMock() 
>      mock_process.set_cpu_affinity().return_value = True 
>      mock_process.get_children.return_value = [] 
>      mock_process.reset_mock() 
> -     
> + 
>      cpu_mask = "4" 
>      worker_cpu_mask = "5" 
>      hypervisor = hv_kvm.KVMHypervisor() 
> -     
> + 
>      def get_mock_process(unused_pid): 
>        return mock_process 
> -     
> + 
>      with mock.patch('psutil.Process', get_mock_process): 
>        hypervisor._ExecuteCpuAffinity('test_instance', cpu_mask, 
> worker_cpu_mask) 
>        self.assertEqual(mock_process.set_cpu_affinity.call_count, 7) 
> -- 
> 1.9.1 
>
>

Reply via email to