kdb+ 32位,4GB限制的后果是什么?

kdb+ 32-bit, what are the consequences of the 4GB restriction?

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

q -p 5001

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

Since v3.1, peach can use multiple processes instead of threads, configured through the startup cmd line option -s with a negative integer, i.e. -s -N, e.g. -s -4. On startup, kdb+ will then try to connect to N processes on ports 20000 through 20000+N-1, and use of peach with >1 element will use those processes to execute the function given to peach.

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

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

那么 multiprocessing 到底是什么意思?我是否需要在不同端口(如桃子)上启动 N kdb+ 实例以获得 N x 4GB 内存应用程序,或者是 4GB限制只是对其他事物的限制?

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

编辑

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

那么kdb+的每个实例是否被认为是一个进程

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

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

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

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

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