почему процессор & ldquo; insn за цикл & rdquo; отличается в аналогичном процессоре и как & ldquo; MONITOR-MWAIT & rdquo; работать в линуксе?

Spring отходит от файлов XML и сильно использует аннотации. Следующий пример представляет собой простое автономное приложение Spring, которое использует аннотацию вместо XML-файлов.

package com.zetcode.bean;

import org.springframework.stereotype.Component;

@Component
public class Message {

   private String message = "Hello there!";

   public void setMessage(String message){

      this.message  = message;
   }

   public String getMessage(){

      return message;
   }
}

Это простой компонент. Он украшен аннотацией @Component для автоматического обнаружения весенним контейнером.

package com.zetcode.main;

import com.zetcode.bean.Message;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan(basePackages = "com.zetcode")
public class Application {

    public static void main(String[] args) {

        ApplicationContext context
                = new AnnotationConfigApplicationContext(Application.class);

        Application p = context.getBean(Application.class);
        p.start();
    }

    @Autowired
    private Message message;
    private void start() {
        System.out.println("Message: " + message.getMessage());
    }
}

Это основной класс Application. Аннотации @ComponentScan ищут компоненты. Аннотации @Autowired вводят компонент в переменную message. AnnotationConfigApplicationContext используется для создания контекста приложения Spring.

Мой учебник Standalone Spring показывает, как создать автономное приложение Spring с XML и аннотациями.

5
задан blue 24 January 2019 в 13:49
поделиться

1 ответ

Я нашел ответ.

Во-первых, давайте посмотрим на параметр MONITOR / MWAIT в BIOS в ядре 4.18.7. В этом ядре будет использоваться драйвер intel_idle , этот драйвер только проверяет, поддерживает ли система инструкцию mwait, и не заботится о том, включено ли C-состояние. После использования инструкции MONITOR / MWAIT будет использован драйвер intel_idle, а принудительное использование C-состояния будет похоже на использование режима энергосбережения.

Во-вторых, почему insn за цикл отличается? Потому что используется сервис , настроенный , а активный профиль - «производительность с задержкой», значение force_latency равно 1us. Если вы используете C-состояние, будет использоваться уровень C-состояния, задержка которого меньше, чем force_latency;

# cpupower idle-info
CPUidle driver: intel_idle
CPUidle governor: menu
analyzing CPU 0:

Number of idle states: 5
Available idle states: POLL C1 C1E C3 C6
POLL:
Flags/Description: CPUIDLE CORE POLL IDLE
Latency: 0
Usage: 13034605
Duration: 820867557
C1:
Flags/Description: MWAIT 0x00
Latency: 2
Usage: 349471619
Duration: 344311623672
C1E:
Flags/Description: MWAIT 0x01
Latency: 10
Usage: 237
Duration: 55999
C3:
Flags/Description: MWAIT 0x10
Latency: 40
Usage: 350
Duration: 168988
C6:
Flags/Description: MWAIT 0x20
Latency: 133
Usage: 3696
Duration: 17809893

Вы увидите только уровень POLL, задержка которого меньше 1us, а уровень POLL заставит ЦП запустить с инструкцией NOP. В этой ситуации, если вы используете технологию Hyper-Threading, скорость выполнения команды упадет вдвое. Поскольку два логических ядра будут использовать один и тот же ALU, а одно из них выполняет инструкцию NOP, это приведет к тому, что другому придется его ждать.

И если вы сделаете опцию MONITOR / MWAIT отключенной, драйвер intel_idle будет отключен, так что force_latency настроенной службы не будет использоваться, а одна из логических ядер остановится, сделайте другую для использования Эксклюзив ALU.

Наконец, спасибо всем, особенно @Peter Cordes и @osgx, за то, что я проверил BIOS, и команда echo 2^1234567%2 | bc очень красивая!

0
ответ дан blue 24 January 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: