Как Linux обрабатывает параллельный дисковый ввод-вывод?


12

Когда сервер Linux обслуживает много одновременных запросов на чтение разных файлов, он делает это:

  1. Искать файл_1, читать весь файл, затем искать файл_2, читать весь файл, затем искать файл_3 и т. Д. И т. Д.

  2. Искать в File_1, читать его часть (до значения readahead?), Затем искать в File_2, читать его часть, затем искать обратно в File_1, где он остановился, читать больше, затем искать File_3 и т. Д., и т.д

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

Ответы:


14

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

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

Что касается тюнинга. Если вы автор приложения, вы можете многое сделать. Вы можете выполнять большие последовательные операции ввода-вывода, когда это возможно, и использовать fsync () et.al. когда вы должны быть уверены, что данные на пластинах.

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


5

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.