Назад | Перейти на главную страницу

Мониторинг доступа к файлам в Linux

Есть ли способ собрать статистику о блоках, к которым осуществляется доступ на диске?

У меня есть сценарий, в котором задача требует интенсивного использования как памяти, так и ввода-вывода, и мне нужно найти хороший баланс в отношении того, сколько доступной оперативной памяти я могу назначить процессу и сколько я должен оставить системе для создания ее I / O кеш для используемого блочного устройства.

Я подозреваю, что большая часть операций ввода-вывода, происходящих в настоящее время, связана с доступом к довольно небольшому подмножеству файлов (или частям больших файлов), и что производительность может быть оптимизирована путем увеличения ОЗУ, доступного для буферизации ввода-вывода.

В идеале я мог бы создать что-то вроде «тепловой карты», которая показывает мне, к каким частям файлов обращаются большую часть времени.

В настоящее время установка основана на CentOS 5 на экземпляре AWS / EC2 m1.large. Дисковые установки представляют собой либо эфемерные блочные устройства в конфигурации RAID0 (LVM), либо, альтернативно, одиночный (500 ГБ) EBS

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

Я не уверен, что ты полностью понимаешь как работают современные буферные кеши - вы примерно наполовину правы в том, что хотите ограничить объем ОЗУ, который использует ваш процесс (так что для буферного кеша «достаточно» доступно, но вы думаете об этом неправильно.

То, что вы просите, на самом деле не полезно для настройки буферного кеша - это МОЖЕТ быть полезно, если у вас есть один непрерывный диск (или массив, который отображается как один и ведет себя как один) и вы хотите оптимизировать макет диска. , но это попадает в Deep Filesystem Magic.
Вы можете прочитать статьи МакКьюсика по проектированию файловых систем (или потратьте 42 минуты и посмотрите это отличное видео), чтобы получить базовое представление о том, как файловая система уже пытается это оптимизировать для вас - файловые системы довольно хорошо справляются с размещением на диске.


С точки зрения оптимизации буферного кеша, вы хотите посмотреть на количество попаданий в кеш по сравнению с промахами (и, в частности, что вызывает промахи). Физическое расположение на диске не имеет значения - важно то, сколько раз вам нужно ударить по диску, чтобы получить то, что вы хотите, и достаточно ли велик ваш кеш, чтобы он не перемешивался постоянно (по сути, отрицая эффективность кеша).

Настройка, которая выполняется немного больше методом проб и ошибок, чем что-либо еще - крайне неэффективное практическое правило - оставлять в 2 раза больший размер вашего самого большого файла / блока данных для буферного кеша, но вам почти всегда лучше начать сильно искажен либо приложением, либо кешем и приспосабливается к максимальной производительности.

Если вы говорите о системе серверного класса, следует учитывать и другие переменные. Я понимаю, о чем вы просите, но в современных системах эти вещи были абстрагированы с помощью нескольких уровней кеширования и оптимизации интеллектуальных контроллеров RAID.

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

Что касается операций чтения, ОС выполняет разумную работу как автомат. Помогает наличие дополнительного кеша контроллера. Кроме того, вы можете использовать несколько приемов, которые помогут контролировать вашу подсистему виртуальной памяти. (видеть: Виртуальная память Toucher)

Также см: Очистить / очистить кешированную память

Но опять же, нам нужна подробная информация о вашей настройке, чтобы понять, как помочь.

Использовать iotop. Это именно то, что вам нужно.

Я проголосую за DSTAT (http://dag.wieers.com/home-made/dstat/). Взгляните на некоторые переключатели, такие как top-io, top-latency, top-mem и т. Д. Он не будет делать тепловую карту для вас или к каким частям диска осуществляется доступ, но это может помочь вам в правильное направление