Engpass bei der Speicherbandbreite

Engpass bei der Speicherbandbreite

Ich habe ein Python-Pandas-Programm. Wenn ich es auf AWS Ec2 mit 8 Kernen ausführe, habe ich eine CPU-Auslastung von 100 % und das Programm war in 8 Minuten fertig. Wenn ich dann 16 Kerne verwende, kann ich nur eine CPU-Auslastung von 50 % erreichen und das Programm ist trotzdem in 8 Minuten fertig. Ich vermute, dass es zu einem Engpass bei der Speicherbandbreite kommt, also habe ich die Instanz X1,16xlarge ausgewählt, die 64 Kerne hat und eine Speicherbandbreite von 300 GB/s angibt. Es hat jedoch nicht geholfen. Das Programm nutzte nur einen winzigen Prozentsatz der 64 Kerne und war selbst nach 10 Minuten nicht fertig. ec2 X1-Instanz

Irgendeine Idee, was los ist?

(Übrigens war das gleiche Programm auf meinem alten Desktop-Tower mit 4 Kernen in 16 Minuten fertig)

Weitere Details: Das Programm verwendet GridSearchCV, das dann verwendetjoblibum Multi-Processing parallel auszuführen. Die Anzahl der Prozesse entspricht immer der Anzahl der Kerne im System.

Antwort1

Python hat eine „globale Interpretersperre“, die die Fähigkeit einschränkt, mehrere Threads effizient zu nutzen.antworteteauf dieser Site, dass Sie in Betracht ziehen sollten, zeitkritische Funktionen in C/C++ zu schreiben.

Wenn möglich, sollten Sie Ihre Analyse in kleinere Abschnitte aufteilen und diese dann als separate Prozesse ausführen, um das Problem der globalen Interpretersperre zu vermeiden.

verwandte Informationen