  Fog computing brings the functionality of the cloud near the edge of the
network with the help of fog devices/micro data centers ($mdcs$). Job
scheduling in such systems is a complex problem due to the hierarchical and
geo-distributed nature of fog devices. We propose two fog scheduling
algorithms, named $FiFSA$ (Hierarchical $Fi$rst $F$og $S$cheduling $A$lgorithm)
and $EFSA$ ( Hierarchical $E$lected $F$og $S$cheduling $A$lgorithm). We
consider a hierarchical model of fog devices, where the computation power of
fog devices present in higher tiers is greater than those present in lower
tiers. However, the higher tier fog devices are located at greater physical
distance from data generation sources as compared to lower tier fog devices.
Jobs with varying granularity and cpu requirements have been considered. In
general, jobs with modest cpu requirements are scheduled on lower tier fog
devices, and jobs with larger cpu requirements are scheduled on higher tier fog
devices or the cloud data center $(cdc)$. The performance of $FiFSA$ and $EFSA$
has been evaluated using a real life workload trace on various simulated fog
hierarchies as well as on a prototype testbed. Employing $FiFSA$ offers an
average improvement of 27% and 57.9% in total completion time and an
improvement of 32% and 61% in cost as compared to Longest Time First ($LTF$)
and cloud-only ($cdc-only$) scheduling algorithms, respectively. Employing
$EFSA$ offers an average improvement of 48% and 70% in total completion time
and an improvement of 52% and 72% in cost as compared to $LTF$ and $cdc-only$
respectively.
