Anzahl der verwendeten CPU bestimmen



  • Hallo,

    aus vielen kommerziellen Programmen kenne ich das und würde es gerne mal selber ausprobieren. Man definiert z.B. einen Job und weist diesem 12 CPU's zu. Nun sind aber 16 CPU's verbaut. Und tatsächlich. Das Programm benutzt die 12 CPU's.

    So, aber wie macht man das? Wie kann ich einem Program/Prozess sagen, dass dieser x CPU's oder x Kerne verwendeten soll? Kann mier hier jemand weiterhelfen?

    Gruß, Thomas



  • Unter Windows gibts die Umgebungsvariable NUMBER_OF_PROCESSORS .


  • Mod

    Du benutzt ja irgendwas, um überhaupt auf mehreren Kernen zu rechnen. Und da stellst du dann eben 12 parallele Jobs ein.



  • Die Win32 API bietet die Funktion SetProcessAffinityMask, mit der man über eine Bitmask festlegt, welche CPUs/Kerne ein Prozess benutzen benutzen darf. Die Verteilung einzelner Threads auf die entsprechenden CPUs/Kerne kann man analog über SetThreadAffinityMask steuern.



  • DocShoe schrieb:

    Die Win32 API bietet die Funktion SetProcessAffinityMask, mit der man über eine Bitmask festlegt, welche CPUs/Kerne ein Prozess benutzen benutzen darf. Die Verteilung einzelner Threads auf die entsprechenden CPUs/Kerne kann man analog über SetThreadAffinityMask steuern.

    Unter Linux müsste das dann "sched_set_affinity" sein.
    http://stackoverflow.com/questions/663958/how-to-control-which-core-a-process-runs-on


Log in to reply