On Thursday 07 March 2013 15:02:49 arty777 wrote: > Валентин Бартенев Wrote: > ------------------------------------------------------- > > > On Thursday 07 March 2013 13:27:05 arty777 wrote: > > > Андрей Василишин Wrote: > > > ------------------------------------------------------- > > > > > > > Вам говорят что-нибудь слова block size, sector size? > > > > > > > > Опять же из мана: > > > > Поскольку directio в Linux можно использовать только для чтения > > > > блоков, > > > > выравненных на границу 512 байт (или 4К для XFS), то невыравненный > > > > конец > > > > файла будет читаться блокированно. То же относится к запросам с > > > > указанием диапазона запрашиваемых байт (byte-range requests) и к > > > > запросам FLV не с начала файла: чтение невыравненных начала и > > > > конца > > > > > > ответа будет блокирующимся. Явно выключать sendfile не нужно, так > > > > как > > > > > > при использовании directio он выключается автоматически. > > > > > > У меня линукс , и ext4 > > > > > > tune2fs -l /dev/sdm1 > > > Block size: 4096 > > > Fragment size: 4096 > > > > > > Получается что надо ставить > > > directio_alignment 4K; > > > > > > а не 512 как написано в мане :) Верно? > > > > Нет, не верно. > > > > > Если да, то может стоить ман поправить , а то все у кого линукс и > > > > не XFS > > > > > будут ставить 512 , хотя по умолчанию блок сайз у ext4 4К > > > > Размер блоков на ext4 не имеет значения для O_DIRECT. В мане написано > > верно. > > Пишите понятнее. Аргументируйте. Размер блоков не имеет значения , а что > имеет:?
Имеет значение особенности реализации поддержки O_DIRECT в Linux-ядре. > Я поставил directio_alignment 4K; производительност ькаждого отдельного > диска увеличалась существенно , +25-30% . Как это объяснить? > Вы выключили O_DIRECT для всех чтений не выравненных на 4k, т.е. для некоторых, которых он ранее работал - более не включается вообще. Это такой очень странный способ повлиять на значение директивы directio. Зачем вы её вообще включили, если вам без неё лучше? Неправильно указанный directio_alignment (скажем 512 там, где нужно 4k) приведет к ошибкам в error_log вида: [crit] pread() failed (22: Invalid argument) while sending response to client и невозможности nginx обработать запрос. -- Валентин Бартенев http://nginx.org/en/donation.html _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru