LINUX.ORG.RU

Как проверить руками (наивно, по-простому) сколько (целочисленных) кор у процессора?

 ,


1

1

Всем привет.

Одновременное зипование файла из оперативы – это хороший тест для числа кор? У меня почему-то получается что плохой.

140МБ файл в памяти (mount -t tmpfs -o size=500m tmpfs /mnt/mem1), внутри него – (ужЕ) сжатые данные.

Пробую скриптик типа:

#!/bin/bash

time gzip -c /mnt/mem1/zt.bin > /dev/null &
time gzip -c /mnt/mem1/zt.bin > /dev/null &
time gzip -c /mnt/mem1/zt.bin > /dev/null &
time gzip -c /mnt/mem1/zt.bin > /dev/null &

Если одна строчка (3 закомментить), то 5 сек. Причём htop показывает что используется 1 кора. Если 2 строчки, то 7 сек. Все 4 – 19 сек. governor=performance.

Какая-то фигня: получается (по факту) что у меня 2 коры? (причём шарящие какое-то другое железо). Сабж. Я не бенчмаркю, просто хочу (по-тупому, как простой юзер) убедиться в количестве кор.

Проясните пожалуйста!

★★

Последнее исправление: the1 (всего исправлений: 1)

убедиться в количестве кор

К логопеду.

RazrFalcon ★★★★★
()

что за тупость? что ты там проверяешь? в каждом ядре дескотпных микроархитектур допустим по четыре ALU, и наcколько они загружены будут зависит от конкретной программы. в кукурызных или мобильных огрызках будет по два, но ядер заявлено то же число

anonymous
()

и в твоём говнотесте ещё и упор в скорость оперативы превалирует. короче, не берись за то, в чём нихрена не разбираешься

anonymous
()
Ответ на: комментарий от fsb4000

cat /proc/cpuinfo | grep «cpu cores»

Пишет 4 раза что 2. И что это означает? Не понимаю я этих ваших кор. Именно поэтому хочу убедиться как-то фактически. Каким (простым) тестом? Сабж.

the1 ★★
() автор топика
Последнее исправление: the1 (всего исправлений: 2)
Ответ на: комментарий от the1

хочу убедиться как-то фактически

Запусти системный монитор. В остальном, не забивай голову.

andytux ★★★★★
()
Ответ на: комментарий от andytux

о, опять это специалист выходит на связь

anonymous
()
Ответ на: комментарий от peregrine

2 виртуальных

Не понял, но спасибо. А можешь пож. сказать в терминах модулей и тредов? (это AMD FX)

PS.

У меня должно быть 2 модуля, но тогда это 4 реальные коры (если всё целочисленное), без всяких мульти-трединговых оптимизаций.

Due to dedicated integer cores, the Bulldozer family modules performed roughly like a dual-core, dual-threaded processor during sections of code that were either wholly integer…

В вики пишут что 1 модуль как 2 ядра. Но у меня же 2 модуля вроде? FX 4350

the1 ★★
() автор топика
Последнее исправление: the1 (всего исправлений: 3)
Ответ на: комментарий от andytux

гипертрединг это не маркетологическая мудреность, а реальная фишка улучшения использования модулей железного процессора.

pfg ★★★★★
()
Ответ на: комментарий от andytux

Не маркетинг, как пользователь i3 говорю, 2/2 намного грустнее чем 2/4.

anonymous
()
Ответ на: комментарий от the1

В моем представлении - 4-е очереди команд - 2 ядра.

anonymous
()
Ответ на: комментарий от peregrine

Ну собственно да, именно к процитированному кусочку из вики у меня похоже большая претензия. Я не про вполне возможные очевидные ошибки, где указаны числа, типа что 4 модуля, хотя должно быть (вроде?) 2. В вики настолько прямое враньё в описании архитектуры?

