  Serverless computing enables a new way of building and scaling cloud
applications by allowing developers to write fine-grained serverless or cloud
functions. The execution duration of a cloud function is typically
short-ranging from a few milliseconds to hundreds of seconds. However, due to
resource contentions caused by public clouds' deep consolidation, the function
execution duration may get significantly prolonged and fail to accurately
account for the function's true resource usage. We observe that the function
duration can be highly unpredictable with huge amplification of more than 50x
for an open-source FaaS platform (OpenLambda). Our experiments show that the OS
scheduling policy of cloud functions' host server can have a crucial impact on
performance. The default Linux scheduler, CFS (Completely Fair Scheduler),
being oblivious to workloads, frequently context-switches short functions,
causing a turnaround time that is much longer than their service time.
  We propose SFS (Smart Function Scheduler),which works entirely in the user
space and carefully orchestrates existing Linux FIFO and CFS schedulers to
approximate Shortest Remaining Time First (SRTF). SFS uses two-level scheduling
that seamlessly combines a new FILTER policy with Linux CFS, to trade off
increased duration of long functions for significant performance improvement
for short functions. We implement {\proj} in the Linux user space and port it
to OpenLambda. Evaluation results show that SFS significantly improves short
functions' duration with a small impact on relatively longer functions,
compared to CFS.
