我已经在Server上安装了机器学习服务,以便能够运行R脚本(从存储过程调用)。
现在有几个这样的存储过程,作为将日期填充到Power中的脚本的一部分。因为我们从Power服务刷新中运行这些存储过程,所以它们在运行时似乎是并行运行的,消耗了大量的CPU。这正在减缓其他(更关键)进程的服务器速度。在Task中,经常有多达10个RTerm.exe实例在调用刷新时同时运行。
当这些存储过程中的一个运行时,有时是一个实例,但通常是多个RTerm.exe实例开始在服务器上运行。
是否有办法限制ML服务/R,使其只能访问一部分CPU或可用资源,并且我们可以确保它消耗的资源不会超过规定的最大值?为了解决这一问题,人们还部署了其他战略吗?
发布于 2022-10-21 20:39:36
服务器管理一个RTerm.exe实例池,以处理多个请求,默认情况是在需要更多实例时,将该实例池增加5个(在执行第一个外部脚本时,将同时产生6个实例)。
这可以通过在PROCESS_POOL_SQLSATELLITE_GROWTH文件夹中的rlauncher.config中为MSSQL/Binn设置一个值,然后在Server配置管理器中重新启动Server启动板服务来更改。
就我的情况而言,由于内存分配问题,我们的脚本失败了。事实证明,这5个额外的实例占用了大部分默认内存预算(物理内存的20%),没有留下足够的相对简单的脚本来完成。设置PROCESS_POOL_SQLSATELLITE_GROWTH=1解决了这个问题。
从以下来源找到此信息:https://nielsberglund.com/2017/04/23/microsoft-sql-server-r-services---internals-iv/
https://stackoverflow.com/questions/59186680
复制相似问题