Ещё раз: Due to dedicated integer cores, the Bulldozer family modules performed roughly like a dual-core, dual-threaded processor during sections of code that were either wholly integer… (C)

PS.

Тест-то нормальный? А то там анон что-то про узкое место в памяти писал.

the1 ★★
() автор топика
Последнее исправление: the1 (всего исправлений: 2)
Ответ на: комментарий от the1

ну так на картинке нарисовано. Этот 1 модуль одно «настоящее» полноценное ядро с 1 FPU на 2 псевдоядра. Т.е. флоаты оно дробить будет в один поток и ничего с этим не сделать.

peregrine ★★★★★
()
Ответ на: комментарий от gremlin_the_red

какие специфические условия. вот тут компиляция не компиляция, угадал?

anonymous
()
Ответ на: комментарий от peregrine

на картинке нарисовано.

Да я по картинке лишь грубо могу сориентироваться (ну типа да, флоат один, ок, ну соответственно про флоат у меня вопросов и нет).

Этот 1 модуль одно «настоящее» полноценное ядро с 1 FPU на 2 псевдоядра.

Ох… Ну вот ты (уничижительно) пишешь 2 псевдоядра на 1 модуль. Да, ты где-то там специалист, преподаватель, уважаемый и т.д. А с другой стороны – lawsuit же был. Это означает что туча людей, в том числе специалистов, интересовались и читали те строчки в вики. Ну ясно же, что или ты врёшь, или вики (или я не понимаю как вы согласуетесь).

Ты не мог бы немного внимательнее ответить на вот этот мой пост выше?

the1 ★★
() автор топика
Ответ на: комментарий от the1

Due to dedicated integer cores, the Bulldozer family modules performed roughly like a dual-core, dual-threaded processor during sections of code that were either wholly integer…

Поясняю: в «фикусах» «красные» применили, по их мнению, хитрую фишку: каждые два физических ядра соединены только с одним математическим блоком, из-за чего в операциях с целочисленными данными (или числами с плавающей точкой, точно не помню) данные могли поступать только от одного ядра, а второе в таком случае было, уж простите на слове, «як до сраки дверці». Это должно было нивелироваться высокой частотой памяти (и соответственно, северного моста), но на начало продаж «фикусы» особо не могли похвастать «гигагерцами».

Кстати, по этой же причине эти модули во всяких «синебенчах» считались за цельные ядра с «многопотоком».

Korchevatel ★★★★★
()
Ответ на: комментарий от the1

Хм, может linux врёт/иначе трактует ядро/команда криво отрабатывает потому-что вывод сильно другой чем на intel-ах или производитель лукавит.

Давай тогда полный вывод:

lscpu
cat /proc/cpuinfo
peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 4)
Ответ на: комментарий от Korchevatel

Это должно было нивелироваться высокой частотой памяти (и соответственно, северного моста

порция бреда уровня «это должно было нивелироваться игровым ковриком для мыши» или «это должно было нивелироваться честынм словом Лизы Су», ахах

кстати, тем времеменем разогнанная вхлам, включая северник и память «8ядерная» кукуруза уже находится на уровне ДВУХ ядер, как говорится с чего начали, тем и кончили https://youtu.be/RpcDF-qQHIo?t=880

anonymous
()
Ответ на: комментарий от peregrine

Одновременное зипование файла из оперативы – это хороший тест для числа кор?

Хоть бы кто-нибудь на сабж/ОП ответил :)

lscpu:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             AuthenticAMD
CPU family:            21
Model:                 2
Model name:            AMD FX(tm)-4350 Quad-Core Processor
Stepping:              0
CPU MHz:               2800.000
CPU max MHz:           4100.0000
CPU min MHz:           1400.0000
BogoMIPS:              5618.97
Virtualization:        AMD-V
L1d cache:             16K
L1i cache:             64K
L2 cache:              2048K
L3 cache:              8192K
NUMA node0 CPU(s):     0-3
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 popcnt aes xsave avx f16c lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 tce nodeid_msr tbm topoext perfctr_core perfctr_nb cpb hw_pstate ssbd vmmcall bmi1 arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold

