Вызовы F_WRLCK занимают много времени в NFS
Я разделил NFS на 30 узлов кластера. Узлами являются Debian 5 и 6. Сервер NFS - OpenSolaris 2009. У нас хорошее оборудование и сеть Infiniband 20 Гбит.
На узлах кластера операции fs выполняются быстро, но не в том, что касается:
- остолоп
- Sqlite3
- R lib. Например
Rscript <(echo "library(GOstats)")
Все они застряли на несколько минут после следующих системных вызовов:
fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}
или жеfcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}
Что может быть причиной? Как диагностировать и исправить?
Будет ли исправление переключения сервера NFS на OpenIndiana oi_148?
3 ответа
Эти системные вызовы получают блокировку файла. Возможно, другой процесс в настоящее время имеет блокировку, и ваши застрявшие процессы ожидают снятия этой блокировки. Есть несколько советов по устранению неполадок (для более старой версии Solaris, но они все еще могут быть полезны) в главе 11 О'Рейли Управление NFS и NIS, 2-е издание.