APPLIED: [SRU][X][PATCH 0/1] LP: #1750038 - stuck in D state in NFS op
Kleber Souza
kleber.souza at canonical.com
Tue May 15 10:42:02 UTC 2018
On 05/08/18 08:34, Daniel Axtens wrote:
> From: Daniel Axtens <daniel.axtens at canonical.com>
>
> == SRU Justification ==
>
> [Impact]
>
> Occasionally an application gets stuck in "D" state on NFS reads/sync
> and close system calls. All the subsequent operations on the NFS
> mounts are stuck and a reboot is required to rectify the situation.
>
> [Fix]
>
> Use GPF_NOIO in some allocations in writeback to avoid a
> deadlock. This is upstream in: ae97aa524ef4 ("NFS: Use GFP_NOIO for
> two allocations in writeback")
>
> [Testcase]
> See "Test scenario" in the previous description below.
>
> A test kernel with this patch was tested heavily (>100hrs of test
> suite) without issue.
>
> [Regression Potential]
> This changes memory allocation in NFS to use a different policy. This
> could potentially affect NFS, or increase the general risk of complex
> OOMs.
>
> However, the patch is already in Artful and Bionic without issue.
>
> The patch does not apply to Trusty.
>
> == Previous Description ==
>
> Using Ubuntu Xenial user reports processes hang in D state waiting for
> disk io.
>
> Ocassionally one of the applications gets into "D" state on NFS
> reads/sync and close system calls. based on the kernel backtraces
> seems to be stuck in kmalloc allocation during cleanup of dirty NFS
> pages.
>
> All the subsequent operations on the NFS mounts are stuck and reboot
> is required to rectify the situation.
>
> [Test scenario]
>
> 1) Applications running in Docker environment
> 2) Application have cgroup limits --cpu-shares --memory -shm-limit
> 3) python and C++ based applications (torch and caffe)
> 4) Applications read big lmdb files and write results to NFS shares
> 5) use NFS v3 , hard and fscache is enabled
> 6) now swap space is configured
>
> This prevents all other I/O activity on that mount to hang.
>
> we are running into this issue more frequently and identified few
> applications causing this problem.
>
> As updated in the description, the problem seems to be happening when
> exercising the stack
>
> try_to_free_mem_cgroup_pages+0xba/0x1a0
>
> we see this with docker containers with cgroup option --memory
> <USER_SPECIFIED_MEM>.
>
> whenever there is a deadlock, we see that the process that is hung has
> reached the maximum cgroup limit, multiple times and typically cleans
> up dirty data and caches to bring the usage under the limit.
>
> This reclaim path happens many times and finally we hit probably a
> race get into deadlock
>
> Benjamin Coddington (1):
> NFS: Use GFP_NOIO for two allocations in writeback
>
> fs/nfs/pagelist.c | 16 ++++++++++++----
> 1 file changed, 12 insertions(+), 4 deletions(-)
>
Applied to xenial/master-next branch.
Thanks,
Kleber
More information about the kernel-team
mailing list