Wir migrieren eine ActivePivot-Anwendung auf einen neuen Server (4 Sockets Intel Xeon, 512 GB Arbeitsspeicher). Nach der Bereitstellung haben wir unseren Anwendungsbenchmark gestartet (eine Mischung aus großen OLAP-Abfragen parallel zu Echtzeittransaktionen). Die gemessene Leistung ist fast doppelt so lang wie bei unserem vorherigen Server, der über ähnliche Prozessoren verfügt, aber doppelt so viele Kerne und doppelt so viel Arbeitsspeicher.Wie wirkt sich die NUMA-Architektur auf die Leistung von ActivePivot aus?
Wir haben die Unterschiede zwischen den beiden Servern untersucht, und es scheint, die große hat eine NUMA-Architektur (nicht einheitlichen Speicherzugriff). Jeder CPU-Socket befindet sich physisch in der Nähe von 1/4 des Speichers, aber weiter entfernt von dem Rest ... Die JVM, die unsere Anwendung ausführt, weist einen großen globalen Heap zu, es gibt einen zufälligen Bruchteil dieses Heaps auf jedem NUMA-Knoten. Unsere Analyse ist, dass das Speicherzugriffsmuster ziemlich zufällig ist und CPU-Kerne häufig Zeit verschwenden, auf entfernten Speicher zuzugreifen.
Wir freuen uns über mehr Feedback zum Einsatz von ActivePivot auf NUMA-Servern. Können wir ActivePivot-Cubes oder Thread-Pools konfigurieren, unsere Abfragen ändern, das Betriebssystem konfigurieren?
Bei Verwendung von numactl würde ich empfehlen, den Schalter '--mebind = nodes, -m nodes' zusätzlich zu' --cpunodebind = nodes, -N nodes' zu verwenden, um den Speicher auf diesen Knoten zu beschränken. Ansonsten wird ein kleiner Teil des Speichers normalerweise auf fremde Knoten verteilt (selbst mit '-XX: + UseNUMA') –