← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1746393] Re: 'cpu_thread_policy' impacts on emulator threads

 

Reviewed:  https://review.openstack.org/538700
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=113724859a8f1dc3f004636e8c016d060409a1f6
Submitter: Zuul
Branch:    master

commit 113724859a8f1dc3f004636e8c016d060409a1f6
Author: Tetsuro Nakamura <nakamura.tetsuro@xxxxxxxxxxxxx>
Date:   Sun Jan 28 16:39:33 2018 +0900

    Not use thread alloc policy for emulator thread
    
    When CPUEmulatorThreadsPolicy and CPUThreadAllocationPolicy were both
    set to isolate, pcpus for emulator threads were also allocated
    according to the thread isolation policy. (i.e. only chosen from a
    siblings_set where full threads are available.)
    
    For optimization purposes, this patch allows emulator threads and the
    VM's I/O threads to be collocated on the same sibling sets of pCPUs
    even when both I/O thread and emulator thread are set to "isolate".
    
    Note that this patch adds a new function of _get_reserved(), where
    cpus are reserved for I/O thread and emulator thread, pulling the part
    out from _get_pinning().
    
    Change-Id: I23a5142398900873364bb07d8e91595d02a7a13d
    Closes-Bug: #1746393


** Changed in: nova
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1746393

Title:
  'cpu_thread_policy' impacts on emulator threads

Status in OpenStack Compute (nova):
  Fix Released

Bug description:
     In bug#1744965(https://bugs.launchpad.net/nova/+bug/1744965), it is reported that when emulator_threads_policy=isolate and cpu_threads_policy=prefer(default) is not optimal.
     For example, when the host is configured as below and a VM requests 2 vCPUs with emulator_threads_policy=isolate, the ideal result is getting the vCPUs from (CPU#0, CPU#2) and reserving CPU#1 for emulator_threads. But the actual result is no valid host, which means there are not enough resources available.

  * host configuration
  (Note CPU #3 is missing because it is excluded by 'vcpu_pin_set' in nova.conf)
  ----------
    socket 0
      core 0
        thread 0  (CPU #0)
        thread 1  (CPU #2)
      core 1
        thread 0  (CPU #1)
  ----------

  
     This bug report of #1746393 reports that the same thing can be said about emulator_threads_policy=isolate and *cpu_threads_policy=isolate* case.
     For example, when the host is configured as above and a VM requests 1 vCPU with cpu_threads_policy=isolate, the ideal result is getting the vCPU from CPU#0 (with CPU#2 for isolation purpose) and reserving CPU#1 for emulator_threads. But the actual result is no valid host, which means there are not enough resources available.

    This should be fixed in a different way from bug#1744965, because
  the code path for getting and reserving host's pCPUs differs between
  cpu_threads_policy=isolate case and cpu_threads_policy=prefer case.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1746393/+subscriptions


References