Как измерить чистое изменение используемого дискового пространства из-за активности данного процесса в Linux? - PullRequest
2 голосов
/ 04 февраля 2011

Я хотел бы отслеживать требования к дисковому пространству работающего процесса.В идеале я хочу иметь возможность указать на процесс и выяснить, какие изменения в используемом дисковом пространстве связаны с ним.Есть ли простой способ сделать это в Linux?(Я почти уверен, что это будет возможно, хотя, возможно, не очень легко сделать в Solaris с DTrace)

Ответы [ 3 ]

2 голосов
/ 06 февраля 2011

Вероятно, вам придется отследить его (или попросить сделать это за вас и проанализировать вывод), а затем попытаться выяснить, какой диск используется.

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

Довольно много вещей может занять место на диске, потому что большинство файловых систем Linux поддерживают «дыры».Я полагаю, вы могли бы также подсчитать дыры в целях учета.

Другая проблема состоит в том, чтобы знать, какие операции файловой системы освобождают дисковое пространство - например, открытие файла для записи может, в некоторых случаях, обрезать его.Это явно освобождает пространство.Аналогично, переименование файла может освободить место, если он переименован в существующий файл.

Другая проблема - это процессы, которые вызывают вспомогательные процессы для выполнения каких-либо задач - например, если myprog выполняет систему («rm -rf somedir»).

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

Удачного взлома:)

0 голосов
/ 06 февраля 2011

есть Dtrace для Linux доступен

http://librenix.com/?inode=13584

Ashitosh

0 голосов
/ 04 февраля 2011

Если вам известен PID процесса, который нужно отслеживать, вы найдете много информации об этом в /proc/<PID>.

Файл /proc/<PID>/io содержит статистику о байтах, прочитанных и записанных процессом, это должно быть то, что вы ищете.

Более того, в /proc/<PID>/fd/ вы найдете ссылки на всефайлы, открытые вашим процессом, чтобы вы могли следить за ними.

...