Это простая проблема, но впервые мне когда-либо пришлось ее исправлять: найти, какие именно файлы / иноды являются объектами большинства операций ввода-вывода. Я бы хотел получить общий обзор системы, но если мне нужно дать PID или TID, я согласен с этим.
Я хотел бы пойти без необходимости strace
в программе, которая появляется в iotop
. Предпочтительно использовать инструмент в том же духе, что и инструмент, iotop
который разбит по файлам. Я могу использовать, lsof
чтобы увидеть, какие файлы почтальон открыл, но это не указывает, какой файл получает ввод-вывод или сколько.
Я видел в другом месте, где это было предложено использовать, auditd
но я бы предпочел не делать этого, так как это поместит информацию в наши файлы аудита, которые мы используем для других целей, и это похоже на проблему, которую я должен быть в состоянии исследовать этим способом.
Конкретная проблема, с которой я столкнулся сейчас, заключается в слишком быстром заполнении снимков LVM. С тех пор я решил проблему, но хотел бы иметь возможность исправить ее таким образом, вместо того, чтобы просто использовать ls
все дескрипторы открытых файлов, /proc/<pid>/fd
чтобы увидеть, какой из них растет быстрее всего.
источник
fatrace
более старый, что-то вроде сценария, который я написал, должно были предложены, так как он более широко используется.Ответы:
В этом вопросе есть несколько аспектов, которые были частично решены с помощью других инструментов, но, похоже, нет единого инструмента, который обеспечивал бы все функции, которые вы ищете.
iotop
Этот инструмент показывает, какие процессы потребляют больше всего ввода / вывода. Но ему не хватает параметров для отображения конкретных имен файлов.
По умолчанию он выполняет то же, что и обычные
top
процессы, борющиеся за время процессора, за исключением дискового ввода-вывода. Вы можете уговорить его, чтобы дать вам 30 000 футов, используя-a
переключатель, чтобы он отображал накопление по процессам с течением времени.я * инструменты (inotify, iwatch и т. д.)
Эти инструменты обеспечивают доступ к событиям доступа к файлам, однако они должны быть специально нацелены на определенные каталоги или файлы. Таким образом, они не так полезны при попытке отследить мошеннический доступ к файлу неизвестным процессом, при отладке проблем с производительностью.
Также
inotify
фреймворк не предоставляет никаких подробностей о файлах, к которым осуществляется доступ. Только тип доступа, поэтому никакая информация об объеме данных, перемещаемых назад и вперед, не доступна, используя эти инструменты.IOSTAT
Показывает общую производительность (чтение и запись) в зависимости от доступа к данному устройству (жесткому диску) или разделу. Но не дает никакого представления о том, какие файлы генерируют эти обращения.
blktrace
Эта опция слишком низкого уровня. Ему не хватает представления о том, какие файлы и / или узлы доступны, просто необработанные номера блоков.
fatrace
Это новое дополнение к ядру Linux, и оно приветствуется, поэтому оно доступно только в новых дистрибутивах, таких как Ubuntu 12.10. Моей системе Fedora 14 не хватало 8-).
Он предоставляет тот же доступ, через который вы можете получить доступ
inotify
без указания целевого каталога и / или файлов.Выше показан идентификатор процесса, который осуществляет доступ к файлу и к какому файлу он обращается, но он не дает общего использования полосы пропускания, поэтому каждый доступ неотличим от любого другого доступа.
Так что делать?
Этот
fatrace
параметр наиболее перспективен для ПОЛНОСТЬЮ предоставления инструмента, который может показать совокупное использование дискового ввода-вывода в зависимости от файлов, к которым осуществляется доступ, а не от процессов, осуществляющих доступ.Ссылки
источник
fatrace
а не разработали ее, но многое пропустили. Я действительно ценю то, как вы делаете все возможное, чтобы люди понимали полную картину и хотели, чтобы я мог сделать больше, чем просто повысить голосование и дать щедрость.yum
, по какой-то причине потянуло в библиотеки python3. Я сделалfile
на нем, и похоже, что это исполняемый файл ELF.ldd
не показывает ссылки наpython
и не сделалstrings
. Любая идея, почему это беспокоило Python3?iotop
иiostat
звонки. Кроме того, я разобрался с Python, похоже, (по крайней мере, на Fedora 18) естьpython
сценарий «отчет об использовании мощности», поэтомуyum
он просто отвечал на тот факт, чтоpython
в зависимостях RPM. Так что эта конкретная тайна разгадана.Я еще не получил ответ, но я написал этот сценарий (в конце), и он, кажется, делает то, что я хочу. Я не проверял это на других системах, и это специфично для Linux.
По сути, он просто оборачивается
strace
на 30 секунд, фильтруя системные вызовы, связанные с файлами, и пытается удалить имя файла. Он подсчитывает количество вхождений этого файла вstrace
и представляет пользователю разбитое на страницы резюме. Это не идеально, но число системных вызовов для конкретного файла может иметь слабую корреляцию с тем, сколько операций ввода / вывода он выполняет.Я не проверил его полностью, но если он не работает «из коробки», он должен дать людям возможность начать. Если это станет более понятным, может быть целесообразно переписать это на язык более высокого уровня, такой как python .
Если в течение недели я не получу ответ от менее доморощенного способа сделать это (даже если это еще один инструмент, который просто подсчитывает количество операций ввода-вывода определенного процесса), я приму это как свой ответ для потомков.
Автор сценария:
источник
Вы можете использовать iwatch Используя iWatch
iWatch очень прост в использовании, предположим, что вы хотите наблюдать за изменениями в файловой системе / etc, вам просто нужно запустить ее в консоли
и iwatch сообщит вам, если что-то изменится в этом каталоге. И если вы хотите получать уведомления по электронной почте:
В этом случае администратор получит уведомление по электронной почте (возможно, вы можете использовать свою учетную запись шлюза sms, поэтому вы будете сразу же оповещены в любое время и в любом месте). И если вы хотите отслеживать множество разностных каталогов, вы можете использовать файл конфигурации. Этот файл конфигурации представляет собой XML-файл с понятной структурой.
источник
inotify
это правильно? Я не решался использовать что-либо на основе,inotify
так как вы должны указать ему пути (что, по сути, я и ищу), и я беспокоился о том, сколько будет накладных расходов, если я просто сделаю все под ним./
Может ли этот фильтр фильтровать по PID? Я мог бы терпеть временную медлительность, если будет достаточно легко определить, какая программа это делает. На сайте также нет примера вывода команды.