Priority field in thread control block. Keep ready list sorted by priority. Manipulate priorities based on how long someone has been running.
Various algorithms exist.
CPU should be used as often as possible. Convoy effect, which is discussed below may result in low utilization. Number of processes that complete per unit time. I, as a user, do not care if one process or one hundred processes are done per hour - as long as my job is done fast. Time between submission and completion.