Für eine C# .net 3.5-Anwendung, die unvermeidlich eine Menge Daten auf dem Heap erstellt, in Bezug auf die Hardware was würde ich in Bezug auf Speicher suchen? Wäre es nur die größte Sockelbusbreite? Oder die "Bandbreite" der Memory Sticks? Oder die tatsächliche Frequenz, auf der sie laufen?Heap-Zuweisung und geeignete Hardware
Wir haben den Schluss gezogen, dass der Engpass unserer Anwendung nicht vermieden werden kann und wenn wir die Arbeit über mehrere Threads verteilen, scheinen wir "Kollisionen" zu bekommen, weil viele Threads auf den RAM zugreifen.
Das eigentliche Problem bezieht sich auf das Sperren von Elementen und viele Threads, die versuchen, auf diese Elemente zuzugreifen. Es gibt keine Möglichkeit, das Threading-Locking weiter zu optimieren. Da es sich um Threading handelt, war ich nicht sicher, ob ich auch alternative CPU-Optionen untersuchen sollte und auch die QPI-Statistiken genau betrachten sollte. Wir verwenden derzeit die Westmere-Architektur, aber eine langsame Taktrate von 2 GHz.
EDIT: Wurde vorgeschlagen, DMA ist, was uns helfen könnte.
Ich werde dies als C# und Java markieren, weil ich glaube, dass die Antwort nicht C# -spezifisch sein wird.
Vielen Dank im Voraus,
Wie viele CPUs? –
Woher wissen Sie, dass es keine Möglichkeit gibt, die Verriegelung weiter zu optimieren? – DNA
@Henk, 4x Physikalische CPUs mit 8 logischen Kernen (4x Xeon x7550) – mezamorphic