Grid Manager is not able to determine if a job is idle or not, only that the process is running. For things like Workspace Servers you can set an inactive client timeout, so the Object Spawner terminates the Workspace Server if it has not run any code within a given time period. This would prevent idle workspace servers from a user starting and connecting with Enterprise Guide and then leaving it running for example. There is a maxClockTIme limit in the Grid configuration that would prevent any jobs from running over that time, but this would kill the job regardless of whether or not it is idle.
You can set priority based on the queue the job is submitted to, so by routing batch jobs to a batch queue with a higher priority than the others would give them priority, but this refers only to which job will be sent to a host for execution first, and does not refer to consumed resources, if other jobs are already consuming all job slots for instance, the batch job would still have to wait for a job slot to open up.
Preemption allows for one job to pause another, so if all the job slots are full it would pause a lower priority job and then use the slot that job was using for instance. Typically though you would not want to preempt interactive sessions (like Workspace Servers) as this would essentially kick users out.
Configuring Queues
https://go.documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/gridref/n0d1gf0iix0gprn14odmxfw8l662.htm
--
Greg Wootton | Principal Systems Technical Support Engineer