  We consider a discrete-time system comprising a first-come-first-served
queue, a non-preemptive server, and a scheduler that governs the assignment of
tasks in the queue to the server. The server has an availability state that
indicates, at each instant, whether the server is busy working on a task or is
available. In the latter case, if the queue is nonempty, then a task-assignment
control policy implemented by the scheduler either assigns a new task to the
server or allows it to rest. The server also has an integer-valued activity
state that is non-increasing during rest periods, and is non-decreasing
otherwise. An instantaneous service rate function ascribes to each possible
value of the activity state a probability that the server can complete a task
in one time step. For a typical instantaneous service rate function, the
completion probability decreases (server performance worsens) as the activity
state increases. The scheduler policy has access to the queue size and the
entire state of the server.
  In this article, we study the problem of designing scheduler policies that
stabilize the queue. We show that stability, whenever viable, can be achieved
by a simple policy that bases its decisions on the availability state, a
threshold applied to the activity state, and a flag that indicates when the
queue is empty. The supremum of the service rates achievable by stabilizing
policies can be determined by a finite search. Our results remain valid even
when the instantaneous service rate function is not monotonic.
