5 Replies Latest reply on Mar 18, 2016 3:52 AM by Finikiez

    Планировщик esxi и Turbo Boost

    patcher_tula Enthusiast

      Всем привет!

       

      esxi 5.5 U3.

      Хост, 2 сокета по 6 ядер (12HT) 2,6Gh Xeon 2630v2 (Turbo Boost 3,1)

      Есть машинка, 4vCPU, у которой 1vCPU бывает занят на 100%.

      Так вот esxi "размазывает" загрузку этого vCPU по всем ядрам NUMA pCPU, а если включить affinity, то размажет по этим 4-м.

      Не лучше было бы планировщику "припинить" эти vCPU к pCPU, чтобы нагруженным было всегда одно и то же ядро, в винде то это загруженное ядро не меняется!

      Понятно, когда много машин на хосте и всем лучше по чуть-чуть, но вовремя, чем каждой по много, но редко. Но тут всего 2 машины по 4vCPU на 2*12 pCPU!

      А так как нагрузка на одно ядро не высокое, то Turbo Boost не включается. А на 3,1 Ghz задача в машине крутилась бы куда быстрее.

      Поставить настройку Latency, которая выделит машине эти ядра тоже не вариант, там тоже не загружается ядро.

      Можно ли еще как-то повлиять на поведение планировщика?

        • 1. Re: Планировщик esxi и Turbo Boost
          shteynman Hot Shot

          если я правильно вас понимаю то вы хотите что бы виртуальная машина с 4 vPCU вместо 4 физ. ядер использовала только одно?, А не боитесь что из за того что ОС думает что у нее 4 ядра будет создавать очереди к процессору (в понятии vmware параметр Ready будет не приемлемым ведь физ ядро то только 1)

          • 2. Re: Планировщик esxi и Turbo Boost
            Finikiez Master
            vExpert

            100% загрузка CPU в гостевой ОС не всегда означает, что физическое ядро нагружается на 100%.

             

            В вашем случае я бы начал с того, что выставил резервации по CPU в нужное количество Мгц. И выставил power management setting в High performance.

             

            BIOS Power Policies Affect Performance - VMware vSphere Blog - VMware Blogs

            • 3. Re: Планировщик esxi и Turbo Boost
              patcher_tula Enthusiast

              Виртулке выделены 4vCPU на случай, когда они ей понадобятся, но большая часть работы в ней однопоточное приложение.

              В винде это приложение не "скачет" по ядрам, если начало на каком-то, то на нем так и будет вертеться.

              На сколько я понимаю, Ready может расти, только если на том же pCPU должна исполняться другая VM, но тут конкуренции у машин за pCPU нет.

              • 4. Re: Планировщик esxi и Turbo Boost
                patcher_tula Enthusiast

                Если в гостевой процесс именно "молотит", а не ждет данные с диска или сети, тогда загрузка в гостевой 100% должна приводить к 100% загрузке pCPU.

                Резервация работает, когда VM не хватает Мгц из-за других машин, тут VM одна.

                High performance стоит.

                Я так понимаю, что дело в том, что при переключении машины в состояние RUN (загрузка регистров pCPU из VMCB), vCPU грузятся на произвольные pCPU, поэтому загруженное в винде ядро №0, к примеру, при следующем таймслоте может оказаться на другом pCPU. При 1 VM на этом сокете происходит каждый раз "прогрев" кешей, а если бы планировщик запонимал, что vCPU1=pCPU1, vCPU2=pCPU2, и т.д., то виртуальные ядра VM всегда выполнялись бы на тех же pCPU, не было бы потерь на "прогрев" кешей и при высокой загрузке 1 pCPU включался бы Turbo boost.


                Понятно, что суть виртуализации как можно больше разместить VM на имеющемся железе, тогда в данном случае не хватает какой-то настройки, типа CPU Affinity lock. Даже при sensetive=Hight, vCPU бегают по pCPU. Выделите машине 2 ядра, sensetive=Hight, запустите что-то однопоточное. 2pCPU будут загружены равномерно ~50%, а эффективнее было бы (опять же в данном конкретном случае, когда нет CPU overhead), чтобы грузилось именно 1pCPU ядро, чтобы кеш не прогревать и Turbo boost заюзать.

                По моим тестам, потеря в производительности при невключении Turbo boost (ну и "размазывания" vCPU по pCPU):

                 

                Hardware Virt   %%
                WinRar MT5099453512,42
                WinRar ST1259106218,54




                • 5. Re: Планировщик esxi и Turbo Boost
                  Finikiez Master
                  vExpert

                  если вы хотите притянуть vCPU к pCPU, то все что вам нужно - это сделать cpu  affinity.

                  https://pubs.vmware.com/vsphere-51/topic/com.vmware.vsphere.resmgmt.doc/GUID-F40F901D-C1A7-43E2-90AF-E6F98C960E4B.html

                   

                  Но я сомневаюсь, что это вам сильно поможет.

                   

                  >Резервация работает, когда VM не хватает Мгц из-за других машин

                  В двух словах, это не совсем так.

                  Резервация - это то, что гарантируется ВМ в любом случае. Не важно есть борьба за ресурсы или ее нет.

                   

                  P.S. Кстати я в практике встречал, что однопоточные приложения быстрее работают быстрее на виртуалках с 1 vCPU, чем на многопроцессорных.

                  Попробуйте ради практики оставить 1 vCPU и посмотреть что будет.

                  Я не знаю почему так, но как минимум бест практис - назначать ресурсов ровно столько сколько нужно.