You have a lot of cores, and hyperthreading makes it appear to the system that you have twice as many. The reason you may not ever see activity on half your cores is because the system is not utilizing them. While the system may be multiprocessor aware, not necessarily will every application you run. Today's processors are very very fast, which means that most of your cores will sit idle most of the time unless you're doing something really really interesting.
If you want to see your cores being utilized, try this google search, which returns multicore aware Mandelbrot set generators. Another suggestion is to try downloading HandBrake and installing and setting it to transcoding some large wmv9 files with deblock and denoise, set to maximum for good measure, but don't expect nice transcodes with those settings; its just something for your cores to chew on so you can watch in Activity Monitor that you can set processes that will use all cores. If you're not satisfied, run multiple instances of these applications. What I used to do to see the cores utilized is launch a ridiculous number of Chess.app instances and set them all to playing against the computer. If you want to try this, have /Applications/Utilities/Activity Monitor.app open, and open /Applications/Utilities/Terminal.app and enter this line, hit return, hit the up arrow and repeat over and over until you think you have enough instances running to work your processors,:
/Applications/Chess.app/Contents/MacOS/Chess &
Regarding Parallels, I searched the forums and the documentation. Interestingly, neither the User Guide, nor the Data Sheet, nor any list of features that I could find say anything about how many cores you can assign to each VM. I believe this may be to how things get created in parallel, and while there were issues with multicore in previous versions (if the number of forum posts regarding it are any indication), perhaps they decided to move forward with publishing documentation sans any mention of the abilities to utilize multiprocessor/multicore.
That being said, I found some other sources for you that answer your question
How many CPUs can be assigned to a Parallels Desktop VM?
definitively:
- according to a wikipedia page comparison between Fusion and Parallels:
Up to 8 processors per VM & Multi Core
In comparison, Fusion 5 and the current version of Parallels support up to 8 CPUs and 8 GB of RAM.
Both Windows and Linux guest operating systems can be installed via an easy installer, and Parallels supports up to eight virtual CPUs, and 64-bit versions of Windows and Mac OS X Server.
Please bear in mind this last citation is for Parallels 5, which should be good news, as subsequent versions of Perallels will only increase the features and hopefully the robustness of the application.
FWIW, while I have switched to Open Source software for virtualization, I was an early adopter of Parallels and found their support to be excellent. They took good care of me and answered all of the many questions and problems I encountered in timely fashion. That was some time ago (~2005/6 during beta, and the release of 3.0), and I have heard complaints since then, but that was not my personal experience with their forums or their phone support. So I have encouraged others to register and seek help and answers to technical questions there. I would recommend you do this to hear from the source exactly what you want to know regarding how Parallels handles multiprocessing/multicore.
can I assign all 8 cores to the VM and still use Mac OS X?
Yes, absolutely, OS X is very good at handling resources. It is possible you may not even notice much is happening. I have myself a rather anemic (by today's standards) core2duo, and with 15 instances of HandBrakeCLI running transcodes, and both my puny cores maxed out, I really couldn't notice anything from the desktop while I continued to surf and use other day to day applications. I did keep an eye on how much memory was being used, and I didn't even get close to maxing my 8GB of RAM, nor did I notice any swapping. But if you have a slow (4200 rpm) harddrive, I think you'll probably notice something.
It might be that the majority of the OSes that people virtualise (or at least those doing so with Parallels) can only use 4 GB of RAM anyway because they are 32-bit OSes, so it would not be necessary to have more than that. You shouldn't need more than 4 GB of RAM in the virtual machine anyway, so you partly answered your question. The majority of laptops these days don't have a massive 16 GB of RAM like you do; Parallels is only looking at the market side of things there.
If you really need more, why don't you just Boot Camp (you can Boot Camp with Linux as well); that way, you will use all of your computer's power if you need it. With your SSD, it won't take too long to restart.
Best Answer
Alright, let's see what we can do here!
1) Suspending vs. Shutting Down in Parallels
a) How it affects the host OS
Both options do not affect the host operating system - in your case, OS X - from a resource usage standpoint. Rather, they only affect how the guest OS will boot next time - (i.e. waking up from sleep vs. a cold boot).
When suspending, it works just like a physical Windows machine: it saves the current state of the operating system for later use. Unlike a physical machine, however, it uses no extra battery power, RAM, or CPU cycles to do so; Parallels unloads it from RAM and stores it purely on the hard disk (think of it closer to a Windows laptop "hibernating" than "sleeping").
b) How it affects the guest OS
On the other hand, both of these options have a more prominent effect on the guest OS. Aside from the standard reasons one might want to shut down a computer versus letting it sleep (updates, troubleshooting, etc.), there's one other reason to shut down the virtual machine: Parallels locks down quite a few of the guest OS settings (boot order, coherence mode, shared apps, etc.) and prevents them from being changed if the virtual machine state is anything other than shut down.
c) Which should be used?
In my personal experience with Parallels, I have found no issues with using sleep consistently between sessions. The only time I shut down virtual machines is if I want to change some of the Parallels settings for that particular guest OS or if I encounter an odd bug that can pop up in Windows from time to time.
2) Resource Usage
a) RAM
A set amount of RAM is reserved specifically for the guest OS - which you indicated to be 2GB; Parallels will not use significantly more or less.
b) CPU
i) Usage
CPU, like the guest OS hard disk, is used on an "as-needed" basis and is accurately reported in the Activity Monitor.
ii) Reservation or parking
Parallels will not reserve (or "park") cores; the option you see in the guest OS options (Hardware > CPU & Memory > CPUs) merely limits the number cores that the guest OS will have access to rather than purely reserving them exclusively. This way the guest OS can extensively use these assigned cores, and if the guest OS begins to have a large work load, the host OS can use the remaining cores to continue its business without having processes choked from the guest OS.
Hopefully that helps you out! If you have any questions or need clarification on any of that, comment and let me know!