Почему моя служба systemd не запускается при загрузке, но можно ли ее запустить вручную?

Краткий ответ

Количество физических ядер:

> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores   : 2

Количество виртуальных ядер (, например. Удвоенное количество физических ядер с технологией Hyper-Threading):

> cat /proc/cpuinfo | grep -c "cpu cores"
4

Если у вас более одного ЦП/процессора (в в этом смысле)на материнской плате, это не работает должным образом. См. раздел «Несколько процессоров на материнской плате».Это может иметь место, если вы работаете на вычислительном кластере или на высокопроизводительной -настольной рабочей станции для целей CAD/инженерного -.

Длинный ответ

Команда cat /proc/cpuinfoдолжна вывести количество физических ядер в строке cpu cores. Но он выводит эту информацию для каждого виртуального ядра. Таким образом, если вы хотите получить номер физического ядра, вы просто берете первое вхождение строки cpu cores, то есть

> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores   : 2

В качестве альтернативы, если вы ищете количество виртуальных ядер, вы подсчитываете, сколько раз встречается строка cpu cores, то есть

> cat /proc/cpuinfo | grep -c "cpu cores"
4

Пример

У меня естьIntel(R) Core(TM) i7-3740QM CPU @ 2.70GHz(4 физических ядра, гиперпоточность ). Посмотрим, что у меня получится:

> cat /proc/cpuinfo | grep "cpu cores"
cpu cores   : 4
cpu cores   : 4
cpu cores   : 4
cpu cores   : 4
cpu cores   : 4
cpu cores   : 4
cpu cores   : 4
cpu cores   : 4

Количество физических ядер:

> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores   : 4

Количество виртуальных ядер:

> cat /proc/cpuinfo | grep -l "cpu cores"
8

Вы также можете взять последний найденный номер процессора и увеличить его на единицу

> cat /proc/cpuinfo | grep "processor" | tail -1
processor   : 7
# +1

Несколько ЦП на материнскую плату

Я только что просмотрел один узел вычислительного кластера, над которым сейчас работаю :1 узел имеет 4 процессора (Intel Xeon )с 8 физическими ядрами на каждом; каждый процессор поддерживает многопоточность; следовательно, каждый ЦП имеет 16 виртуальных ядер; суммируя, на одном узле 32 физических и 64 виртуальных ядра;

cat /proc/cpuinfoвыводит информацию для каждого виртуального ядра. Таким образом, мы получаем 64 «пакета» информации. Если у нас есть такая установка, нам нужно рассмотреть строку physical idв cat /proc/cpuinfo.

Вот что я получаю:

> cat /proc/cpuinfo | grep -m 1 "cpu cores"
cpu cores   : 8

> cat /proc/cpuinfo | grep -c "cpu cores"
64

> cat /proc/cpuinfo | grep "physical id" | tail -1
physical id   : 3
# this result +1 => number of CPUs

Таким образом, «число позади cpu cores» x «число позади physical id+ 1» — это количество физических ядер одного нашего узла (8 x (3 + 1 )). 64 — это количество виртуальных ядер.

Номенклатура

Поскольку все используют ядра, ЦП и процессор в другом контексте, я ввожу терминологию для своего ответа здесь:

  • процессор :вся аппаратная часть (напр.мой процессор Intel® Core™ i7 -3740QM)
  • ЦП :ЦП = процессор
  • ядро ​​или физическое ядро ​​:количество физических вычислительных блоков в ЦП
  • поток или виртуальное ядро ​​:количество потоков, которые могут выполняться параллельно на одном процессоре; если (процессор Intel -)способен выполнять гиперпоточность, количество виртуальных ядер вдвое превышает количество физических ядер (Я не уверен, как другие поставщики процессоров называют эту функцию );

__Пример:__

  • процессор :Intel (R )Core (TM )i7 -3740QM CPU @ 2,70 ГГц
  • источник:Intel Ark

Данные:

  • Номер ЦП :1
  • номер процессора :1
  • ядер (или физических ядер ):4
  • потоки (или виртуальные ядра ):8
3
04.10.2019, 17:25
3 ответа

Может быть, так просто?:

systemctl enable wap.service

3
28.04.2021, 23:29

Служебные файлы Systemd считываются, а их порядок и зависимости связываются с графиками только в том случае, если они включены, обычно при наличии символических ссылок в одном из требуемых каталогов для их цели или службы (обычно в /etc/systemd/system/ для пользователя -созданы сервисы ). Операция systemctl enable создаст экземпляры этих ссылок из тех, которые перечислены в разделе [Install] служебного файла.

0
28.04.2021, 23:29

Причиной моей проблемы оказалась -несуществующая цель. Вместо default.target(, который является символической ссылкой, по крайней мере, в CentOS, но не соответствует уровню запуска ), я должен был использовать multi-user.target, который соответствует уровню запуска 3. Тогда правильная конфигурация становится:

[Install]
WantedBy=multi-user.target

Спасибо всем за уделенное время и отзывы!

1
28.04.2021, 23:29

Теги

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