| Предыдущий | Следующий |
| kIOReturnNoMemory | kIOReturnIPCError |
kIOReturnNoResources
Нехватка более общего ресурса, чем ёмкость хранилища
kIOReturnNoResources сообщает о нехватке ресурса, а не обязательно свободного места на диске или памяти в куче процесса. До запуска операции семейству IOKit могут требоваться слоты команд, дескрипторы, DMA-отображения, элементы очереди, состояние контроллера, закреплённая память или другой ограниченный ресурс. Нехватка может быть временной, если завершится другая работа, но также может указывать на утечку, чрезмерную глубину очереди или неподдерживаемый размер нагрузки.
Полезно отличать этот статус от kIOReturnNoMemory и kIOReturnNoSpace. Первый указывает на выделение памяти, второй — на адресуемое пространство для данных. Здесь определить достигнутую границу ресурса можно только по контексту операции.
Что нужно собрать
- Запишите число параллельных операций ввода-вывода, размеры буферов, незавершённые команды и точную операцию, которая первой завершилась ошибкой.
- До увеличения глобальных лимитов проверьте, правильно ли обрабатываются и освобождаются завершённые запросы.
- Используйте ограниченные очереди и обратное давление, чтобы вызывающие стороны не создавали неограниченный спрос на ресурсы контроллера.
- Сравните небольшой последовательный запрос с неудачной нагрузкой, чтобы отличить жёсткий предел возможностей от истощения ресурсов.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.