Система Linux Opteron выглядит как UMA, но должна быть NUMA
Согласно numactl, этот двухъядерный процессор Opteron является UMA, а не ожидаемой NUMA:
$ numactl --hardware
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
node 0 size: 65534 MB
node 0 free: 381 MB
node distances:
node 0
0: 10
Я думаю, что это должно быть NUMA, потому что есть четыре 4-ядерных процессора *. Насколько я понимаю, у каждого процессора свой канал памяти; если ЦПУ необходим доступ к памяти в нелокальном узле, он должен использовать гипертранспорт, который стоит больше времени, чем доступ к памяти в локальном узле. AMD объясняет это здесь.
Материнская плата имеет 16 слотов оперативной памяти, по 8 на каждый процессор. Все 16 заполнены 4 ГБ каждый на общую сумму 64 ГБ. Еще некоторые подробности:
- Процессоры: 2 х 6128 драм ("Маньи-Кур")
- Mobo: Supermicro H8DG6 / i (-F)
- BIOS: AMI v02.68 - руководство по mobo/BIOS (pdf)
- Linux: 2.6.32
- ОС: Debian "wheezy"
- Конфигурация памяти BIOS:
- банковское чередование: авто
- чередование узлов: авто
- чередование каналов: авто
- CS щадящий: отключен
- режим банка swizzle: включен
Почему numactl сообщает, что это поле UMA?
* В каждом пакете два процессора, поэтому на материнской плате только два разъема для процессора.
1 ответ
BIOS скрывает реальность NUMA за node interleaving
установка. Если для этого параметра установлено значение "Отключено", это даст вам истинную систему NUMA в том, что касается ОС. Не многие системы действительно эффективно используют NUMA, поэтому производители материнских плат предпочитают делать все одинаково медленно, а не позволять ОС выяснять, что требует быстрого и медленного доступа.