  Containerization technology offers lightweight OS-level virtualization, and
enables portability, reproducibility, and flexibility by packing applications
with low performance overhead and low effort to maintain and scale them.
Moreover, container orchestrators (e.g., Kubernetes) are widely used in the
Cloud to manage large clusters running many containerized applications.
However, scheduling policies that consider the performance nuances of
containerized High Performance Computing (HPC) workloads have not been
well-explored yet. This paper conducts fine-grained scheduling policies for
containerized HPC workloads in Kubernetes clusters, focusing especially on
partitioning each job into a suitable multi-container deployment according to
the application profile. We implement our scheduling schemes on different
layers of management (application and infrastructure), so that each component
has its own focus and algorithms but still collaborates with others. Our
results show that our fine-grained scheduling policies outperform baseline and
baseline with CPU/memory affinity enabled policies, reducing the overall
response time by 35% and 19%, respectively, and also improving the makespan by
34% and 11%, respectively. They also provide better usability and flexibility
to specify HPC workloads than other comparable HPC Cloud frameworks, while
providing better scheduling efficiency thanks to their multi-layered approach.