cpuinfo:

processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 21
model		: 2
model name	: AMD FX(tm)-4350 Quad-Core Processor
stepping	: 0
microcode	: 0x6000822
cpu MHz		: 2800.000
cache size	: 2048 KB
physical id	: 0
siblings	: 4
core id		: 0
cpu cores	: 2
apicid		: 16
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 popcnt aes xsave avx f16c lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 tce nodeid_msr tbm topoext perfctr_core perfctr_nb cpb hw_pstate ssbd vmmcall bmi1 arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold
bugs		: fxsave_leak sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass
bogomips	: 5618.97
TLB size	: 1536 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm 100mhzsteps hwpstate cpb eff_freq_ro

processor	: 1
vendor_id	: AuthenticAMD
cpu family	: 21
model		: 2
model name	: AMD FX(tm)-4350 Quad-Core Processor
stepping	: 0
microcode	: 0x6000822
cpu MHz		: 2800.000
cache size	: 2048 KB
physical id	: 0
siblings	: 4
core id		: 1
cpu cores	: 2
apicid		: 17
initial apicid	: 1
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 popcnt aes xsave avx f16c lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 tce nodeid_msr tbm topoext perfctr_core perfctr_nb cpb hw_pstate ssbd vmmcall bmi1 arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold
bugs		: fxsave_leak sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass
bogomips	: 5618.97
TLB size	: 1536 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm 100mhzsteps hwpstate cpb eff_freq_ro

processor	: 2
vendor_id	: AuthenticAMD
cpu family	: 21
model		: 2
model name	: AMD FX(tm)-4350 Quad-Core Processor
stepping	: 0
microcode	: 0x6000822
cpu MHz		: 2800.000
cache size	: 2048 KB
physical id	: 0
siblings	: 4
core id		: 2
cpu cores	: 2
apicid		: 18
initial apicid	: 2
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 popcnt aes xsave avx f16c lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 tce nodeid_msr tbm topoext perfctr_core perfctr_nb cpb hw_pstate ssbd vmmcall bmi1 arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold
bugs		: fxsave_leak sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass
bogomips	: 5618.97
TLB size	: 1536 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm 100mhzsteps hwpstate cpb eff_freq_ro

processor	: 3
vendor_id	: AuthenticAMD
cpu family	: 21
model		: 2
model name	: AMD FX(tm)-4350 Quad-Core Processor
stepping	: 0
microcode	: 0x6000822
cpu MHz		: 2800.000
cache size	: 2048 KB
physical id	: 0
siblings	: 4
core id		: 3
cpu cores	: 2
apicid		: 19
initial apicid	: 3
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 popcnt aes xsave avx f16c lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 tce nodeid_msr tbm topoext perfctr_core perfctr_nb cpb hw_pstate ssbd vmmcall bmi1 arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold
bugs		: fxsave_leak sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass
bogomips	: 5618.97
TLB size	: 1536 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 48 bits physical, 48 bits virtual
power management: ts ttp tm 100mhzsteps hwpstate cpb eff_freq_ro
the1 ★★
() автор топика
Ответ на: комментарий от the1

cpu cores : 2

Linux уверен что их 2. Вопрос надо к разрабам ядра переадресовывать, почему они считают что в твоём проце 2 ядра Хотя там вообще каша, вроде 4, а вроде 2. Хотя может там портянка просто нечитабельная, почему она такая отдельный вопрос.

CPU(s): 4

Вроде правильно говорит, хотя

Thread(s) per core: 2
Core(s) per socket: 2

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 3)
Ответ на: комментарий от peregrine

Хмм… Тогда у меня просьба ко всем у кого FX: сделайте пож. такой тест как я в ОП описал. Может у меня процессор фальшивый, с одним модулем, но 4 тредами? (не знаю, такие бывают?)

