pgvector.git / summary / log / commit / refs
commit 6738fa0bd7c9cf39f3f68cbdd4d2d861cf7fdc03
Author: Andrew Kane <andrew@ankane.org>
Date: Wed Dec 20 21:49:16 2023 +0000
Added HNSW_MEMORY flag to show memory usage - #384 [skip ci]
src/hnsw.h | 2 ++
src/hnswbuild.c | 12 ++++++++++++
2 files changed, 14 insertions(+)
diff --git a/src/hnsw.h b/src/hnsw.h
index 3497b959..862d7b7e 100644
--- a/src/hnsw.h
+++ b/src/hnsw.h
@@ -72,8 +72,10 @@
#if PG_VERSION_NUM >= 150000
#define RandomDouble() pg_prng_double(&pg_global_prng_state)
+#define SeedRandom(seed) pg_prng_seed(&pg_global_prng_state, seed)
#else
#define RandomDouble() (((double) random()) / MAX_RANDOM_VALUE)
+#define SeedRandom(seed) srandom(seed)
#endif
#if PG_VERSION_NUM < 130000
diff --git a/src/hnswbuild.c b/src/hnswbuild.c
index 2acb80ff..afe0fb1c 100644
--- a/src/hnswbuild.c
+++ b/src/hnswbuild.c
@@ -279,6 +279,14 @@ FreeElements(HnswBuildState * buildstate)
static void
FlushPages(HnswBuildState * buildstate)
{
+#ifdef HNSW_MEMORY
+#if PG_VERSION_NUM >= 130000
+ elog(INFO, "memory: %zu MB", MemoryContextMemAllocated(CurrentMemoryContext, false) / (1024 * 1024));
+#else
+ MemoryContextStats(CurrentMemoryContext);
+#endif
+#endif
+
CreateMetaPage(buildstate);
CreateElementPages(buildstate);
CreateNeighborPages(buildstate);
@@ -902,6 +910,10 @@ static void
BuildIndex(Relation heap, Relation index, IndexInfo *indexInfo,
HnswBuildState * buildstate, ForkNumber forkNum)
{
+#ifdef HNSW_MEMORY
+ SeedRandom(42);
+#endif
+
InitBuildState(buildstate, heap, index, indexInfo, forkNum);
if (buildstate->heap != NULL)
[parent: 9ab10aa674cc]