[SOLVED] On a 32bit OS on 64bit hardware, can a single or multiple processes utilize all CPU cores?
Linux - SoftwareThis forum is for Software issues.
Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
On a 32bit OS on 64bit hardware, can a single or multiple processes utilize all CPU cores?
For historical reasons*, I am running a 32bit PAE Debian system on a 64bit machine with <4GB RAM and 4 logical cores.
I know about the RAM limitations for 32bit, but what about CPU?
I always thought 32bit means it can run only on 1 core at a time - without really thinking much about it.
htop shows all 4 CPUs.
I have a long-running script with some external commands, htop says that CPU utilization is well above 100%, meaning more than 1 core is active at any given time.
Is this actually possible on a 32bit system?
Can a single process utilize more than 1 core?
Can I launch several processes (say, 4) in parallel, so they all utilize all 4 cores @ 100%?
htop's output sure looks like that is possible, but I'm not sure if it's deluding me somehow.
Because if that is possible, what is the limitation of 32bit vs 64bit CPU-wise?
I always thought 32bit means it can run only on 1 core at a time - without really thinking much about it.
htop shows all 4 CPUs.
I have a long-running script with some external commands, htop says that CPU utilization is well above 100%, meaning more than 1 core is active at any given time.
Is this actually possible on a 32bit system?
Can a single process utilize more than 1 core?
Certainly - if (properly) multi-threaded.
Some ditros used to insist on a mono-CPU configuration - (very) early on there were reasons, but not later in the 32-bit cycle. Check your kernel config - it obviously has the SMP option set for you. There will be a limit to the CPU count in there also - maybe 16 or 32; been too many years since I looked for 32-bit.
Because if that is possible, what is the limitation of 32bit vs 64bit CPU-wise?
As far as I know there is no any difference between 32 and 64 bit systems (from this point of view). So both can have parallel execution (multitask) and multithreaded environment.
32-bit software can run on a 64-bit machine in a processor compatibility mode. Consider running the 32-bit system as a virtual machine guest on a 64-bit native host.
As far as I know there is no any difference between 32 and 64 bit systems (from this point of view). So both can have parallel execution (multitask) and multithreaded environment.
Thinking about it more I can see how 32/64 bitness does not define a computer's capability to multitask or use multiple processors in parallel.
Funny, this came as a bit of a surprise for me, never had much interest in the underlying technology...
So, to recap, unless I have lots of RAM or lots of processors it really doesn't matter (almost at all) whether the OS is 32 or 64bit, even if the hardware is clearly 64bit capable?
Am I remembering correctly that 64bitness and multiple processors in consumer hardware just showed up at the same time? And it's a coincidence?
Am I remembering correctly that 64bitness and multiple processors in consumer hardware just showed up at the same time? And it's a coincidence?
64-bit word size and chip multiprocessors showed up at about the same time in PCs (circa 2005).
However, the symmetric multiprocessor programming model has been around since the 1980s. There were multiprocessor 486 and Pentium PCs (just not single-chip).
Ed
So, to recap, unless I have lots of RAM or lots of processors it really doesn't matter (almost at all) whether the OS is 32 or 64bit, even if the hardware is clearly 64bit capable?
Yes, looks like it is true.
Quote:
Originally Posted by ondoho
Am I remembering correctly that 64bitness and multiple processors in consumer hardware just showed up at the same time? And it's a coincidence?
For historical reasons*, I am running a 32bit PAE Debian system on a 64bit machine with <4GB RAM and 4 logical cores.
I know about the RAM limitations for 32bit, but what about CPU?
I always thought 32bit means it can run only on 1 core at a time - without really thinking much about it.
htop shows all 4 CPUs.
I have a long-running script with some external commands, htop says that CPU utilization is well above 100%, meaning more than 1 core is active at any given time.
Is this actually possible on a 32bit system?
Can a single process utilize more than 1 core?
Can I launch several processes (say, 4) in parallel, so they all utilize all 4 cores @ 100%?
htop's output sure looks like that is possible, but I'm not sure if it's deluding me somehow.
Because if that is possible, what is the limitation of 32bit vs 64bit CPU-wise?
* and yes, I will change that soon
People claim that a 32 bit CPU uses 32 bit address which means 2^32 = 4 GB and so, such a CPU can only address a maximum of 4 GB of RAM.
However, in the case of x86 CPUs that support PAE, they can address more than that. The Pentium Pro was the first one capable of this and if you have the right Win NT version, it would utilize PAE.
I think the Pentium Pro was able to do 36 bit addressing = 2^36 = 64 GB
It seems as if in general, the various Windowses did not use PAE since some drivers did not work properly.
So, there is this myth that x86 CPUs are limited to 4 GB and Windows is limited to 3.3 GB.
According to that page, x86_64 CPUs use 4 level of paging.
A single process usually means 1 thread which means it can use 1 core. The program needs to spawn worker threads and the OS can schedule the other threads onto the other CPUs cores.
The OS might even move a thread from one core to the next.
I think they do this to keep the cores cool enough on modern CPUs and modern CPUs sometimes boost the clock speed for short periods of time (Intel calls it Turbo and AMD calls it something else).
Other than that, x86 CPUs have 8 registers: eax, ebx, ecx, edx, esp, ebp, ip, flag and they might also have the SSE registers, xmm0 to xmm7 and the FPU would have fp0 to fp7.
x86_64 CPUs double the register count.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.