问题标签 [hoard]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
947 浏览

c++ - 囤积分配器不“工作”?

我试图囤积分配器来工作,但似乎没有。我有一个执行大量动态内存管理的基准应用程序。Hoard 和 glibc 内存管理器的执行时间是相同的。这让我怀疑我是否在做正确的事情。

我做的是...

我不应该链接到囤积分配器吗?什么路径(在 LD_PRELOAD 中)是否重要,或者我可以有任何路径吗?

我正在运行 Ubuntu 8.04 和 g++ 4.2.4

干杯


没有人知道任何 Linux 命令(例如 grep)来确定 Hoard 是否正确加载,以及是否使用了实际的分配器?

0 投票
1 回答
379 浏览

c - 静态链接 Hoard 内存分配器

有人知道如何将 libhoard 链接为 linux 中的静态库的文档吗?

0 投票
1 回答
401 浏览

c++ - 囤积 C++ 崩溃

我们正在尝试在我们的多线程应用程序中评估 Hoard,该应用程序可在 Windows 和 Mac OSX(Leopard、Snow Leopard)上运行。

我们使用 Boost、Curl、libJpeg 和 log4cplusplus 作为 3rd 方库。现在,我们将所有模块与 libhoard.dylib 链接,但让第 3 方库使用系统 malloc。

这会引起任何冲突吗?

我尝试通过在 info.plist DYLD_INSERT_LIBRARIES=libhoard.dylib 中设置(假设相当于 LD_PRELOAD)来使用整个应用程序,但在 malloc 跟踪中我没有看到囤积被拾起。

有没有其他方法可以链接它并使用,即使是第 3 方库也可以使用?请指教。

谢谢,拉贾。

0 投票
1 回答
201 浏览

c++ - 是否值得在 Linux 上为 nginx 或 haproxy 的多核服务器尝试不同的堆分配器

我正在做一些实验来找出我在 RHEL 或 Centos 上每秒 haproxy 和 nginx 请求的上限。

我在 nginx 中的部分设置使用 LuaJIT 形式的嵌入式 LUA。我的问题是这样的:

在使用HoardLockless等替代堆分配器构建后,是否有人对这些应用程序进行一些测试的有用性有任何经验或建议。

任何想法都感激不尽。戴夫。

0 投票
3 回答
684 浏览

c++ - C++ 内存分配器架构

我需要在 Linux 下为 C++ 编写 Hoard 分配器。虽然算法很简单,但我不明白,在哪里(以及如何)存储分配器数据(例如堆)

这就是我的看法:分配器不是一个进程,它是一组函数,任何应用程序都可以使用。每个应用程序都有自己的堆。

  1. 发生了什么,应用程序何时启动?
  2. 分配器如何发现堆已经创建?
  3. 分配器如何创建、存储和销毁(关闭应用程序时)堆?
  4. 当函数被调用时,如何找出它运行在哪个线程(或哪个处理器上)?
0 投票
0 回答
135 浏览

memory-management - 需要基本内存分配器信息 - Hoard 和 SLAB

最近我一直在阅读有关内存分配器的信息,例如 Hoard 和 SLAB。但是我没有得到一些东西:

一个。这些分配器是管理物理内存还是虚拟内存。{如果(你的答案是物理内存)请阅读点 b,否则,阅读点 c}

湾。如果他们管理物理内存,因为这两个分配器都使用每个 CPU 的数据结构,他们最终不会将同一物理页面的空间分配给不同的进程。例如,考虑 T1 在 CPU C 上启动并请求一个 int。在此之后,让 T1 被抢占,T2 开始执行,它还要求一个 int。由于我们的结构是每个 CPU 的,我们最终会不会同时满足来自同一物理页面的两个请求。

C。如果它们管理虚拟内存,那么为什么我们说所有数据结构都是每个 CPU 的,而不是我们应该说它们是每个进程的,因为在每次上下文切换时,我们都必须重新填充这些数据结构。

0 投票
1 回答
390 浏览

c - 分配大尺寸块时,囤积性能严重下降

我在“C”中编写了下面的示例程序,它是动态内存密集型的,并尝试对“glibc”默认分配器与 Hoard 分配器进行相同的基准测试(就所用时间而言)。

作为这个基准测试活动的结果,我得到了以下结果(块大小、默认分配器经过的时间、囤积的经过时间):

  1. '1K' '4.380s' '0.927s'
  2. '2k' '8.390s' '0.960s'
  3. '4k' '16.757s' '1.078s'
  4. '8k' '16.619s' '1.154s'
  5. '16k' '17.028s' '13m 6.463s'
  6. '32k' '17.755s' '5m 45.039s'

可以看出,Hoard 性能在块大小 >= 16K 时严重下降。是什么原因?我们可以说 Hoard 不适用于分配大块的应用程序吗?

0 投票
0 回答
46 浏览

c++ - 囤积腐败

当我启动与我编译的 libhoard.dll 链接的程序时,我在程序开始时收到一个堆损坏错误。堆栈跟踪指向 PatchMe() 方法,因此我附上了一张图片,以准确显示它在Stack Trace口吃的位置。奇怪的部分是,如果我按继续,则会处理异常并且程序继续工作。不确定这是否会导致我出现问题。有任何想法吗?谢谢

0 投票
1 回答
52 浏览

c++ - Hoard 中的 `bool c2s(int)` 是什么?

Hoard(内存分配器)的geometrysizeclass.cpp 的源代码中,有一个未定义的函数。bool c2s(int)

它是什么,它有什么作用?

我正在尝试将hoard编译为VS2019中的库,忽略Makefile。