Olej писал(а): ↑31 янв 2021, 20:43
- но очень странно ведут себя показатели скоростей чтения/записи:
Логика поведения тестов описана, более-менее, в
Тестирование памяти в Linux
2010-08-26 08:30:00
Если речь заходит об анализе производительности Linux, то очень часто можно встретить упоминание такого пакета бенчмарокв, как lmbench. И надо заметить, что это вовсе неспроста, поскольку популярность данного набора программ, написанных Ларри МакВоем (Larry McVoy), имеет вполне объективные причины. Пакет lmbench универсален и может работать на множестве операционных систем семейства Unix. Это объясняется тем, что программы-тесты (о них мы еще поговорим подробнее) написаны в соответствии со стандартом ANSI C и используют системные вызовы. Первое означает, что они могут быть скомпилированы любым из множества компиляторов, поддерживающих упомянутый стандарт. Второе говорит о том, что коль скоро программный интерфейс системных вызовов в различных операционных системах, отвечающих стандарту POSIX, является одинаковым, lmbench позволяет сравнить производительность различных операционных систем данного семейства.
Для нас наиболее важны те из них, которые отвечают за замеры пропускной способности и латентности памяти – программы bw_mem и lat_mem_rd. Как нетрудно понять из названий, они занимаются, соответственно, измерением пропускной способности памяти
Тест rd предназначен для измерения времени чтения процессором данных из памяти. Данный тест производит чтение каждого четвертого элемента массива целых чисел и вычисляет их сумму.
...
Тест wr измеряет время записи данных в память. Он присваивает каждому элементу массива целых чисел значение – единицу. При этом, как и в случае rd, описанная операция осуществляется с каждым четвертым членом массива.
Измеренные скорости незначительно растут от 1024 байт до, примерно, 8-16Kb ... но порядок дают возможность оценить ... чтение, например:
Код: Выделить всё
olej@nvme:/usr/lib/lmbench/bin/x86_64-linux-gnu$ ./bw_mem 4K rd
0.004000 99781.97
olej@nvme:/usr/lib/lmbench/bin/x86_64-linux-gnu$ ./bw_mem 8K rd
0.008000 90618.46
olej@nvme:/usr/lib/lmbench/bin/x86_64-linux-gnu$ ./bw_mem 16K rd
0.016000 90270.00
olej@nvme:/usr/lib/lmbench/bin/x86_64-linux-gnu$ ./bw_mem 32K rd
0.032000 87399.33
olej@nvme:/usr/lib/lmbench/bin/x86_64-linux-gnu$ ./bw_mem 64K rd
0.064000 63120.72
Я сам когда-то делал подобные тестирования, с пробеганием "сквозь массив" и, насколько понимаю, это эффекты кэширования - это тесты делались на далеко не лучшем (
пока) процессоре:
Код: Выделить всё
olej@nvme:~$ lscpu
Архитектура: x86_64
CPU op-mode(s): 32-bit, 64-bit
Порядок байт: Little Endian
Address sizes: 39 bits physical, 48 bits virtual
CPU(s): 2
On-line CPU(s) list: 0,1
Потоков на ядро: 1
Ядер на сокет: 2
Сокетов: 1
NUMA node(s): 1
ID прроизводителя: GenuineIntel
Семейство ЦПУ: 6
Модель: 158
Имя модели: Intel(R) Celeron(R) CPU G3930 @ 2.90GHz
Степпинг: 9
CPU МГц: 800.001
CPU max MHz: 2900,0000
CPU min MHz: 800,0000
BogoMIPS: 5799.77
Виртуализация: VT-x
L1d cache: 64 KiB
L1i cache: 64 KiB
L2 cache: 512 KiB
L3 cache: 2 MiB
NUMA node0 CPU(s): 0,1
...
Но с непропорционально хорошей памятью:
Код: Выделить всё
olej@nvme:~$ sudo inxi -mxxxx
[sudo] пароль для olej:
Memory: RAM: total: 15.51 GiB used: 4.79 GiB (30.9%)
Array-1: capacity: 64 GiB slots: 4 EC: None max module size: 16 GiB note: est.
Device-1: ChannelA-DIMM1 size: 8 GiB speed: 2400 MT/s type: DDR4 detail: synchronous unbuffered (unregistered)
bus width: 64 bits total: 64 bits manufacturer: GEIL part-no: CL17-17-17 D4-2400 serial: N/A
Device-2: ChannelA-DIMM2 size: 8 GiB speed: 2400 MT/s type: DDR4 detail: synchronous unbuffered (unregistered)
bus width: 64 bits total: 64 bits manufacturer: 075D part-no: GR2400D464L17S/8G serial: 916E0340
Device-3: ChannelB-DIMM1 size: No Module Installed
Device-4: ChannelB-DIMM2 size: No Module Installed