有没有办法通过其配置文件为PostgreSQL进程设置CPU亲和力?

时间:2019-01-31 16:45:15

标签: postgresql window affinity

我在Windows OS(系统:i5第2代)上将PostgreSQL 9.5和Java 8应用程序一起使用。我注意到当我的应用程序执行时,有几个PostgreSQL进程/子进程是动态创建/删除的。

这些PostgreSQL进程几乎使用了所有CPU(> 95%),这是由于系统上安装的其他应用程序出现了问题。

我最近开始了解CPU亲和力。目前,我正在执行PowerShell脚本(在Java应用程序之外),该脚本会定期检查并为执行中的所有PostgreSQL进程设置所需的cpu亲和力值。

我正在寻找一种无需执行外部脚本和/或需要一次性配置的方法。

PostgreSQL 9.5是否支持一种配置,通过该配置我们可以设置PostgreSQL进程使用的最大CPU内核?

我正在寻找解决方案,但找不到任何解决方法。

1 个答案:

答案 0 :(得分:1)

无法在PostgreSQL配置中进行设置。

但是您可以使用以下命令从cmd.exe启动PostgreSQL服务器:

start /affinity 3 C:\path\to\postgresql.exe C:\path\to\data\directory

这将允许PostgreSQL仅在twp个“第一”内核上运行。

核心编号为1、2、4、8、16,依此类推,您使用希望PostgreSQL运行的核心总和作为/affinity的参数。例如,如果只希望它在第三核和第四核上运行,则可以使用/affinity 12

这应该可行,因为Microsoft documentation说:

  

任何子进程或新实例化的本地进程都将继承进程亲和力。