我在具有64 GB RAM的Linux服务器上通过Rstudio Server运行h2o。当我初始化集群时,它表示总集群内存仅为9.78 GB。我尝试过使用max_mem_size参数但仍然只使用9.78 GB。
localH2O <<- h2o.init(ip = "localhost", port = 54321, nthreads = -1, max_mem_size = "25g")
H2O is not running yet, starting it now...
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
Connection successful!
R is connected to the H2O cluster:
H2O cluster uptime: 5 hours 10 minutes
H2O cluster version: 3.10.4.6
H2O cluster version age: 19 days
H2O cluster name: H2O_started_from_R_miweis_mxv543
H2O cluster total nodes: 1
H2O cluster total memory: 9.78 GB
H2O cluster total cores: 16
H2O cluster allowed cores: 16
H2O cluster healthy: TRUE
H2O Connection ip: localhost
H2O Connection port: 54321
H2O Connection proxy: NA
H2O Internal Security: FALSE
R Version: R version 3.3.3 (2017-03-06)
我在服务器上运行以下内容以确保可用内存量:
cat /proc/meminfo
MemTotal: 65806476 kB
编辑:
我更多地关注这个问题,看起来它是JVM中的默认设置。当我直接在Java中启动h2o时,我能够传递命令-Xmx32g
并确实增加了内存。然后,我可以连接到Rstudio中的那个h2o实例,并可以访问增加的内存。我想知道是否有办法在JVM中更改此默认值并允许更多内存,因此我不必首先从命令行启动h2o实例,然后从Rstudio服务器连接到它。
答案 0 :(得分:1)
h2o R包中的max_mem_size
参数功能正常,因此您可以使用它来启动您想要的任何大小的H2O群集 - 您不需要使用-Xmx
从命令行启动它。
您的情况似乎正在发生的事情是您正在连接位于localhost:54321
的现有H2O群集,该群集仅限于&#34; 10G&#34; (实际上,9.78 GB)。因此,当您从R运行h2o.init()
时,它将只连接到现有集群(具有固定内存),而不是使用您在max_mem_size
中指定的内存启动新的H2O集群,因此内存请求被忽略。
要修复,您应该执行以下操作之一:
localhost:54321
处杀死现有的H2O群集并从R重新启动并满足所需的内存要求,或答案 1 :(得分:1)
启动时h2o.init()
想要指定参数min_mem_size=
这迫使H2O使用至少那么多的内存。 max_mem_size=
可以防止H2O使用超过该数量的内存。
答案 2 :(得分:0)