* Getting Number of CPU(-core)s and giving it as the --jobs argument to GNU Make @ 2007-09-11 14:53 Nordlöw 2007-09-11 17:16 ` Peter Dyballa 0 siblings, 1 reply; 9+ messages in thread From: Nordlöw @ 2007-09-11 14:53 UTC (permalink / raw) To: help-gnu-emacs How can I, from within Emacs in a platform independent way, read out the number of CPUs/cores my local machine has? I then believe it should be convenient to give this argument to make (through the -j,-- jobs flag). Thus we will always get full utilization when compiling on multi-CPU/core machines. Thanks, Nordlöw ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Getting Number of CPU(-core)s and giving it as the --jobs argument to GNU Make 2007-09-11 14:53 Getting Number of CPU(-core)s and giving it as the --jobs argument to GNU Make Nordlöw @ 2007-09-11 17:16 ` Peter Dyballa 2007-09-11 20:20 ` Dieter Wilhelm [not found] ` <mailman.725.1189541941.18990.help-gnu-emacs@gnu.org> 0 siblings, 2 replies; 9+ messages in thread From: Peter Dyballa @ 2007-09-11 17:16 UTC (permalink / raw) To: Nordlöw; +Cc: help-gnu-emacs Am 11.09.2007 um 16:53 schrieb Nordlöw: > How can I, from within Emacs in a platform independent way, read out > the number of CPUs/cores my local machine has? Apropos cpu? And then checking the manual pages? Reading a file in / proc file system might work, too. -- Greetings Pete You can learn many things from children. How much patience you have, for instance. -- Franklin P. Jones ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Getting Number of CPU(-core)s and giving it as the --jobs argument to GNU Make 2007-09-11 17:16 ` Peter Dyballa @ 2007-09-11 20:20 ` Dieter Wilhelm 2007-09-11 21:52 ` Peter Dyballa [not found] ` <mailman.725.1189541941.18990.help-gnu-emacs@gnu.org> 1 sibling, 1 reply; 9+ messages in thread From: Dieter Wilhelm @ 2007-09-11 20:20 UTC (permalink / raw) To: Peter Dyballa; +Cc: help-gnu-emacs, Nordlöw Peter Dyballa <Peter_Dyballa@Web.DE> writes: > Am 11.09.2007 um 16:53 schrieb Nordlöw: > >> How can I, from within Emacs in a platform independent way, read out >> the number of CPUs/cores my local machine has? > > Apropos cpu? And then checking the manual pages? Reading a file in / > proc file system might work, too. I checked the following: dieter@debby:~$ cat /proc/cpuinfo|grep "proc\|cores\|model" processor : 0 model : 15 model name : Intel(R) Core(TM)2 CPU 6400 @ 2.13GHz cpu cores : 2 processor : 1 model : 15 model name : Intel(R) Core(TM)2 CPU 6400 @ 2.13GHz cpu cores : 2 That's a bit confusing, I thought I had *one* processor with *two* cores and the content in /proc/cpuinfo claims two processor, 0 and 1 with two cores, respectively, where am I wrong? -- Best wishes H. Dieter Wilhelm Darmstadt, Germany ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Getting Number of CPU(-core)s and giving it as the --jobs argument to GNU Make 2007-09-11 20:20 ` Dieter Wilhelm @ 2007-09-11 21:52 ` Peter Dyballa 2007-09-11 22:11 ` Dieter Wilhelm 0 siblings, 1 reply; 9+ messages in thread From: Peter Dyballa @ 2007-09-11 21:52 UTC (permalink / raw) To: Dieter Wilhelm; +Cc: help-gnu-emacs, Nordlöw Am 11.09.2007 um 22:20 schrieb Dieter Wilhelm: > That's a bit confusing, I thought I had *one* processor with *two* > cores and the content in /proc/cpuinfo claims two processor, 0 and 1 > with two cores, respectively, where am I wrong? HT – hyper-threading (parallel pipelines and parallel memory buses). Many modern intel CPUs claim they are two (Xeons are four, or even eight, I think). They are right, somehow: mostly you can assume that in your case four commands are (can be) executed at the same time. For your PC 'make -j 4' will improve compilation time. So doing in bash cores=`grep cores /proc/cpuinfo | wc -l` if [ $cores -eq 0 ]; then cores=1; fi procs=`grep processor /proc/cpuinfo | wc -l` thrds=`expr $cores \* $procs` or in (t)csh set cores=`grep cores /proc/cpuinfo | wc -l` if ($cores == 0) set cores=1 set procs=`grep processor /proc/cpuinfo | wc -l` set thrds=`expr $cores \* $procs` would determine how many compilation threads can be executed in $thrds. And it should also work when the CPU has no core ... Solaris, AIX, HP-UX, IRIX ... have their own commands. Anyway, a modern GNU make is able to determine by itself what's best. This is done via 'make -j' without a limiting number. -- Mit friedvollen Grüßen Pete Der Bezug einer Zeitung oder der Kauf eines Buches gibt niemand das Recht, an die Verfasserinnen von Artikeln oder Büchern dreiste Briefe zu schreiben. (Friedrich Sieburg) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Getting Number of CPU(-core)s and giving it as the --jobs argument to GNU Make 2007-09-11 21:52 ` Peter Dyballa @ 2007-09-11 22:11 ` Dieter Wilhelm 2007-09-11 22:29 ` Peter Dyballa 0 siblings, 1 reply; 9+ messages in thread From: Dieter Wilhelm @ 2007-09-11 22:11 UTC (permalink / raw) To: Peter Dyballa; +Cc: help-gnu-emacs, Nordlöw Peter Dyballa <Peter_Dyballa@Web.DE> writes: > Am 11.09.2007 um 22:20 schrieb Dieter Wilhelm: > >> That's a bit confusing, I thought I had *one* processor with *two* >> cores and the content in /proc/cpuinfo claims two processor, 0 and 1 >> with two cores, respectively, where am I wrong? > > HT – hyper-threading (parallel pipelines and parallel memory buses). > Many modern intel CPUs claim they are two (Xeons are four, or even > eight, I think). They are right, somehow: mostly you can assume that > in your case four commands are (can be) executed at the same time. I see, thanks for the explanation. > For your PC 'make -j 4' will improve compilation time. So doing in > bash > > cores=`grep cores /proc/cpuinfo | wc -l` > if [ $cores -eq 0 ]; then cores=1; fi > procs=`grep processor /proc/cpuinfo | wc -l` > thrds=`expr $cores \* $procs` Wait! I'm not the guy which asked for this make related problem. I'm just a miscellaneous ignorant who sneaked into this threat, I'm sorry for that. > > or in (t)csh > > set cores=`grep cores /proc/cpuinfo | wc -l` > if ($cores == 0) set cores=1 > set procs=`grep processor /proc/cpuinfo | wc -l` > set thrds=`expr $cores \* $procs` > > would determine how many compilation threads can be executed in > $thrds. And it should also work when the CPU has no core ... Solaris, > AIX, HP-UX, IRIX ... have their own commands. > > > Anyway, a modern GNU make is able to determine by itself what's best. > This is done via 'make -j' without a limiting number. -- Best wishes H. Dieter Wilhelm Darmstadt, Germany ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Getting Number of CPU(-core)s and giving it as the --jobs argument to GNU Make 2007-09-11 22:11 ` Dieter Wilhelm @ 2007-09-11 22:29 ` Peter Dyballa 0 siblings, 0 replies; 9+ messages in thread From: Peter Dyballa @ 2007-09-11 22:29 UTC (permalink / raw) To: Dieter Wilhelm; +Cc: help-gnu-emacs, Nordlöw Am 12.09.2007 um 00:11 schrieb Dieter Wilhelm: > Wait! I'm not the guy which asked for this make related problem. I'm > just a miscellaneous ignorant who sneaked into this threat It's just a problem with my 'respond all' button. BTW, I remember that some Linux 'wc -l' was returning something like '<some SPCes><number>'. Such "numbers" can't be multiplied or added or subtracted or divided ... but they can be purified! -- Mit friedvollen Grüßen Pete Upgraded: Didn't work the first time. ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <mailman.725.1189541941.18990.help-gnu-emacs@gnu.org>]
* Re: Getting Number of CPU(-core)s and giving it as the --jobs argument to GNU Make [not found] ` <mailman.725.1189541941.18990.help-gnu-emacs@gnu.org> @ 2007-09-12 6:30 ` Unknown 2007-09-12 8:20 ` Nordlöw 0 siblings, 1 reply; 9+ messages in thread From: Unknown @ 2007-09-12 6:30 UTC (permalink / raw) To: help-gnu-emacs Dieter Wilhelm, on 09/11/2007 04:20 PM said: > > That's a bit confusing, I thought I had *one* processor with *two* > cores and the content in /proc/cpuinfo claims two processor, 0 and 1 > with two cores, respectively, where am I wrong? > That's the way it shows up - it's a dual core processor, and the information is the same for them except for the core number. If you had two dual core CPUs in your system, you would see four entires in /proc/cpuinfo. This is normal, because a dual core system (mostly) performs just as a dual processor system would. It's more or less like having two CPUs. In fact, many utilities and programming languages will even say that you have two CPUs when you really only have one dual-core CPU. That having been said, the only cross-platform method I know of for finding the number of cores (processors) on a system would be in .NET/Mono, since that works whereever there is an implmementation of .NET. Other than that, the only way that I know is to look in the /proc/cpuinfo file on Linux. -- Mike -- Michael B. Trausch http://www.trausch.us/ Pidgin 2.1.1 and plugins for Ubuntu Feisty! (And Thunderbird 2.0.0.6, too!) http://www.trausch.us/pidgin ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Getting Number of CPU(-core)s and giving it as the --jobs argument to GNU Make 2007-09-12 6:30 ` Unknown @ 2007-09-12 8:20 ` Nordlöw 2007-09-12 9:38 ` Peter Dyballa 0 siblings, 1 reply; 9+ messages in thread From: Nordlöw @ 2007-09-12 8:20 UTC (permalink / raw) To: help-gnu-emacs On 12 Sep, 08:30, Michael Trausch <"mike|s/\\x40/\\./g;s/|.*|/\\x40/g;| trausch"@us> wrote: > Dieter Wilhelm, on 09/11/2007 04:20 PM said: > > > > > That's a bit confusing, I thought I had *one* processor with *two* > > cores and the content in /proc/cpuinfo claims two processor, 0 and 1 > > with two cores, respectively, where am I wrong? > > That's the way it shows up - it's a dual core processor, and the > information is the same for them except for the core number. If you had > two dual core CPUs in your system, you would see four entires in > /proc/cpuinfo. This is normal, because a dual core system (mostly) > performs just as a dual processor system would. It's more or less like > having two CPUs. > > In fact, many utilities and programming languages will even say that you > have two CPUs when you really only have one dual-core CPU. > > That having been said, the only cross-platform method I know of for > finding the number of cores (processors) on a system would be in > .NET/Mono, since that works whereever there is an implmementation of > .NET. Other than that, the only way that I know is to look in the > /proc/cpuinfo file on Linux. In C on Linux and Mac OS X the following detects number of CPUs: #include <unistd.h> #ifdef __APPLE__ #include <sys/sysctl.h> #endif /*** * Detect the number of CPUs/Processors/Cores Online. * @return number of CPUs found. */ static inline int get_CPUmult(void) { int num = 1; /* default to one CPU */ #if defined(__APPLE__) size_t len = sizeof(num); int mib[2]; mib[0] = CTL_HW; mib[1] = HW_NCPU; if (sysctl(mib, 2, &num, &len, 0, 0) < 0 || len != sizeof(num)) { num = 1; } #elif defined(_SC_NPROCESSORS_ONLN) num = sysconf(_SC_NPROCESSORS_ONLN); #endif return num; } /Nordlöw ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Getting Number of CPU(-core)s and giving it as the --jobs argument to GNU Make 2007-09-12 8:20 ` Nordlöw @ 2007-09-12 9:38 ` Peter Dyballa 0 siblings, 0 replies; 9+ messages in thread From: Peter Dyballa @ 2007-09-12 9:38 UTC (permalink / raw) To: Nordlöw; +Cc: help-gnu-emacs Am 12.09.2007 um 10:20 schrieb Nordlöw: > In C on Linux and Mac OS X the following detects number of CPUs: Wouldn't sysctl -n hw.logicalcpu_max in Mac OS X or Darwin be a bit simpler? (There are also \x18 hw.activecpu, hw.physicalcpu, hw.physicalcpu_max, and hw.logicalcpu.) -- Greetings Pete A child of five could understand this! Fetch me a child of five. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2007-09-12 9:38 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-09-11 14:53 Getting Number of CPU(-core)s and giving it as the --jobs argument to GNU Make Nordlöw 2007-09-11 17:16 ` Peter Dyballa 2007-09-11 20:20 ` Dieter Wilhelm 2007-09-11 21:52 ` Peter Dyballa 2007-09-11 22:11 ` Dieter Wilhelm 2007-09-11 22:29 ` Peter Dyballa [not found] ` <mailman.725.1189541941.18990.help-gnu-emacs@gnu.org> 2007-09-12 6:30 ` Unknown 2007-09-12 8:20 ` Nordlöw 2007-09-12 9:38 ` Peter Dyballa
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).