Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Es werden nicht alle kerne ausgelastet
- Ersteller holzfelix
- Erstellt am
xexex schrieb:Natürlich kann ein entsprechendes Programm zwischen echten und HT Kernen unterscheiden und die Ausführung auf echte Kerne einschränken.
https://eli.thegreenplace.net/2016/c11-threads-affinity-and-hyperthreading
Ich wage allerdings stark zu bezweifeln, dass dieser Fall hier vorliegt.
Ich habe den Artikel nur ganz grob überflogen.
Einer CPU zu sagen, dass sie nur einen Thread benutzen soll ist das eine. Es ist aber nicht möglich zu sagen, Thread 0 ist der echte und Thread 1 der virtuelle Kern. Das geht nicht.
Natürlich kannst du das. Glaubst du ein SQL Server kennt nicht die die Anzahl der physikalischen und logischen Kerne und der NUMA Nodes zu den sie gehören? Es gibt auch diverse APIs die dir solche Informationen liefern.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms683194(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/Dd405488(v=VS.85).aspx
Dann brauchst du nur deinem Programm sagen. nutze nur die Kerne 0,2,4,6 und schon hast du alle HT Kerne raus.
https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-setprocessaffinitymask
Natürlich wird man dies, bei einem einfachen Programm, einfach dem Systemscheduler überlassen. Dieser ist seit Windows XP auch intelligent genug zuerst die "richtigen" Kerne und dann erst die HT Kerne auszulasten. Ändert aber nichts daran, dass man es auch selbst machen kann.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms683194(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/Dd405488(v=VS.85).aspx
Dann brauchst du nur deinem Programm sagen. nutze nur die Kerne 0,2,4,6 und schon hast du alle HT Kerne raus.
https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-setprocessaffinitymask
Natürlich wird man dies, bei einem einfachen Programm, einfach dem Systemscheduler überlassen. Dieser ist seit Windows XP auch intelligent genug zuerst die "richtigen" Kerne und dann erst die HT Kerne auszulasten. Ändert aber nichts daran, dass man es auch selbst machen kann.
Zuletzt bearbeitet:
@Qarrr³ Ich hab auch noch einen Screenshot wo alles auf der 1. CPU läuft das ist ganz sporadisch
Entwickelt in ANSI-C
Werde mal ein Minimal beispiel schreiben das nur die Core Funktionen beinhaltet das kann ich dann gerne mal zur Verfügung stellen.
Ziel ist es schon für eine Berechnung alle 48 Kerne zu nutzen
Entwickelt in ANSI-C
Werde mal ein Minimal beispiel schreiben das nur die Core Funktionen beinhaltet das kann ich dann gerne mal zur Verfügung stellen.
Ziel ist es schon für eine Berechnung alle 48 Kerne zu nutzen
Hier ein update
Quellcode dazu:
Quellcode dazu:
C:
#include <stdlib.h>
#include <stdio.h>
#include <winsock.h>
#include <math.h>
#include <process.h>
static void thread_start(void *thread) {
int i;
i = *(int*)thread;
for (;;) {
i = (int)sqrt(i++);
}
}
int main (int argc, char * argv[]) {
SYSTEM_INFO sysi;
int thread_max, i;
argc = argc;
argv = argv;
GetSystemInfo(&sysi);
thread_max = sysi.dwNumberOfProcessors;
printf("\n... thread_max=%d\n", thread_max);
printf("\n\n");
for (i = 0; i < thread_max *2; i++) {
_beginthread(thread_start, 0, &i);
}
for (;;) i = i;
// return EXIT_SUCCESS;
}
Anhänge
new Account()
Banned
- Registriert
- Mai 2018
- Beiträge
- 7.198
Was steht denn in thread max?
Ohne mich tief in der Materie auszukennen, werfe ich hier mal zwei Links rein.
https://github.com/giampaolo/psutil/issues/771
https://docs.microsoft.com/en-us/windows/desktop/memory/allocating-memory-from-a-numa-node
Dein Problem rührt daher, dass du in deinem Serversystem zwei NUMA Nodes hast.
https://msdn.microsoft.com/de-de/library/windows/desktop/ms724958(v=vs.85).aspx
EDIT: Aus meinem ersten Link
https://github.com/giampaolo/psutil/issues/771
https://docs.microsoft.com/en-us/windows/desktop/memory/allocating-memory-from-a-numa-node
Dein Problem rührt daher, dass du in deinem Serversystem zwei NUMA Nodes hast.
https://msdn.microsoft.com/de-de/library/windows/desktop/ms724958(v=vs.85).aspx
EDIT: Aus meinem ersten Link
Zuletzt bearbeitet:
- Registriert
- Juli 2001
- Beiträge
- 2.401
Ist das zufällig ein HP Server? Das Problem hatte ich letztens auch. Im BIOS kann man einstellen, ob die NUMA nodes in separaten Gruppen oder in einer Gruppe gesteuert werden. In separaten Gruppen kann man mit einem Prozess nur eine Gruppe voll ausnutzen. Wenn man den Prozess in einer zweiten Instanz startet, muss man manuell die Gruppe ändern, um die zweite NUMA node zu erwischen.
Nein leider kein HP.
Das Mainboard ist verbaut: Super Micro dual Sockel 3647 Mainboard
weißt du ob ich es da auch umstellen kann?
Blöd war grad vorher im Büro weil ich einen anderen Server überfordert hab ... schade hätte ich vorher schauen können
Das Mainboard ist verbaut: Super Micro dual Sockel 3647 Mainboard
weißt du ob ich es da auch umstellen kann?
Blöd war grad vorher im Büro weil ich einen anderen Server überfordert hab ... schade hätte ich vorher schauen können
- Registriert
- Juli 2001
- Beiträge
- 2.401
Keine Ahnung, hab nur bei HP den Knowledge Base Eintrag gesehen dazu.
Die Funktion sollte eigentlich jedes Mainboard haben, aber...…..
Im Grunde genommen umgeht man damit nur Fehler in der Programmierung auf Kosten von Leistung!
Die Funktion ändert nichts am NUMA Aufbau eines Multiprozessorsystems. An jedem Sockel ist nun mal auch der Speicher angebunden und schaltet man die NUMA Unterstützung aus, werden die einzelnen Sockel nicht mehr gruppiert.
Der Sinn von NUMA ist nunmal, dass eine Applikation weiss zu welchen Kernen auch welcher Speicher gehört und gezielt die Komponenten adressieren kann. Wie das geht, habe ich selbst bereits weiter oben verlinkt.
Die Behauptung man könnte mit einem "Prozess" nur eine Gruppe voll ausnutzen ist schwachsinnig. Natürlich kann jede Applikationen Ressourcen aus mehreren Gruppen anfordern, sonst wären alle Multisockelsysteme sinnlos.
Mal anders ausgedrückt. Ich kann auf jeden beliebigen Server ohne irgendwelche Kompatibilitätseinstellungen Prime95 starten und es werden alle Kerne genutzt. Wenn das bei der Applikation nicht der Fall ist, dann stimmt die Programmierung nicht.
https://docs.microsoft.com/en-us/windows/desktop/procthread/numa-support
Da der TE aber in seinem System mehr als 64 Kerne hat, werden diese sowieso gruppiert, dass nur nebenbei gesagt.
Im Grunde genommen umgeht man damit nur Fehler in der Programmierung auf Kosten von Leistung!
Die Funktion ändert nichts am NUMA Aufbau eines Multiprozessorsystems. An jedem Sockel ist nun mal auch der Speicher angebunden und schaltet man die NUMA Unterstützung aus, werden die einzelnen Sockel nicht mehr gruppiert.
Der Sinn von NUMA ist nunmal, dass eine Applikation weiss zu welchen Kernen auch welcher Speicher gehört und gezielt die Komponenten adressieren kann. Wie das geht, habe ich selbst bereits weiter oben verlinkt.
Die Behauptung man könnte mit einem "Prozess" nur eine Gruppe voll ausnutzen ist schwachsinnig. Natürlich kann jede Applikationen Ressourcen aus mehreren Gruppen anfordern, sonst wären alle Multisockelsysteme sinnlos.
Mal anders ausgedrückt. Ich kann auf jeden beliebigen Server ohne irgendwelche Kompatibilitätseinstellungen Prime95 starten und es werden alle Kerne genutzt. Wenn das bei der Applikation nicht der Fall ist, dann stimmt die Programmierung nicht.
https://docs.microsoft.com/en-us/windows/desktop/procthread/numa-support
Da der TE aber in seinem System mehr als 64 Kerne hat, werden diese sowieso gruppiert, dass nur nebenbei gesagt.
Support for systems that have more than 64 logical processors is based on the concept of a processor group, which is a static set of up to 64 logical processors that is treated as a single scheduling entity. Processor groups are numbered starting with 0. Systems with fewer than 64 logical processors always have a single group, Group 0.
https://docs.microsoft.com/en-us/windows/desktop/procthread/processor-groups
Zuletzt bearbeitet:
Ähnliche Themen
- Antworten
- 30
- Aufrufe
- 2.541
- Frage
- Antworten
- 39
- Aufrufe
- 11.164
- Antworten
- 19
- Aufrufe
- 2.856
Leserartikel
10 Jahre 8 Kerne - Dual-CPU vs. Ryzen (Asus DSAN-DX)
- Antworten
- 61
- Aufrufe
- 27.130
- Antworten
- 34
- Aufrufe
- 14.431