我在SQLServer上安装了机器学习服务,以便能够运行R脚本(从存储过程调用)。
现在有几个这样的存储过程作为脚本的一部分,用于将日期填充到Power BI中。因为我们从Power BI服务刷新运行这些存储过程,所以它们看起来是并行运行的,并且在运行时消耗了大量CPU。这会降低其他(更关键的)进程的服务器速度。在任务管理器中,RTerm的示例通常多达10个。exe在调用刷新时同时运行。
当运行这些存储过程中的单个存储过程时,有时是一个示例,但通常是RTerm的多个示例。exe开始在服务器上运行。
是否有方法限制ML Services/R,使其只能访问一定比例的可用CPU或资源,并且我们可以确保它不会消耗超过规定最大值的资源?人们有没有其他策略来解决这个问题?
1条答案
按热度按时间zysjyyx41#
服务器管理RTerm池。exe示例,以便处理多个请求,默认情况下,当需要更多示例时,将池增加5个额外示例(导致在执行第一个外部脚本时一次启动6个示例)。
可以通过在
MSSQL/Binn
文件夹中的rlauncher.config
中设置PROCESS_POOL_SQLSATELLITE_GROWTH
的值,然后在SQL Server Configuration Manager中重新启动SQL Server启动板服务来更改此设置。在我的例子中,由于内存分配问题,脚本失败了。结果发现,这5个额外的示例本身占用了大部分默认内存预算(20%的物理内存),没有留下足够的内存来完成相对简单的脚本。设置
PROCESS_POOL_SQLSATELLITE_GROWTH=1
已解决此问题。从以下来源找到此信息:https://nielsberglund.com/2017/04/23/microsoft-sql-server-r-services---internals-iv/