И кто прав-то, ты или вики? Ты говоришь что в модуле 1 «настоящая» целочисленная кора, а вики говорит что 2.

@Korchevatel

Прости, я не знаю что тебе ответить… Во-первых, «данные могли поступать только от одного ядра» – это опечатка, нужно «к одному ядру»? Во-вторых просто бессмысленно: когда интел оптимизирует использование коры (вводит гипертрединг), АМД наоборот, вводит лишнюю неиспользуемую кору?? 8-) Если я не буду тебе отвечать в будущем – прости, значит просто не знаю что ответить.

the1 ★★
() автор топика
Последнее исправление: the1 (всего исправлений: 1)
Ответ на: комментарий от anonymous

скорость оперативы превалирует

как показывает практика - tmpfs какой-то медленный. у меня оператива на 3600мгц, скорость записи в tmpfs соизмерима с линейной скоростью записи на pcie4 nvme ssd (~3gb/s vs 3.5gb/s). так что вряд ли скорость оперативы тут играет роль.

vvviperrr ★★★★★
()

SMP test. Только для не коммерческого использования.

#!/bin/sh
# SMP test
# Free for not commercial use, for commercial usage you must resive writen preission.

awk -F': ' '/^model name/ {print $2}' '/proc/cpuinfo'
N=`awk -F': ' '/^model name/ {print $2}' '/proc/cpuinfo' |wc -l`

mkdir smp_test
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  do
    dd if=/dev/urandom of="smp_test/file_${i}" bs=1M count=10
  done
tar -cf smp_test.tar smp_test

let i=1
while [ ${i} -le ${N} ]
  do
    echo "gz comprassion in ${i} threads"
    time pigz -11 --processes "${i}" smp_test.tar
    ls -l smp_test.*
    echo "gz deomprassion in ${i} threads"
    time pigz --decompress --processes "${i}" smp_test.tar.gz
    let i=${i}+1
  done

let i=1
while [ ${i} -le ${N} ]
  do
    echo "bzip2 comprassion in ${i} threads"
    time pbzip2 --compress -9 -p"${i}" smp_test.tar
    ls -l smp_test.*
    echo "bzip2 deomprassion in ${i} threads"
    time pbzip --decompress -p"${i}" smp_test.tar.bz2
    let i=${i}+1
  done

let i=1
while [ ${i} -le ${N} ]
  do
    echo "xz comprassion in ${i} threads"
    time xz --compress -9 --threads="${i}" --check=sha256 smp_test.tar
    ls -l smp_test.*
    echo "zx deomprassion in ${i} threads"
    time xz --decompress --threads="${i}" --check=sha256 smp_test.tar.xz
    let i=${i}+1
  done

rm -rf smp_test*
exit 0

Использование:

Установить зависимости: pigz, pbzip2, xz

cd в_каталог_доступный_на_запись

Сохранить скрипт в SMP_test.sh

Выполнить: `bash SMP_test.sh`

Вывод скопипастить в эту тему.

ЗЫ: вот «Эльбрусы» с 8 ядрами и параллельностью до 23 команд за такт точно всех порвут.

anonymous
()

Перед запуском скрипта, в соседнем терминале запускаем htop и завершаем все программы которые грузят CPU и помешают тесту.

Во время выполнения теста, в соседнем терминале с htop, можно наблюдать загрузку ядер CPUs.

anonymous
()

Далеко не все алгоритмы сжатия параллелятся. Надо хорошо в них шарить чтобы быть увереным что они отлично параллелятся. Кмк надёжней сделать действительно параллельный тест (как я делал).

Там pigz очень долго думает, я его в 100 раз убыстрил (в dd не 1M, а 10K) и поставил exit после этого цикла.

