【问题标题】:kdb+ 32-bit, what are the consequences of the 4GB restriction?kdb+ 32位,4GB限制的后果是什么?
【发布时间】:2015-01-15 15:45:58
【问题描述】:

我正在尝试kdb+,我发现与程序通信的最常见方式是在端口 5001 上打开一个套接字,如下所示:

q -p 5001

现在 kdb+ 具有内置的多线程功能,称为 peach。根据他们的文档,从 v3.1 版本开始,peach 将自动:

从 v3.1 开始,peach 可以使用多个进程而不是线程, 通过启动 cmd 行选项 -s 配置为负 整数,即 -s -N,例如-s -4。在启动时,kdb+ 将尝试 连接到 端口 20000 到 20000+N-1 上的 N 个进程,并使用 peach 与 >1 元素将使用这些进程来执行功能 给桃子。

我想知道,我也可以手动执行此操作吗?

我目前正在运行 32 位版本的 kdb+(每个进程最多 4GB 内存),根据this post,您可以通过使用多处理系统来解决 4GB 限制。

那么多处理究竟是什么意思呢?我是否需要在不同的端口(如 peach)上启动 N 个 kdb+ 实例以获得 N x 4GB 内存应用程序,或者 4GB 限制仅仅是对某些东西的限制别的?

那么这个 4GB 到底有什么限制?我需要打开多个端口吗?

编辑

This website似乎确认了,对于多进程和进程间通信,我需要在不同的地址上打开多个端口。

那么 kdb+ 的每个 instance 是否都被视为一个进程

【问题讨论】:

    标签: database-connection port 32bit-64bit kdb


    【解决方案1】:

    没错,一个kdb+实例本身就是一个完整的进程,端口号是你自己在命令行设置的。

    你不能在多个手柄上做桃子:

    handles:hopen each someList;
    {x"do some work"} peach handles
    

    您将获得noupdate,因此您似乎无法手动执行此操作。 hopen 上有一个握手,所以即使在该端口范围上运行其他进程,kdb 也会知道哪些是 kdb(我想它会在 hopen 上捕获一个错误......但我从未尝试过)

    【讨论】:

    • 完美地解释了它。谢谢!
    • 只是出于好奇:您是否知道 4GB 限制的来源?是强加的限制还是与 32 位进程有关?
    • 这是因为它是 32 位的二进制文件。如果你想要 64 位,它不再是免费的。
    • 我知道,但是是不是因为 因为它是 32 位的,所以有 4GB 的限制,或者这是 kx 对免费版本的强加限制?跨度>
    • 这不是强加的限制(通过 kx)。它只能寻址 4GB,因为它是 32 位二进制。
    【解决方案2】:

    真正的限制是 1GB RAM 用于变量和表。不是 4GB。

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 2010-11-12
      • 1970-01-01
      • 2014-11-07
      • 2017-02-27
      相关资源
      最近更新 更多