Как ограничить postgresql использованием только n ядер процессора?

#postgresql

#postgresql

Вопрос:

Как мы можем ограничить postgresql использованием только n ядер процессора, а остальное оставить для других процессов? Например, у меня 16 ядер, и я хочу выделить 8 ядер для postgresql, а остальные 8 ядер зарезервировать для других сервисов.

Комментарии:

1. Возможно, вы захотите попробовать pg_cgroups

2. Может быть, лучше спросить на дочернем сайте, DBA.StackExchange.com . На самом деле это не проблема программирования.

3. @BasilBourque, вы правы, но в stackoverflow есть много других вопросов о postgres, и я подумал, что можно задать вопрос здесь.

4. Да, есть некоторое совпадение между DBA.StackExchange.com и StackOverflow.com … когда задействовано некоторое программирование. Но в вашем вопросе вообще нет проблем с программированием . Администрирование серверов здесь не по теме и относится к дочернему сайту serverfault.com вместо этого. Администрирование сетей здесь не по теме и относится к дочернему сайту networkengineering.stackexchange.com . Администрирование баз данных здесь не по теме и относится к dba.stackexchange.com .

Ответ №1:

В настоящее время невозможно ограничить сервер PostgreSQL подмножеством доступных ядер процессора, поскольку для этого нет конфигурации или механизма. Однако можно использовать NUMA для запуска Postgres с ограниченным количеством доступных ядер процессора.

Короче говоря, если ваша операционная система позволяет это, вы можете сделать что-то вроде:

 numactl --hardware
NUMA0_CPUS=0-7”
export CPUSET_HOME=$(mount | grep cpuset)
sudo mkdir $CPUSET_HOME/postgres
sudo /bin/bash -c "echo $NUMA0_CPUS >$CPUSET_HOME/postgres/cpus"
sudo /bin/bash -c "echo '0' >$CPUSET_HOME/postgres/mems"
sudo chown postgres $CPUSET_HOME/postgres/tasks
sudo su - $PGSERVERUSER
export CPUSET_HOME="<path where cpusets are mounted>"
echo $ >$CPUSET_HOME/postgres/tasks
pg_ctl start <usual start parameters>
 

Комментарии:

1. спасибо за ваш ответ, но я думаю, что pg_cgroups более прост, и я, вероятно, пойду по этому пути.