Ulrich Drepper, Red Hat Inc., November 21, 2007
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Thread(s) per core: 2
Core(s) per socket: 4
CPU socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 44
Stepping: 2
CPU MHz: 1600.000
BogoMIPS: 4799.88
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 12288K
NUMA node0 CPU(s): 0-3,8-11
NUMA node1 CPU(s): 4-7,12-15
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
stepping : 2
cpu MHz : 1600.000
cache size : 12288 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
bogomips : 4800.59
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
# dmidecode
Memory Device
Array Handle: 0x0035
Total Width: 72 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM A1
Bank Locator: CHANNEL A
Type: Other
Type Detail: Other
Speed: 1333 MHz
Manufacturer: NOT SUPPORT
Serial Number: NOT SUPPORT
Asset Tag: NOT SUPPORT
Part Number: NOT SUPPORT
# dmidecode
Memory Device
Array Handle: 0x0035
Total Width: 72 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM A2
Bank Locator: CHANNEL A
Type: Other
Type Detail: Other
Speed: 1333 MHz
Manufacturer: NOT SUPPORT
Serial Number: NOT SUPPORT
Asset Tag: NOT SUPPORT
Part Number: NOT SUPPORT
•
•
•
•
•
•
•
•
•
•
•
64 bit (8 bytes) - data bus
DDR SDRAM:
Dual-pumped 200MHz bus = 3.2GB/s
DDR2 SDRAM:
Quad-pumped 200MHz bus = 6.4GB/s
•
•
•
O – Смещение внутри строки
S – Идентификатор строки в кеше
T – Метка внутри строки кеша для привязки к полному адресу
Highload осень 2012 лекция 5
Highload осень 2012 лекция 5
Highload осень 2012 лекция 5
Highload осень 2012 лекция 5
Highload осень 2012 лекция 5
Highload осень 2012 лекция 5

Highload осень 2012 лекция 5

  • 2.
    Ulrich Drepper, RedHat Inc., November 21, 2007
  • 4.
    $ lscpu Architecture: x86_64 CPUop-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 16 On-line CPU(s) list: 0-15 Thread(s) per core: 2 Core(s) per socket: 4 CPU socket(s): 2 NUMA node(s): 2 Vendor ID: GenuineIntel CPU family: 6 Model: 44 Stepping: 2 CPU MHz: 1600.000 BogoMIPS: 4799.88 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 12288K NUMA node0 CPU(s): 0-3,8-11 NUMA node1 CPU(s): 4-7,12-15 $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 44 model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz stepping : 2 cpu MHz : 1600.000 cache size : 12288 KB physical id : 0 siblings : 8 core id : 0 cpu cores : 4 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 11 wp : yes bogomips : 4800.59 clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual
  • 5.
    # dmidecode Memory Device ArrayHandle: 0x0035 Total Width: 72 bits Data Width: 64 bits Size: 8192 MB Form Factor: DIMM Set: None Locator: DIMM A1 Bank Locator: CHANNEL A Type: Other Type Detail: Other Speed: 1333 MHz Manufacturer: NOT SUPPORT Serial Number: NOT SUPPORT Asset Tag: NOT SUPPORT Part Number: NOT SUPPORT # dmidecode Memory Device Array Handle: 0x0035 Total Width: 72 bits Data Width: 64 bits Size: 8192 MB Form Factor: DIMM Set: None Locator: DIMM A2 Bank Locator: CHANNEL A Type: Other Type Detail: Other Speed: 1333 MHz Manufacturer: NOT SUPPORT Serial Number: NOT SUPPORT Asset Tag: NOT SUPPORT Part Number: NOT SUPPORT
  • 8.
  • 9.
  • 11.
    64 bit (8bytes) - data bus DDR SDRAM: Dual-pumped 200MHz bus = 3.2GB/s DDR2 SDRAM: Quad-pumped 200MHz bus = 6.4GB/s
  • 13.
  • 15.
    O – Смещениевнутри строки S – Идентификатор строки в кеше T – Метка внутри строки кеша для привязки к полному адресу

Editor's Notes

  • #3 Производители процессоров и разработчики ОС делают очень много хороший оптимизаций, но чтобы они сработали нужна некоторая помощь со стороны программиста.
  • #4 Сегодня эффективные по цене решения как правило достигаются с использованием горизонтального масштабирования, а именно сборки систем из множества обычных серверов вместо дорогих специализированных решений.
  • #7 DMA – Direct Memory Access (конкурирует с процессором за шину)AGP – Advanced Graphic Port (подключался к северному мосту потому что южный тогда был медленный)
  • #8 NUMA – Non-Uniform Memory AccessAMD – OpteronIntel – NehalemПамять общая но доступ к ней неоднороден20% задержка при обращении к «чужой» памяти
  • #9 RAM – Random Access Memory6 Транзисторов на ячейкуИспользуется в кеш-памяти на процессоре
  • #10 1 запирающий транзистор + 1 небольшой конденсаторКонденсаторы небольшие чтобы можно было много запихнуть в чипПоэтому они быстро разряжаются (leackage) и их надо часто обновлять (refresh)Цикл обновлениясовременных чипов: 64 мс
  • #12 Synchronous Dynamic RAM64 bit (8 bytes) Databus
  • #13 Synchronous Dynamic RAM64 bit (8 bytes) Databus
  • #15 Thread-ыимеют только регистры и то не всеЯдра имеют все отдельное кроме больших кешейВсе данные которые обрабатывает процессор проходят через кешВ кеше хранятся cache lines размером 64 байта (64 бита шины данных х 8 передач)AMD, VIA – Exclusive cacheIntel – Inclusive cacheCache coherency
  • #16 Dirty lines - только в одном процессореClean lines – могут быть во всехСинхронизация с главной памятью,инвалидация когда видна команда записи на строку в своем кеше сделанную в другом процессоре
  • #17 Последовательный доступ, ускоряется процессором как прямой так и обратный
  • #18 Последовательный доступ, ускоряется процессором как прямой так и обратный
  • #19 Последовательный доступ, ускоряется процессором как прямой так и обратный
  • #20 Prefetching ухудшает ситуацию
  • #21 Prefetching ухудшает ситуацию