LINUX.ORG.RU

Закавыка с доступом к диску при определенных условиях и нагрузке


0

0

Такая вот ситуевина:

Имеется некий SCSI диск подсоединенный к процессору, с каким то количеством процессов, пишущих на диск с real-time огрничениями (данных много, идут они непрерывным потоком и записывать их надо быстро чтобы они не были затерты последующими). Закавыка заключается в том что иногда с диска этого, на который идет запись, надо и считать информацию, иногда нескольким пользовтелям одновременно. Поскольку в приложении, которое пишет на диск задуман принцип write before read, при пиковой нагрузке время ожидания прочитанной записи с диска иногда может быть очень большим, практически ничем не ограниченным. Вопрос: Может меня кто нибудь ткнуть носом в какую-либо документацию или поделится собственным опытом как пытались решить ситуацию с резким ухудшением времени реакции на запрос на чтение в описанной ситуации? Если я что то не очень ясно обьяснил/упустил спрашивайте -- постараюсь ответить.

Данные пишутся в файлы на файловой системе? Тогда они должны быть в кэше ФС, и прочесть их будет легко. Запись в RT -- это режим sync? Тогда монтируйте ФС с noatime, чтобы чтения не вызывали лишних обращений к диску.

Если я догадался неверно, опишите ситуацию подробнее.

Deleted
()
Ответ на: комментарий от Deleted

Как я понимаю ситуацию даннные пишутся в рудимантарную файловую систему (не ext2 и ext3, как я понимаю из последующих комментариев Вы имеено их имеете ввиду) производителя (деталей реализации я, к сожалению, не знаю). Я не думаю что кэш какой то из широко известных линуксовых файловых систем спасет. Данных действительно очень много и не думаю что в кэше они задерживаются надолго. Доступ далеко не всегда осуществляется к только что записанным данным. Да, запись осуществляется в режиме sync на сегодняшний день. access time туда или сюда, приятная конечно штука, но скорее косметической натуры. Сейчас я пытаюсь понять вообще как имеет смысл описать требования и насколько они выполнимы. Интересны всякие статьи и доклады по подобным и смежным темам чтобы понять что можно вообще сделать при описанных условиях.

pustota1
() автор топика
Ответ на: комментарий от pustota1

Т.е. требуется разрулить ввод-вывод с приоритетом вывода? Это задача управления вводом/выводом на диск. Этим в Linux занимается I/O scheduler. Ныне с ядром идут три его разновидности, можно выбирать при компиляции.

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

Deleted
()

Кстати, для улучшения среднего времени доступа можно просто распараллелить дело на несоклько дисков. Тогда во многих случаях запись будет идти на один диск, а чтение -- с другого. Минимум ожидания. Но максимальное время ожидания (если и то, и другое попадёт на один диск) не улучшается.

Deleted
()
Ответ на: комментарий от Deleted

Уже распаралелено. Проблема однако в том что запрашиваются данные по какому то заданному образцу и вполне может так случиться что самые интересные данные для пользователя как раз и находятся там где их больше всего записывается ( в конце концов пользователь часто и хочет знать, а почему вдруг пошел такой резкий всплеск нельзя ли псомотреть что там такое происходит, так что worst case даже с распаралеливанием случается увы довольно часто)

pustota1
() автор топика
Ответ на: комментарий от pustota1

Помню только, что это была толстая переводная книга 70-х или 80-х годов издания. Почему-то она стойко ассоциируется у меня в памяти с книгой об очередях и сетях Дж. Мартина, изданной в СССР году в 1971 (AFAIR). То ли были изданы в одной серии, то ли что-то такое...

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.