Есть ли способ отслеживать дисковое пространство, освобожденное процессом?

Я думаю, что они почти одинаковы, но kpartx работает только с образами дисков, в то время как partx также позволяет отображать разделы внутри блочного устройства.

1
09.01.2017, 05:15
1 ответ

"Место на диске, освобожденное процессом" - не очень полезное понятие, потому что оно очень размыто. Если процесс A удаляет файл, который все еще открыт в процессе B, приписываете ли вы A освобождение пространства, когда он удаляет файл (в этот момент система фиксирует освобождение дискового пространства), или B, когда он закрывает файл (в этот момент пространство действительно освобождается)? Если файл имеет две жесткие ссылки и два процесса удаляют одну из них примерно в одно и то же время, имеет ли смысл засчитывать освободившееся место второму процессу, а не первому? Если процесс перезаписывает сегмент файла, считается ли это освобождением перезаписанных данных? (Изменится ли ваш ответ, если файловая система выполняет дедупликацию?) и т.д.

Вы можете выбрать определение и настроить код ядра на его отслеживание, но это будет несколько произвольный выбор и практическая польза будет ограниченной, поэтому такая функция не является общедоступной. Каждая функция имеет свою стоимость: время программиста на ее реализацию, время программиста на ее последующее сопровождение, риск ошибок, которые она вносит, потребление памяти и процессора...

Вы, вероятно, можете реализовать это (опять же, выбирая одно конкретное определение) для обычных сценариев, используя существующие функции отладки, такие как Systemtap в Linux.

2
27.01.2020, 23:34

Теги

Похожие вопросы