Is there an easy way to change the I/O priority of a whole group of processes the way renice -g
does? It seems like only changing the I/O priority of a single process is supported by ionice
. If this can't be done, can someone please point me to the the relevant API calls (I'm not at all familiar with the POSIX api) so that I can write a quick command line utility to implement this functionality myself?
dsimcha's questions
When I renice
a multithreaded process in Ubuntu 10.04, then view the results in top
, it seems that only the main thread actually gets reniced. All the other threads retain their old nice value. What's the easiest way to renice all threads in a process instead of just the main thread?
I'm running a setup consisting of a Linux host OS and a Windows 7 guest (VMware Workstation). I'm trying to run 16 CPU-bound background jobs on the Linux host at nice values of 19 (the lowest possible priority; one for each virtual CPU) and simultaneously use the Windows VM as a normal desktop OS. For some reason the Linux background jobs make my Windows VM grind to a halt even though VMware's nice value is 0.
If it helps, I'm running an 8-core machine with hyperthreading, so 16 virtual CPUs. Since VMware Workstation only supports virtualizing 8 cores, only 8 of the cores are visible in the Windows guest.
Edit: The background jobs I'm running are almost purely CPU bound and perform virtually no I/O.
Edit # 2: It's not an issue with hyperthreading messing up scheduling. Disabling hyperthreading in the BIOS solves nothing.
How much overhead does x86/x64 virtualization (I'll probably be using VirtualBox, possbly VMWare, definitely not paravirtualization) have for each of the following operations a Win64 host and Linux64 guest using Intel hardware virtualization?
Purely CPU-bound, user mode 64-bit code
Purely CPU-bound, user mode 32-bit code
File I/O to the hard drive (I care mostly about throughput, not latency)
Network I/O
Thread synchronization primitives (mutexes, semaphores, condition variables)
Thread context switches
Atomic operations (using the
lock
prefix, things like compare-and-swap)
I'm primarily interested in the hardware assisted x64 case (both Intel and AMD) but wouldn't mind hearing about the unassisted binary translation and x86 (i.e. 32-bit host and guest) cases, too. I'm not interested in paravirtualization.
In Unix-like OS's, what's the point of giving the owner of a file anything less than 7 (rwx) for file permissions? The owner can trivially change the owner permissions for his/her files, and so can a cracker if the acct. is compromised. Setting the owner permission to anything other than 7 seems to just get in the way w/o producing any actual security improvements.
On Linux (and other Unix-like OS's if there's a general answer), is there an easy way to get an output similar to the time
command (current real time, user, and system CPU usage totals) for a process that is still running?