Jenkins doesn’t recognize “nice” because that’s a Unix-only feature; I’m not sure if there is an equivalent Windows feature. Of course, if your steps are shells, you can tell those to nice themselves. You could also “nice” your slave nodes when you launch them, if you do so by script. Niceness is inherited, so a slave node running at a given nice level will run jobs at that same nice level.
Jenkins itself tends to be rather light on the CPU, but it takes up networking resources and disk I/O because it receives output from the jobs it runs and logs them. Idle slaves are light, and a slave in use only adds a little overhead, mostly the network traffic of sending logs back to the server.
When you configure a job, it has an “Execute concurrent builds if necessary” flag. With that turned on, you can run more than one in parallel.
If you want some jobs to be “nicer” than others on the same machine, you can use the Jenkins Heavy Job Plugin. Basically, while a normal job takes up one executor (a node can have one or more executors, each capable of running a job), a heavy job can take up multiple ones. So if you have job A (an easy one) and job B (a resource hog), you can tell Jenkins that Job B has a “weight” of (say) 3. If you had a node with four executors, this would mean:
1: Job B would not run until there are three free executors, so it would wait until no more than one copy of job A was running
2: Job B would take up three executors, so when it was running, Jenkins would put no more than one copy of job A on that node, and not another version of job B (to run two job B’s on the same node, you’d need at least six executors).
Hope this helps,
--Rob