1

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

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

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

1 ответ1

1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .