Поведение кэша обратной записи RAID-контроллера

Поведение кэша обратной записи RAID-контроллера

Я пытаюсь понять, как кэш обратной записи на RAID-контроллере может продолжать приносить пользу, пока вы записываете огромный случайный набор данных.Позвольте мне сначала сказать, что я понимаю, как работает кэш с обратной записью.: ОС получает завершение ввода-вывода при записи, когда данные попадают в кэш контроллера, а не на более медленный базовый носитель, и затем контроллер записывает данные на носитель так быстро, как это возможно. Так что, если это так,Если вы очень быстро записываете данные, быстрее, чем их может записать резервный носитель, я бы ожидал, что кэш контроллера и выигрыш в производительности от отказа от обратной записи будут потеряны, и в итоге вы получите производительность, эквивалентную настройке со сквозной записью?

То, что я описал выше, это то, что я ожидал, но это не то, что я вижу. Сервер с кэшем обратной записи постоянно имеет как минимум в 4 раза более высокие IOPS и пропускную способность и поддерживает их; по сравнению с идентичным сервером, который я перевел в режим сквозной записи. Есть идеи, как объяснить такое поведение?

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

решение1

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

В меньшей степени кэш обратной записи может помочь ОС соответствовать размеру кластера во время записи. Например, если вы записываете 10000 байт за раз, а размер кластера составляет 8192 байта, кэширование не позволит ОС записать 1808 байт в частично заполненный кластер (что потребовало бы предварительного чтения кластера).

Связанный контент