Я запускаю сервер postgres 8.4.5 на ядре linux 2.6.33.7 на массиве рейдов на 8 дисков с контроллером LSI.
Большинство таблиц имеют размер около 1 ГБ или меньше.
Я знаю, что XFS использует группы распределения (AG) для достижения параллелизма ввода-вывода.
Мой первый вопрос: означает ли это, что если две таблицы находятся в одной группе доступности, все запросы ввода-вывода ставятся в очередь к ним обоим, если какая-либо из них считывается / записывается?
Если да, то я предполагаю, что хотел бы распределить свои таблицы по группам распределения, правильно? Разве это не гарантирует, что несколько пользователей, запрашивающих разные таблицы, получат максимальную производительность?
Какой размер раздела в гигабайтах? Я обычно делю это на 4, чтобы определить количество групп распределения XFS. Я сталкивался с ситуациями, когда у меня была только одна группа распределения и возникали проблемы с восстановлением с ошибкой, указывающей на то, что не было другого AG, на который можно было бы ссылаться в процессе восстановления файла. В любом случае, я думаю, что общее правило - размер раздела / 4. Существует некоторый уровень параллелизма при выполнении операций ввода-вывода для нескольких групп распределения. Но я предполагаю, что отдача от этого числа уменьшается, поэтому любое значение между размером раздела / 2 и размером раздела / 4 является разумным.
Поэтому для раздела 200 ГБ с именем «partitionname» на / dev / sdb1 я бы, вероятно, использовал следующую последовательность команд mkfs.xfs.
mkfs.xfs -f -L /partitionname -d agcount=50 -l size=128m,version=2 /dev/sdb1
Также см: http://en.wikipedia.org/wiki/XFS#Allocation_groups
и http://everything2.com/index.pl?node_id=1479435 где отмечено:
At least one allocation group is needed per 4 gigs of space...