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.
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!
Best Answer
Absent somebody pointing out a way to do this within Parallels itself, here's a solution using only native utilities - thanks @user3439894 for suggesting a Launch Agent!
/usr/local/bin/parallels_vm_starting
shell script andchmod 755
it to make it executable:~/Library/LaunchAgents/parallels_vm_startup.plist
with this content:This will monitor the file
/Library/Preferences/Parallels/parallels_dhcp_leases
, which Parallels modifies when the VM starts (assuming the VM has networking enabled), and will execute the shell script when that happens.Note: the DHCP leases file is regularly updated while the VM is up. If you only want to react to a VM being launched or shut down, monitor the file
/Library/Preferences/Parallels/vmdirectorylist.desktop.xml
instead.launchctl load ~/Library/LaunchAgents/parallels_vm_startup.plist