This article presents an insight into a peculiar interaction
between Java GC and Linux scheduler on the background of Linux
containerization technology - the CGROUP.
IMHO the CGROUP only amplifies the discussed impact, that exists
anyway.
A short summary:
Linux scheduler allocates a time slice for an application to run.
When the time slice is depleted (i.e. all the application threads
together have eaten up all the time resource), the application is
stopped until next time slice is allocated.
Many-threaded GC is able to deplete the time slice very quickly,
causing Stop-The-World effect, even in generally concurrent GC
design.
https://engineering.linkedin.com/blog/2016/11/application-pauses-when-running-jvm-inside-linux-control-groups