AMD FX(tm)-4350 Quad-Core Processor
AMD FX(tm)-4350 Quad-Core Processor
AMD FX(tm)-4350 Quad-Core Processor
AMD FX(tm)-4350 Quad-Core Processor
100+0 records in
100+0 records out
102400 bytes (102 kB, 100 KiB) copied, 0.000737863 s, 139 MB/s
...
gz comprassion in 1 threads

real	0m3.438s
user	0m3.392s
sys	0m0.044s
-rw-rw-r-- 1 binu binu 1641024 Sep 12 12:46 smp_test.tar.gz
gz deomprassion in 1 threads

real	0m0.011s
user	0m0.008s
sys	0m0.000s
gz comprassion in 2 threads

real	0m2.529s
user	0m4.796s
sys	0m0.072s
-rw-rw-r-- 1 binu binu 1641024 Sep 12 12:46 smp_test.tar.gz
gz deomprassion in 2 threads

real	0m0.012s
user	0m0.008s
sys	0m0.004s
gz comprassion in 3 threads

real	0m1.929s
user	0m5.388s
sys	0m0.124s
-rw-rw-r-- 1 binu binu 1641024 Sep 12 12:46 smp_test.tar.gz
gz deomprassion in 3 threads

real	0m0.013s
user	0m0.012s
sys	0m0.004s
gz comprassion in 4 threads

real	0m1.602s
user	0m5.652s
sys	0m0.188s
-rw-rw-r-- 1 binu binu 1641024 Sep 12 12:46 smp_test.tar.gz
gz deomprassion in 4 threads

real	0m0.011s
user	0m0.012s
sys	0m0.000s

Остальное в 10 раз убыстрил (100K) и закомментил цикл pigz.

bzip2 comprassion in 1 threads

real	0m2.829s
user	0m2.768s
sys	0m0.060s
-rw-rw-r-- 1 binu binu 16457030 Sep 12 12:52 smp_test.tar.bz2
bzip2 deomprassion in 1 threads

real	0m1.274s
user	0m1.244s
sys	0m0.028s
bzip2 comprassion in 2 threads

real	0m1.966s
user	0m3.816s
sys	0m0.092s
-rw-rw-r-- 1 binu binu 16457030 Sep 12 12:52 smp_test.tar.bz2
bzip2 deomprassion in 2 threads

real	0m0.848s
user	0m1.688s
sys	0m0.028s
bzip2 comprassion in 3 threads

real	0m1.584s
user	0m4.520s
sys	0m0.096s
-rw-rw-r-- 1 binu binu 16457030 Sep 12 12:52 smp_test.tar.bz2
bzip2 deomprassion in 3 threads

real	0m0.669s
user	0m1.948s
sys	0m0.048s
bzip2 comprassion in 4 threads

real	0m1.405s
user	0m5.096s
sys	0m0.076s
-rw-rw-r-- 1 binu binu 16457030 Sep 12 12:52 smp_test.tar.bz2
bzip2 deomprassion in 4 threads

real	0m0.619s
user	0m2.128s
sys	0m0.048s
xz comprassion in 1 threads

real	0m5.011s
user	0m4.872s
sys	0m0.136s
-rw-rw-r-- 1 binu binu 16393860 Sep 12 12:52 smp_test.tar.xz
zx deomprassion in 1 threads

real	0m0.127s
user	0m0.112s
sys	0m0.012s
xz comprassion in 2 threads

real	0m5.031s
user	0m4.892s
sys	0m0.164s
-rw-rw-r-- 1 binu binu 16393868 Sep 12 12:52 smp_test.tar.xz
zx deomprassion in 2 threads

real	0m0.124s
user	0m0.104s
sys	0m0.020s
xz comprassion in 3 threads

real	0m5.002s
user	0m4.848s
sys	0m0.180s
-rw-rw-r-- 1 binu binu 16393868 Sep 12 12:52 smp_test.tar.xz
zx deomprassion in 3 threads

