Назад | Перейти на главную страницу

XFS: возможный тупик выделения памяти в kmem_alloc

Я выполняю анализ данных, который влечет за собой загрузку большой матрицы данных размером ~ 112 ГБ в файл с отображением памяти, используя R язык программирования, в частности bigmemory пакет (см. https://cran.r-project.org/web/packages/bigmemory/index.html). В матрице 80664 столбца и 356751 строка.

Хранилище данных состоит из файловой системы XFS, смонтированной по NFS.

Варианты монтирования XFS:

xfs noatime,nodiratime,logbufs=8,logbsize=256k,largeio,inode64,swalloc,allocsize=131072k

NFS экспортирует файловую систему, используя следующие параметры:

rw,async,no_subtree_check,no_root_squash

Клиент NFS монтирует FS, используя следующие параметры:

defaults,async,_netdev

Через некоторое время при загрузке файла вычислительный узел перестает отвечать (включая другие узлы в кластере), и журналы файлового сервера сообщают о следующих ошибках:

XFS: possible memory allocation deadlock in kmem_alloc (mode:0x250)

Что я могу решить, отбросив кеш следующим образом:

echo 3 > /proc/sys/vm/drop_caches

Файловый сервер имеет 16 ГБ памяти.

Я уже читал следующий блог:

https://blog.codecentric.de/en/2017/04/xfs-possible-memory-allocation-deadlock-kmem_alloc/

Однако проблема не связана с фрагментацией, поскольку сообщенная фрагментация ниже 2% для файловой системы, в которую я пишу.

Итак, из-за ошибки XFS, описанной выше, я предполагаю, что файловому серверу не хватает памяти, поскольку он не может обработать количество запросов ввода-вывода, выданных данной задачей.

Помимо периодического сброса кеша (например, через cron), есть ли более постоянное решение этой проблемы?

Заранее спасибо за помощь.

Изменить: CentOS 7.2 на клиенте и сервере.

Изменить # 2: ядро ​​3.10.0-229.14.1.el7.x86_64 на клиенте и сервере.

Это связано с фрагментацией памяти и фрагментацией файловой системы, см. https://bugzilla.kernel.org/show_bug.cgi?id=73831

Вы должны проверить фрагментацию файловой системы с помощью xfs_db -r -c 'frag' <filesystem>' . Держать его не слишком полным (80% или меньше) и работать xfs_fsrна время тоже должно помочь.

Я считаю, что текущая версия CentOS 7 имеет ядро ​​3.10.0-693.2.2.el7 и новые инструменты пользовательского пространства XFS. Здесь любая причина вы не используете более современную ОС? Указанные вами версии относятся к 2015 году.