У меня есть несколько заданий с интенсивным вводом-выводом, и для повышения производительности я просто установил два твердотельных накопителя на вычислительный сервер, один в качестве временной файловой системы, другой в качестве подкачки. По прошествии некоторого времени все мои процессы зависают в состоянии «D», не потребляют ресурсы ЦП, и система сообщает о простое 67% и ожидании 33%. Iostat показывает нет дисковая активность продолжается, а в остальном система реагирует, включая соответствующие файловые системы. Присоединение к процессам "strace" не дает результата.
Заглянув в / proc / (pid) / fd, я обнаружил, что все процессы используют (читают) один общий файл. Я не вижу причин, по которым это должно вызвать проблему, но я заменил файл, убил процессы и позволил всему продолжаться (т.е. будут запущены новые процессы). Посмотрим, застрянет ли что-то в новом файле, в другом файле или - в идеале - совсем нет :-)
Я также нашел пару таких в kern.log:
BUG: unable to handle kernel paging request at ffffeb8800096e5c
Много другой информации, но я не знаю, как ее расшифровать, за исключением того, что она относится к PID и имени одного из моих процессов.
Есть идеи, что здесь происходит или как это исправить? Это на Ubuntu 12.04 LTS, Dell-something box с контроллером диска RocketRaid и файловой системой btrfs.
Похоже, это может быть проблема с памятью. Загрузите memtest и проверьте свой баран.