real	0m0.132s
user	0m0.108s
sys	0m0.020s
xz comprassion in 4 threads

real	0m5.030s
user	0m4.904s
sys	0m0.152s
-rw-rw-r-- 1 binu binu 16393868 Sep 12 12:52 smp_test.tar.xz
zx deomprassion in 4 threads

real	0m0.137s
user	0m0.112s
sys	0m0.024s

И что это всё означает? :)

the1 ★★
() автор топика
Ответ на: комментарий от anonymous
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 58
model name	: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
stepping	: 9
microcode	: 0x21
cpu MHz		: 2441.294
cache size	: 8192 KB
physical id	: 0
siblings	: 8
core id		: 0
cpu cores	: 4
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm cpuid_fault epb pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts md_clear flush_l1d
bugs		: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips	: 6800.52
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:

Обрезал остальные «8» ядер

У этого проца точно 4 ядра и гипертрединг подрубленый, но это штеуд, дырки в безопасности в наличии

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от the1

Далеко не все алгоритмы сжатия параллелятся. Надо хорошо в них шарить чтобы быть увереным что они отлично параллелятся.

Обычные пользователи параллелят только архивацию и перекодировку видео. Архивация и перекодировка видео параллелятса идеально по сравнению со всеми другими задачами обычных пользователей.

Видео: https://ffmpeg.org/ffmpeg.html#Main-options

-filter_threads nb_threads (global)

Defines how many threads are used to process a filter pipeline. Each pipeline will produce a thread pool with this many threads available for parallel processing. The default is the number of available CPUs.

Рассматривать синтетические тесты неинтересно.

Зря ты уменьшил размер файла. На параллелизм также влияет степень сжатия, которая зависит от размера «словаря» и выделенная оперативная память. Увеличение выделяемой оперативы должно увеличивать параллелизм.

Там pigz очень долго думает

В скрипте выставленная максимальная степень сжатия -11 попробуй с -9 или по умолчанию -6.

И что это всё означает? :)

У тебя версия xz не поддерживает многопоточную работу. Какая версия xz? Или -9 надо 800Mb оперативы, а по умолчанию –memory=100MiB попробуй –memory=1600MiB или дай -6 вместо -9:

man xz: «The actual number of worker threads can be less than threads if using more threads would exceed the memory usage limit. In addition to CPU-intensive worker threads, xz may use a few auxiliary threads, which don’t use a lot of CPU time.»

Значит следующие: в идеале два ядра должны сжимать в два раза быстрее, три в три, четыре в четыре, … У тебя это не так. Проблема или в проце, или в реализации SMP ядра ОС, или в реализации threads в libc или в плохом параллельном алгоритме прикладного ПО: pigz, pbzip2, xz, ffmpeg или во всем вышеперечисленном одновременно.

Есть процессоры, обычные, производители которых заявляют линейную зависимость аж до 24 ядер. Есть процы необычные, аппаратный кластер, производитель заявляет линейную зависимость аж до 48 ядер (48 ядер будут сжимать в 48 раз быстрее если на создание 48 потоков хватит оперативы).

АМД явно приврал:

model name : AMD FX(tm)-4350 Quad-Core Processor

cpu cores : 2

Надо чтобы этот тест запустили на процах разных производителей, можно будет сравнивать…

anonymous
()
Ответ на: комментарий от peregrine

Сейчас и Linux, и Windows считают один бульдозерный модуль одним ядром с двумя потоками, прямо в соответствии с решением суда, бгг.

anonymous
()
Ответ на: комментарий от the1

cache size : 2048 KB

Мало кеша, это на каждое ядро или на всех?

И что это всё означает? :)

В моем тесте выставлено максимальное сжатие, это означает максимальное использование оперативной памяти. Из этого следует, что самым узким местом может оказаться пропускная способность шины оперативной памяти. Не уменьшая размер файла, а в соседних терминалах запусти atop и htop, смотри загрузку ядер процессора и загрузку канала оперативы в atop.

