gpt4 book ai didi

c - 如何在服务器中支持 1 TB 的内存?

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:47 25 4
gpt4 key购买 nike

我的 C 语言 (linux) 应用程序至少需要 1 TB 的内存。8 TB 将是最好的。我怎样才能在服务器中支持这样的内存容量?一种方法是构建我自己的 PCI 卡并放入 128 GB DDR4 模块,这是目前市场上最大的可用模块。但是我将不得不重写所有的 malloc() 调用和数组变量的所有寻址。这可能以透明的方式在 C 中完成吗?我能想到的唯一方法是仅将 PCI-express 分配的内存用于数组并访问它们,我将不得不以这种方式重写所有函数:

put(huge_array,index,&data); 
get(huge_array,index,&data);

就像在 C++ get() 和 put() 方法中一样。但我的应用不是 C++,而是 C。

我还有什么其他选择,不会花费我很多钱和我的衬衫?

最佳答案

Is this possible to do in C in a transparent way?

是的,是的。在 Linux 中有一个很好的技巧,我相信它是从 Solaris 继承的,您可以在其中编写自己的分配器,将其放入单独的共享库中并执行

> LD_PRELOAD=mylib.so ./myapp

另一种可能的解决方案是使用 malloc Hook ,[检查此处] ( http://www.gnu.org/savannah-checkouts/gnu/libc/manual/html_node/Hooks-for-Malloc.html ),但此解决方案特定于 Linux/GLIBC

更新

看看Overriding 'malloc' using the LD_PRELOAD mechanism

关于c - 如何在服务器中支持 1 TB 的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35375679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com