Количество физических ядер:
> 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 — это количество виртуальных ядер.
Поскольку все используют ядра, ЦП и процессор в другом контексте, я ввожу терминологию для своего ответа здесь:
__Пример:__
Данные:
Служебные файлы Systemd считываются, а их порядок и зависимости связываются с графиками только в том случае, если они включены, обычно при наличии символических ссылок в одном из требуемых каталогов для их цели или службы (обычно в /etc/systemd/system/ для пользователя -созданы сервисы ). Операция systemctl enable создаст экземпляры этих ссылок из тех, которые перечислены в разделе [Install] служебного файла.
Причиной моей проблемы оказалась -несуществующая цель. Вместо default.target
(, который является символической ссылкой, по крайней мере, в CentOS, но не соответствует уровню запуска ), я должен был использовать multi-user.target
, который соответствует уровню запуска 3. Тогда правильная конфигурация становится:
[Install]
WantedBy=multi-user.target
Спасибо всем за уделенное время и отзывы!