anonymous
()
Ответ на: комментарий от LongLiveUbuntu

cat /proc/cpuinfo | grep processor | wc -l

Выше уже доказано что это ложь!

Как проверить руками (наивно, по-простому) сколько (целочисленных) кор у процессора? (комментарий) в этом случае у тебя покажет 4, а на самом деле там всего 2 ядра с двумя потоками в каждом.

Как проверить руками (наивно, по-простому) сколько (целочисленных) кор у процессора? (комментарий) в этом случае у тебя покажет , а на самом деле там всего 4 ядра с двумя потоками в каждом.

Реальные задачи: Как проверить руками (наивно, по-простому) сколько (целочисленных) кор у процессора? (комментарий) Как проверить руками (наивно, по-простому) сколько (целочисленных) кор у процессора? (комментарий) показывают ускорение всего в 2 раза: Как проверить руками (наивно, по-простому) сколько (целочисленных) кор у процессора? (комментарий) если бы в «AMD FX(tm)-4350 Quad-Core Processor» было реально 4 ядра и хватало размера и пропускной способности оперативный, то ускорение было бы в 4 раза!

anonymous
()
Ответ на: комментарий от anonymous

Архивация … параллелятса идеально…

Ну если разбивать входные данные на куски и скармливать их разным процам – то наверно да. Я перед тем как ответить, поискал, и там было несколько ссылок типа «…LZ2 compression method seems hardly parallelizable since…» (C). Но я не спорю.

Рассматривать синтетические тесты неинтересно.

Ну… иногда очень интересно именно упрощение, пусть не реалистичное, зато показывающее свойства железа (в комплекте с софтом). Реалистичный тест у меня был в другой ветке (даже без БД оно не увеличивается в 2 раза с увеличением ядер 1->2), и после него я и задумался, а сколько реально у меня ядер? :) Получается что совсем полноценное – вообще одно! :)

Какая версия xz?

5.2.2

Да, опция --memory работает: если маленький предел, то либо отказывается, либо явно пишет что будет лишь 1 тред. Если поставить 1600М и -6, то ошибок нет, но результаты те же – 6 сек независимо от числа тредов! :)

Я когда-нибудь сделаю такой тест под виндой. Но не скоро, я редко перегружаю комп.

pigz … попробуй с -9

Аналогично, с 100К, секунды сжатия, для 1,2,4 кор: 35, 24, 15

загрузку канала оперативы в atop

Ну там вроде есть только использование объёма памяти, а не канала?

У меня обычная DDR3, 1600 вроде.

Ну вобщем, пока вопросов больше нет. Я попрошу кого-нибудь (как увижу когда кто напишет что у него FX) сделать такой тест. Ну и может через пару недель напомню peregrine про вики, тоже любопытно. Пока просто понял что многокорность вэб-сервера мне сейчас тестировать смысла нет 8-( Может систему обновлю потом (Деб 9), может проц.

the1 ★★
() автор топика
24 ноября 2020 г.

Последовательно проверяешь

$ openssl speed -multi 1 md4
$ openssl speed -multi 2 md4
$ ...
$ openssl speed -multi $N md4

Когда перестанет расти скорость - столько и целочисленных ядер.

anonymous
()
Ответ на: комментарий от the1

Узнать число физических ядер

cat /proc/cpuinfo | grep "cpu cores" | sed "s/[^0-9]//g" | uniq

Узнать число потоков

cat /proc/cpuinfo | grep "cpu cores" | sed "s/[^0-9]//g" | wc -l

Если сверхпоточности нет, то числа совпадут, а ещё можно так

lscpu | sed -n '7,9p'

В первой строке будет выведено сколько потоков на ядро, вторая сколько именно физических ядер и третья сколько физических процессоров.

AKonia ★★
()
Последнее исправление: AKonia (всего исправлений: 5)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.