Tcl Source Code

View Ticket
Login
Ticket UUID: 3065485
Title: TIP 377 : Portably determine number of processors
Type: RFE Version: None
Submitter: andreas_kupries Created on: 2010-09-13 19:15:29
Subsystem: 54. Configuration Reporting Assigned To: vasiljevic
Priority: 5 Medium Severity:
Status: Open Last Modified: 2010-09-24 22:58:51
Resolution: None Closed By:
    Closed on:
Description:
For initialization of thread pools to a sensible size it would be useful to know the number of processors/cores/... the current machine has.
The following link has quite a bit of info for various platforms:
http://stackoverflow.com/questions/150355/programmatically-find-the-number-of-cores-on-a-machine

The C-level API might be best to have in Tcl itself, the Tcl command however should be in the Thread package, IMHO.
User Comments: egavilan added on 2010-09-24 22:58:51:
On modern BSDs, you can get the number of CPUs used by the kernel with

    int numCPU;
    int mib[2];
    size_t len; 

    /* set the mib for hw.ncpu */
    mib[0] = CTL_HW;
    mib[1] = HW_NCPU;

    /* get the number of CPUs from the system */
    sysctl(mib, 2, &numCPU, &len, NULL, 0);


the #includes needed are

 #include <sys/types.h>
 #include <sys/sysctl.h>

for {Free|Dragonfly}BSD and

#include <sys/param.h>
#include <sys/sysctl.h>

For {Open|Net}BSD

andreas_kupries added on 2010-09-17 02:57:54:

File Added - 386869: numcpu.c

andreas_kupries added on 2010-09-16 22:40:24:
Now a proper TIP.

andreas_kupries added on 2010-09-15 05:23:19:

File Added - 386677: numcpu.c

Attachments: