Что делает a
ps -p 1983 -f # 1983 being the PID your screenshot shows
скажите Вам об этом?
Вы должны посмотреть количество сокетов и ядер на сокет. В этом случае у вас есть 1 физический процессор (сокет), который имеет 4 ядра (ядра на сокет).
При передаче аргументов в SSH требуется больше кавычек. Попробуйте:
ssh localhost "df -k / | awk '{print \$3/1024/1024/1024}'"
0
0.00623375
Обратите внимание на \
перед $3
.
find $(find -name "[0-9][0-9][0-9][0-9]") -name "[test]*" -mtime -7 -exec rm -i {} \; || echo "There are no recovery files older than 7 days"
Оператор | |
( или ) просматривает результат команды слева и запускает команду справа, только если команда слева не удалась (на основе кода возврата).
Если при поиске не будут найдены соответствующие файлы, возвращается значение 1, в результате чего | |
запускает команду echo
.
Можно также использовать команду cat/proc/cpuinfo
, которая выведет часть данных для каждого ядра. Каждый блок начинается с этой информации:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
(...)
Ядра нумеруются начиная с 0, поэтому, если последний блок говорит processor: 3
, как в этом случае, у машины есть 4 ядра.
Семейство процессоров здесь не имеет значения.
В вашем случае всего 4 полных ядра.
Также важным может быть "Поток(и) на одно ядро". Но у вас есть 1, так что не в вашем случае.
[root@xxxxx ~]# dmidecode -t 4 | egrep -i "Designation|Intel|core|thread"
Socket Designation: CPU1
Manufacturer: Intel
HTT (Multi-threading)
Version: Intel(R) Xeon(R) CPU L5640 @ 2.27GHz
Core Count: 6
Core Enabled: 6
Thread Count: 12
Socket Designation: CPU2
Manufacturer: Intel
HTT (Multi-threading)
Version: Intel(R) Xeon(R) CPU L5640 @ 2.27GHz
Core Count: 6
Core Enabled: 6
Thread Count: 12
Чтобы получить полную картину, вам нужно посмотреть количество потоков на ядро, ядер на сокет и сокеты . Если вы умножите эти числа, вы получите количество процессоров в вашей системе.
CPUs = потоков на ядро X ядер на сокет X сокетов
CPU - это то, что вы видите при запуске htop
(это не приравнивается к физическим процессорам).
Вот пример настольного компьютера:
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
И сервер:
$ lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s): 32
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
Вывод nproc
соответствует количеству ЦП из lscpu
. Для настольного компьютера это должно соответствовать 8 ЦП, указанным lscpu
:
$ nproc --all
8
Вывод / proc / cpuinfo
должен соответствовать этой информации, например, на рабочем столе В системе выше мы видим, что имеется 8 процессоров (ЦП) и 4 ядра (идентификатор ядра 0–3):
$ grep -E 'processor|core id' /proc/cpuinfo
processor : 0
core id : 0
processor : 1
core id : 0
processor : 2
core id : 1
processor : 3
core id : 1
processor : 4
core id : 2
processor : 5
core id : 2
processor : 6
core id : 3
processor : 7
core id : 3
Ядра процессора
, указанные в / proc / cpuinfo
, соответствуют Количество ядер на сокет
, о которых сообщает lscpu
.Для настольной машины, приведенной выше, это должно соответствовать 4 ядрам на сокет, о которых сообщает lscpu:
$ grep -m 1 'cpu cores' /proc/cpuinfo
cpu cores : 4
Чтобы конкретно ответить на ваш вопрос, вы указываете, сколько ядер у вас есть, умножая количество ядер, которые у вас есть на сокет, на количество сокетов. у тебя есть.
Ядра = Количество ядер на сокет X Сокетов
В приведенных выше примерах систем у рабочего стола 4 ядра:
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 4
В то время как у сервера их 16:
$ echo "Cores = $(( $(lscpu | awk '/^Socket\(s\)/{ print $2 }') * $(lscpu | awk '/^Core\(s\) per socket/{ print $4 }') ))"
Cores = 16
Другая полезная утилита - dmidecode
, которая выводит информация о сокете. В случае серверной системы, указанной выше, мы ожидаем увидеть 8 ядер на сокет и 16 потоков на сокет:
$ sudo dmidecode -t 4 | grep -E 'Socket Designation|Count'
Socket Designation: CPU1
Core Count: 8
Thread Count: 16
Socket Designation: CPU2
Core Count: 8
Thread Count: 16
Команда lscpu
имеет ряд полезных опций, которые вы можете проверить, например пример:
$ lscpu --all --extended
$ lscpu --all --parse=CPU,SOCKET,CORE | grep -v '^#'
Подробнее см. man lscpu
.
Вкратце:
$ grep -c processor /proc/cpuinfo
8
Это все, что вам нужно. Это количество ядер в сети, независимо от того, включена ли гиперпоточность.
$ ls -d /sys/devices/system/cpu/cpu* | wc -l
8
Другой простой способ.
Я нашел так:
echo $((`cat /sys/devices/system/cpu/present | sed 's/0-//'` + 1))
A простой способ определить количество процессоров - ввести следующие команды:
cat /proc/interrupts | egrep -i 'cpu'
Чтобы ответ не был запутанным, вам нужно понять пару простых концепций компьютерной архитектуры:
Существуют различные типы инструкций. Логика принятия решений внутри центрального процессора направляет различные инструкции в различные аппаратные блоки. Например, арифметические инструкции выполняются ALU (арифметико-логическим блоком), а инструкции загрузки/записи из памяти выполняются каким-либо блоком памяти.
Под ядром понимается набор фактического оборудования для выполнения инструкций (т.е. каждое ядро имеет АЛУ, блок памяти и т.д.)
Вы можете иметь несколько процессоров, которые совместно используют одно ядро - это называется гиперпоточностью.
Сокет сокет - это физический слот на материнской плате, в который вставляется микросхема. Этот чип имеет определенное количество ядер.
Пример ОП:
CPU(s): 4
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Другой пример:
CPU(s): 16
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 2
два физических сокета, каждый из которых содержит чип с 4 физическими ядрами, итого 8 ядер. Два потока выдают инструкции каждому ядру (у этой машины есть гиперпоточность), что означает, что к каждому ядру должно быть подключено два процессора, что в сумме составляет 8 * 2 = 16 процессоров
Первая машина может выполнять ровно четыре инструкции в любой момент времени, точка. Вторая машина может выполнять от 8 до 16 инструкций в любой момент времени: 16 будет достигнуто только тогда, когда каждая пара CPU будет выполнять разные типы инструкций и сможет разделить ядро без ожидания.