Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Дотюнился... Стран ности в iostat
On Fri, Nov 28, 2008 at 03:27:05PM +0300, Anton Yuzhaninov wrote:
> On 28.11.2008 14:26, Dmitry Morozovsky wrote:
> > Осторожно: при блоке больше чем 16к у фри из-за фрагментации buffer
> cache может
> >случится deadlock. :(
>
> А можно про это поподробнее?
Подробности там такие:
Дисковый буфер-кэш (Buff в top) работает с блоками по 16К.
Если есть файловая система с блоком 32/64К, то нужно 2/4 последовательных
блока. Если на файловую систему с блоком 16К идёт много записей, то
в один прекрасный момент буфер-кэш фрагментируется настолько, что
нельзя найти 2/4 последовательных свободных блока. Deadlock заключается
в том, что
1) записью грязных блоков (в том числе и 16К) занимается syncer,
2) а syncer в этот момент хочет выделить 2/4 последовательных блока
для записи 32/64К блока и ждёт в состоянии nbufkv.
Если бы syncer мог отложить этот блок на попозже и записал бы кучу грязных
16К блоков, то проблемы бы не было. Ещё вариант - держать специальный большой
буфер на такой случай.
--
Игорь Сысоев
http://sysoev.ru
|