Shared Library-Engpass auf NUMA-Rechner
Ich verwende eine NUMA-Maschine (eine SGI UV 1000), um eine große Anzahl von numerischen Simulationen gleichzeitig auszuführen, von denen jede ein OpenMP-Job mit 4 Kernen ist. Die Ausführung von mehr als 100 dieser Jobs führt jedoch zu einem erheblichen Leistungseinbruch. Wir gehen davon aus, dass die von der Software benötigten gemeinsam genutzten Bibliotheken nur einmal in den globalen Speicher der Maschine geladen werden und das System dann einen Kommunikationsengpass erleidet, da alle Prozesse auf Speicher auf einem einzelnen Knoten zugreifen.
Es handelt sich um eine alte Software, deren Änderungsmöglichkeiten unbegrenzt sind, und die Option static make verknüpft nicht alle benötigten Bibliotheken statisch. Wie ich sehen kann, ist es die bequemste Lösung, das System zu zwingen, eine neue Kopie der erforderlichen gemeinsam genutzten Bibliotheken auf jeden Prozess oder Knoten (auf jedem der drei Prozesse) zu laden, aber ich habe keine herauszufinden, wie das geht. Kann mir jemand sagen, wie man das macht, oder hat jemand andere Vorschläge, wie man dieses Problem löst?